profiling your boot

July 8, 2012

Как-то недавно выпиливая очередной патч для btrfs я наткнулся на сообщение одного сэра о проблеме, которую я только-только пофиксил :]

Меня заинтересовала его картинка и я решил запилить себе такую-же. Это оказалось не только красиво, но и познавательно:

Как всегда, всё просто как грабли:

emerge app-benchmarks/bootchart2

Для более детальной статистики emerge попросит включить в ядре всякие счётчики, трейсеры и проберы для более детальной инфы. В первый раз можно не париться.

Для grub добавляюм строку с init=/sbin/bootchartd:

title Gentoo Linux
    root (hd0,0)
    kernel /boot/vmlinuz root=/dev/sda2 init=/sbin/bootchartd

Для grub2:

menuentry 'Gentoo Linux' {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    linux /boot/vmlinuz root=/dev/sda2 init=/sbin/bootchartd
}

Перезагружаемся и получаем лог загрузки в /var/log/bootchart.tgz.

Вся статистика собирается в tmpfs и сбрасывается по завершению указанного процесса в /etc/bootchartd.conf:

# The processes we have to wait for
EXIT_PROC="agetty mgetty mingetty"

Можно что-нибудь более высокоуровневое впилить, если хочется посмотреть на загрузку KDE/GNOME частей.

После загрузки можно сгенерить красивый график. Мы сгенерим аж 2 из них:

$ pybootchartgui && mv bootchart.png bootchart-default.png
$ pybootchartgui --show-all && mv bootchart.png bootchart-all.png
$ pybootchartgui -i # а тут можно руками потыкать в gui приложении

Это результат для моей системы (Осторожно! они здоровенные):

По картинкам хорошо видно, что:

Have fun! :]