Revision [2126]
This is an old revision of Blog20080821BootChart made by BenoitAudouard on 2008-08-26 11:53:04.
- provide good looking pictures (SVG iirc)
- maybe identify why the wake of suspend does not currently work on HP compaq nc6400 (I do not know if bootchart is still active at wake up ?), see UpgradeCooker2009 too
- find some needed (?) optimizations
- identifiy why there are at least 25 seconds "lost" at boot, what is making start_udev then udevsettle stall ?
Playing with bootchart to enhance / visualize boot time
Check http://wiki.eagle-usb.org/wakka.php?wiki=ImproveBootTime- http://www.bootchart.org/ (and http://bootchart.sourceforge.net/)
- http://wiki.mandriva.com/en/How_to_Profile_your_Boot_Time
- http://www.gnome.org/~lcolitti/gnome-startup/analysis/
- (shows that GNOME is mostly I/O bound, does not help that much to identify which process are in a timeout loop, waiting)
The results
On my HP/Compaq nc6400 laptop with cooker 2009.0 i586- approximate boot time and events, from my wristwatch (image in SVG) :
- 1mn10 : end of progress bar
- 1mn20 : graphical blue blank screen, with mouse pointer
- 2mn : gnome splash screen appears
- 2mn20 splashscreen disappears, desktop available
- hmmm I may have to patch bootchart to continue till gnome is loaded (only 70 seconds in the generated graphics)
- first 20 seconds for initial modprobes, ending with sane-find-scanner, then no CPU at all (waiting for timeout ?)
- at 47 seconds, end of start_udev then udevsettle, some CPU with following launches
- at 47 seconds rc.modules + late modprobe
- at 57 seconds, begin of rc (launching services and some remaining modprobes like alsa ?)
- at 70 seconds end of boot
- "seems" that 25 seconds are wasted ? is there a timeout somewhere ?
- todo : patch bootchart to go till gnome splashscreen for further optimization
How to
- urpmi bootchart-logger bootchart bootchart-javadoc # installs bootchart-logger-0.9-5mdv2009.0 bootchart-0.9-5mdv2009.0 bootchart-javadoc-0.9-5mdv2009.0
As told in /usr/share/doc/bootchart/INSTALL and /usr/share/doc/bootchart/README here the few steps to achieve
- grub modification, just copy/paste the linux entry in /boot/grub/menu.lst adding an appropriate title and init=/sbin/bootchartd
kernel (hd0,4)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=c3fd9f4d-55c6-4f2e-9fe7-e2dcb9814d9e resume=/dev/sda7 splash=silent vga=791 init=/sbin/bootchartd
initrd (hd0,4)/boot/initrd.img
- The boot process is modified to start the boot logger (/sbin/bootchartd) instead of /sbin/init. The boot logger will run in background and collect
(tmpfs). Once the boot process completes (denoted by the existence of specific processes), the log files are packaged to /var/log/bootchart.tgz.
- check /var/log/bootchart.tgz is available after booting, then type bootchart (which is a simple script calling the java -jar bootchart.jar with the appropriate java machine installed,
- AFAIC : java-1.6.0-openjdk-1.6.0.0-0.16.b11.4mdv2009.0 java-1.6.0-openjdk-devel-1.6.0.0-0.16.b11.4mdv2009.0 java-1.6.0-sun-1.6.0.06-2mdv2009.0 java-1.6.0-sun-alsa-1.6.0.06-2mdv2009.0 java-1.6.0-sun-fonts-1.6.0.06-2mdv2009.0 java-1.6.0-sun-jdbc-1.6.0.06-2mdv2009.0 java-1.6.0-sun-plugin-1.6.0.06-2mdv2009.0
- bootchart then bootchart -f svg to generate both bootchart.png + bootchart.svgz (smaller)
CategoryCookerDev CategoryBlogCooker