Parę dni temu pisałem jak pozbyć się niezbyt fortunnych obrazków pokazywanych w trakcie startu Ubuntu, dziś - w ramach uzupełnienia - wspomnę jak można zyskać rozeznanie co się właściwie działo w trakcie startu oraz co tam tyle trwało. W miłej w formie obrazkowej.
Bootchart
Program nazywa się bootchart, uruchamia we wczesnej fazie rozruchu
systemu (jeszcze w fazie initramfs
), rejestruje przebieg startu
(działające procesy, obciążenie itp), tworzy tekstowe logi z
informacjami o uruchomionych procesach i obciążeniu systemu a
następnie generuje na ich podstawie graficzny raport (plik PNG) nieco
przypominający wykres Gantta.

Wkleiłem tu tylko lewy górny narożnik wygenerowanego obrazka, całość
w moim wypadku ma wymiary ok. 3000x8000 pikseli i najchętniej oglądam
ją przy pomocy programiku display
z pakietu ImageMagick (który wyświetla pomocniczą
mapkę obrazka). Jeszcze może fragment ze środkowej części
(nieco przeskalowany by zmieścić ciut więcej procesów):

Cały obrazek (ok. 1MB) można pobrać stąd.
Interpretacja jest dość prosta: na osi od lewej do prawej mamy czas od uruchomienia, na początku raportu wykres obciążenia CPU oraz dysku a w głównej części informacje od kiedy do kiedy działały poszczególne procesy. Należy to interpretować z pewną dozą rozsądku - czasami program działa długo, bo na coś czeka albo ponieważ monitoruje inne procesy - ale wizualizacja jest zaskakująco czytelna.
Instalacja
Instalacja (na Debianie i Ubuntu) sprowadza się do zainstalowania pakietów
bootchart
oraz pybootchartgui
:
$ sudo apt-get install bootchart pybootchartgui
(ten pierwszy odpowiada za zbieranie danych, ten drugi za malowanie obrazka).
Źródła są na stronach bootchart oraz pybootchartgui.
Instalacja bootchart powinna spowodować przegenerowanie initramfs (dzięki temu program będzie monitorował także wczesne fazy rozruchu z operacjami takimi jak montowanie systemów plików czy aktywacja macierzy).
Używanie
Używanie sprowadza się do ... restartu komputera i zajrzenia do
katalogu /var/log/bootchart
, gdzie są odkładane wyniki działania
programu. Po kilku rebootach może to wyglądać np. tak:
$ ls -al /var/log/bootchart total 49760 drwxr-xr-x 2 root root 4096 2010-05-16 19:22 . drwxr-xr-x 23 root root 8192 2010-05-16 19:20 .. -rw-r--r-- 1 root root 958203 2010-05-15 09:14 banach-lucid-20100515-1.png -rw-r--r-- 1 root root 11241741 2010-05-15 09:14 banach-lucid-20100515-1.tgz -rw-r--r-- 1 root root 1023700 2010-05-15 18:26 banach-lucid-20100515-2.png -rw-r--r-- 1 root root 11944668 2010-05-15 18:26 banach-lucid-20100515-2.tgz -rw-r--r-- 1 root root 995009 2010-05-16 10:37 banach-lucid-20100516-1.png -rw-r--r-- 1 root root 12344202 2010-05-16 10:36 banach-lucid-20100516-1.tgz -rw-r--r-- 1 root root 996674 2010-05-16 19:22 banach-lucid-20100516-2.png -rw-r--r-- 1 root root 11422315 2010-05-16 19:21 banach-lucid-20100516-2.tgz
Jak widać, efektem każdego startu jest pojawienie się pliku .png
(obrazek
z raportem) a także .tgz
(archiwum zawierające logi). W razie gdyby
pybootchartgui
nie był zainstalowany, pojawi się tylko plik .tgz
(z którego
raport można zrobić później, np. na innej maszynie). Nazwy plików łączą
nazwę maszyny, nazwę systemu, datę oraz numer rebootu danego dnia.
Uwaga:
/var/log/bootchart
warto od czasu do czasu sprzątnąć.
Dane można też opracowywać post factum skryptem pybootchartgui
(na Ubuntu podsymlinkowanym także pod nazwą bootchart
).
Na przykład tak robimy wersję SVG:
$ pybootchartgui /var/log/bootchart/banach-lucid-20100516-2.tgz \ --format=svg --output=banach-lucid-20100516-2.svg
a tak uruchamiamy viewer wbudowany w pybootchartgui
(nie polecam,
działa mniej płynnie niż podgląd plików .png
):
$ bootchart /var/log/bootchart/banach-lucid-20100516-2.tgz \ --interactive