Bootchart

Aus wiki.archlinux.de
Version vom 31. März 2012, 18:52 Uhr von Feuri (Diskussion | Beiträge) (Änderung 12657 von Feuri (Diskussion) rückgängig gemacht.)

Wechseln zu: Navigation, Suche

Ein Ziel vieler Anpassungen am System ist das Verkürzen der Startdauer des Systems. So kann man zeitintensive Prozesse in den Hintergrund verlagern, unnötige Prozesse gar nicht erst starten lassen, Optionen ändern, hinzufügen, oder weg lassen, damit der Bootvorgang des Rechners möglichst schnell vonstatten geht.

Wenn man nun überprüfen möchte, ob die Änderungen tatsächlich etwas verbessert haben, kann man Bootchart verwenden. Bootchart klinkt sich beim Starten des Rechners anstelle des herkömmlichen Startprozesses in den Bootvorgang ein, und loggt alle Prozesse, die gestartet werden mit. So kann man nach dem Starten mittels eines Generierungsbefehls eine grafische Statistik darüber erstellen, die Aufschluss über die Startdauer gibt, und aufzeigt, welche Prozesse wann wie lange brauchten, um zu starten.

Installation

Bootchart ist im AUR verfügbar, und muss aus eben diesem auch installiert werden.

https://aur.archlinux.org/packages.php?ID=43477

Einrichtung

Damit es beim Starten des Computers auch startet und den Bootvorgang mitloggt, muss der Bootloader noch angepasst werden. Es wird davon ausgegangen, dass GRUB verwendet wird.

Je nach Installation und System können die Zeilen geringfügig anders aussehen. Informationen zu den weiteren Zeilen in der Datei bietet der GRUB-Artikel hier im Wiki.

Es gibt nun zwei Möglichkeiten, Bootchart beim Starten des Systems zu laden. Man kann entweder den Eintrag, der nicht „…-Fallback“ ist, anpassen, oder man erstellt einen neuen Eintrag. Es ist ratsam, einen neuen Eintrag zu erstellen. Bei dem neuen Eintrag sollte man die Angaben des Original-Eintrages übernehmen und danach um die Bootchart-Optionen erweitern.

title  Arch Linux Bootchart
root   (hd0,0)
kernel /boot/vmlinuz-linux root=/dev/sda1 ro quiet init=/sbin/bootchartd
initrd /boot/initramfs-linux.img

Mittels dieses Eintrages wird ein Bootmenüpunkt „Arch Linux Bootchart“ eingerichtet. In der „kernel“-Zeile ist die Option „init“ hinzugekommen, die definiert, dass statt des normalen Initskriptes das Bootchart-Initskript ausgeführt werden soll. Dieses lädt sich selbst in den Hintergrund und dann umgehend das normale Initskript, damit der Rechner starten kann.

Wenn man ein eigenes, angepasstes Initskript benutzt, kann man Bootchart mittels des zusätzlichen Kernel-Parameters „bootchart_init“ anweisen, dieses zu benutzen, anstatt des Standard-Startskript zu laden.

Wenn man jetzt neu startet, und im GRUB-Menü den Bootchart-Eintrag auswählt, startet das System und generiert die Logdateien.

Auswertung

Analyse eines Bootvorgangs mittels Bootchart

Bootchart erstellt das Logdateiarchiv standardmäßig unter „/var/log/bootchart.tgz“. Sollte nach dem Booten diese Datei nicht existieren, siehe Fehlerbehebung.

manuelle Generierung

Mittels des Programms „bootchart-render“ wird aus den Logdateien die grafische Auswertung erstellt, dies dauert je nach Umfang des Startvorgangs einen kurzen Moment.

$ bootchart-render 
Parsing /var/log/bootchart.tgz
Wrote image: ./bootchart.png

Das Verzeichnis muss natürlich beschreibbar sein. In der Datei „bootchart.png“ befindet sich nun eine Auswertung des Startvorgangs, anhand dessen man seine Optimierungen begutachten, und Rückschlüsse auf das weitere Vorgehen schließen kann.

automatische Generierung

Wenn man von jedem mit Bootchart geloggten Startvorgang automatisch eine grafische Übersicht erhalten möchte, so kann man dies in der Datei „/etc/bootchartd.conf“ einstellen. In dieser Datei muss dazu der Wert „AUTO_RENDER“ auf „"yes"“ geändert werden. Weitere Optionen können in der Datei ebenfalls angepasst werden. Dies ist im Normalfall allerdings nicht nötig.

Eventuell sollte man noch das Ausgabe-Verzeichnis mittels Anpassung des Wertes „AUTO_RENDER_DIR“ verändern. Es ist zu beachten, dass die generierte Datei bei jedem neuen Generieren überschrieben wird.

Fehlerbehebung

Sollte die Datei „/var/log/bootchart.tgz“ nach dem Booten nicht vorhanden sein, wird das daran liegen, dass Bootchart nicht weiß, wann der Bootvorgang vorbei ist. Standardmäßig beendet Bootchart das Loggen mit dem Start von GDM oder KDM. Wenn man nun allerdings weder GDM noch KDM benutzt, beendet Bootchart das Loggen nicht, und generiert auch die Logdatei nicht.

Bootchart bietet allerdings recht einfach die Möglichkeit, zu definieren, mit dem Start von welchem Programm der Bootvorgang als abgeschlossen gilt. Dazu ist die Datei „/sbin/bootchartd“ zu bearbeiten. In dem Abschnitt „Wait for the boot process to end.“ befindet sich in der 120. Zeile eine Liste von Programmen

local exit_proc="gdmgreeter gdm-binary kdm_greet kdm"

Diese ist nun anzupassen. Für gewöhnlich lässt man ja X auf einem Desktop-PC laufen, also ergänzt man diese Liste um „X“. Man kann die Liste auch einfach durch „X“ ersetzen. Hinweise darauf, welche Prozesse Laufen, liefern top oder htop.

local exit_proc="X"

Auf Systemen, die ohne GUI laufen, und auf denen man nach dem Startvorgang das Login-Prompt sieht, muss man aller Wahrscheinlichkeit nach, das Programm „login“ als End-Programm angeben. Vielleicht muss man ein paar mal rumprobieren, bis man „sein“ Bootprozess-ist-beendet-Programm gefunden hat.

Nach einem Neustart und dem Mitloggen durch Bootchart sollte nun die Datei „/var/log/bootchart.tgz“ erstellt worden sein.

Weblinks

Homepage von Bootchart Sprache en.png