This script is run instead of init during the boot process after the kernel is loaded and measures the time during this process. With the aid of an script in the project's Git repository, it generates nice charts which show when each daemon started and stopped.
You can install app-benchmarks/bootchart2 with the following command:
emerge --ask app-benchmarks/bootchart2
Then add the daemon to the default runlevel. This is needed to stop the bootchart process and generate the image:
rc-update add bootchart2 default
USE flags for app-benchmarks/bootchart2 Performance analysis and visualization of the system boot process
To get more verbose information:
General setup ---> CPU/Task time and stats accounting --> -*- Export task/process statistics through netlink (EXPERIMENTAL) Device Drivers ---> <*> Connector - unified userspace <-> kernelspace linker ---> [*] Report process events to userspace
How to enable bootchart2 during boot and access the generated charts.
- For any GRUB based bootloader, the kernel commandline can be changed during boot by pressing e in the boot menu, then edit the kernel commandline and press F10 to boot with changed parameters. The following options should be added:
- 'initcall_debug' - append timing data to each initcall
- 'printk.time=y' - append timing data to each message during initialization
- 'init=/sbin/bootchartd' - replace the default command for initialization with /sbin/bootchartd to start our benchmark
to use genkernel, replace init= with real_init=
- To change the entry static for GRUB2 (bootchart on every boot):
In GRUB2 the parameters can be added to the variable GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub.
linux initcall_debug printk.time=y init=/sbin/bootchartd
grub-mkconfig -o /boot/grub/grub.cfg
Analyzing the output
The values are stored in /var/log/bootchart.tgz as a compressed tarball.
header dmesg cmdline2.log paternity.log proc_cpuinfo.log proc_diskstats.log proc_meminfo.log proc_stat.log taskstats.log
A script that generates an easier-to-analyze PDF or PNG from this tarball can be found on the project's homepage, by cloning the git repository, and then running
make pybootchartgui/main.py and
./pybootchartgui.py. The script requires dev-python/pycairo.