[original file is memo_ja-bootchart.txt]
[translated by ikoma]
CELF Technical Jamboree #18
Dec. 21, 2007
============================================================
CELF Technical Jamboree #18
06. Evaluation and Enhancement of Bootchart
============================================================
Evaluation and Enhancement of Bootchart
by Keisuke Yasui, Toshiba
* What is bootchart
- Generates graphs of processes and I/O load at boot
- Executes bootchartd script instead of /sbin/init
* Behavior analysis of bootchart
- Issues
- Heavy
- Takes 20 sec (5 sec in normal case)
- Does not work with ash in busybox (no problem with bash)
- Sparse sampling (200ms)
- Higher sampling rate would make further heavier
- Not easy to specify measurement interval
- Up to invocation of getty
- Up to receiving SIGUSER1
- Not compatible with realtime priority process
- 200ms sampling becomes almost 300ms; 1sec
- Heavy
* Enhancement
- Reimplemented bootcartd in C
5 sec -> 6sec with 50ms sampling (load reduced considerably)
- Executes with highest realtime priority
- Starts in background at head of rcS
- Uses clock_gettime system call to acquire time
- /proc/uptime was frequently called in original version
- No influence even if time modifed with settimeofday()
- /proc/uptime was frequently called in original version
- Better graph
- Grids were too coarse with 5 sec interval; fixed to 1 sec
- Coloring CPU usage
- To use to tune so that heavy load work to be executed in part with light load
- Only disks /dev/hd? and /dev/sd? were supported; analyzing software in Java modified to visualize others
* Remaining Issues
- To reduce load further
- Sampling intervals are not even
- Deviates about 30ms as bootchart latency
- This should be below 100ms[??]
- Deviates about 30ms as bootchart latency
* Q&A
- There exists bootchart.perl, which generates svg; no Java knowledge required
- Java version works even on windows; convenient in some cases
- One of the headache is open/close of processes
- Reimplementing in C was worthwhile
