AA_schnellboot.jpg

© Kirill Zdorov, Fotolia

Bootzeit stoppen mit Bootchart

Schnellboot

Auf immer kleineren Geräten soll Linux bald laufen – und muss daher auch immer schneller starten. Bootchart verrät, wo das System noch trödelt.

Der Trend zu mobilen Geräten rückte in letzter Zeit ein heikles Thema in den Vordergrund: die Bootzeiten. Wer sein Handy einschaltet, will keine halbe Stunde warten, bis er telefonieren kann. Auch Desktop-Nutzer haben nicht unendlich viel Geduld – das wissen die Entwickler und rücken den Bootzeiten mit diversen Werkzeugen auf den Pelz, optimieren Dienste und drehen an den Kernel-Schrauben, um die Startzeit von Linux-Systemen so weit wie möglich zu verkürzen. Und es lohnt sich: Die Distribution Moblin2 bootet etwa von einer SSD-Festplatte in nur 5 Sekunden [1], die Bootzeit für ein normales Debian auf einem Asus EeePC 901 lässt sich auf immerhin 14 Sekunden reduzieren.

Die Analyse des Bootvorgangs übernimmt dabei praktischerweise ein Werkzeug namens Bootchart [3]. Es tut genau das, was der Name verspricht: Es protokolliert äußerst penibel die Startzeiten der einzelnen Dienste und Prozesse auf dem Rechner mit und verwandelt die gewonnenen Daten in ein längliches Gantt-Diagramm im EPS-, PNG- oder im SVG-Format.

Auf Basis dieser Grafik können Sie dann mit dem Schraubenschlüssel ansetzen und durch allerlei Tricks die Bootzeit verkürzen. Bei Bootchart handelt es sich um ein Profitool: Die Entwickler von Amazons E-Book-Reader Kindle benutzten es ebenso wie die Entwickler des Ubuntu-Projekts. Sie installieren es unter Ubuntu 8.10 und OpenSuse 11 bequem über den Paketmanager. Unter OpenSuse müssen Sie zusätzlich die Option init=/sbin/bootchartd als Kernel-Parameter im Bootmenü von Grub angeben (siehe Kasten "Bootchart für OpenSuse 11") .

Bootchart besteht zunächst aus einem Shellskript, das vor dem Init-Prozess startet, diesen dann aufruft und mit dem Aufzeichnen der Daten beginnt. Dabei sammelt es Informationen, die im Dateisystems /proc anfallen, konkret in /proc/stat, /proc/diskstats und /proc/*/stat. Das Sternchen steht dabei stellvertretend für sämtliche Prozesse, die /proc einbindet. Die Daten legt Bootchart zunächst über das virtuelle Dateisystem Tmpfs im Arbeitsspeicher ab. Bootchart beendet die Datensammlung, sobald es auf die Namen einiger typischer Prozesse trifft, die – wie gdmgreeter und kdm_greet – erst beim Erreichen des Anmeldebildschirms auftauchen. Die fertige Kollektion verfrachtet es dann vom RAM auf die Festplatte in die Datei /var/log/bootchart.tgz.

Damit der Anwender am Ende nicht ohne Löffel vor einer Schüssel voller Zahlen sitzt, wandelt eine Java-Anwendung die Daten unter Ubuntu automatisch in eine PNG-Grafik um, die im Verzeichnis /var/log/bootchart landet. Unter OpenSuse 11 geben Sie dazu auf der Konsole noch

$ sudo bootchart --format png

ein. Die aus dem TGZ-Archiv generierte Grafik legt die Distribution dann in dem Verzeichnis ab, aus dem heraus Sie den Befehl aufrufen.

Da beim Booten mitunter hunderte Prozesse um die Wette rennen, gerät die Grafik gelegentlich etwas unübersichtlich. Dagegen steuert Bootchart mit Tree-Pruning, was sich auf Deutsch in etwa mit dem Stutzen von Ästen übersetzen lässt: Die Technik blendet untätige und sehr kurzlebiger Prozesse aus und fasst ähnliche Prozesse unter einem Hut zusammen.

Bootchart für OpenSuse 11

Es gibt zwei Wege, um den zusätzlichen Boot-Parameter anzugeben: Sie tragen ihn entweder dauerhaft in die Datei /boot/grub/menu.lst ein, wo Sie ihn an die mit kernel beginnende Zeile des Abschnitts anhängen, der Ihre aktuelle Distribution betrifft. Alternativ ändern Sie die entsprechende Zeile temporär direkt im Bootmenü von Grub. Dazu bewegen Sie den Cursor mit Hilfe der Pfeiltasten zum richtigen Booteintrag und drücken [E] (für "edit"), um ihn zu bearbeiten. Dann hängen Sie den Eintrag init=/sbin/bootchartd an das Ende der Zeile, die mit kernel beginnt.

Da Ihnen im Bootmenü gewöhnlich nur eine englischsprachige Tastatur zur Verfügung steht, erreichen Sie das Zeichen = gewöhnlich über die Taste [`] und den Schrägstrich / über [-]. Mittels [Eingabe] bestätigen Sie die Änderung, über [B] booten Sie den Rechner über die modifizierte Zeile.

Kernel-Stoppuhr Bootgraph

Bevor Sie sich nun an die Analyse machen, soll Bootgraph noch zu seinem Auftritt kommen: Die Software kommt von den Kernel-Entwicklern selbst und gehört ab Version 2.6.28 zu den Kernel-eigenen Skripten. Sie zeigt – unterstützt durch ein einfaches Perl-Skript – was der Linux-Kernel während der Bootphase eigentlich konkret tut. Mitunter gibt es hier auch noch Möglichkeiten zur Optimierung, im Test lag der protokollierte Zeitraum aber gerade einmal bei etwa zwei Sekunden.

Um Bootgraph zu nutzen, stellen Sie über uname -r zunächst fest, ob Sie einen Kernel ab Version 2.6.28 verwenden. Ist das der Fall, starten Sie Ihr System neu und ergänzen – wie im Kasten "Bootchart für OpenSuse 11" beschrieben – den Bootmanager Grub um den zusätzlichen Kernel-Parameter initcall_debug.

Dann booten Sie den Rechner mit der aktivierten Option neu und erzeugen mit einem einfachen Befehl eine Vektorgrafik:

$ dmesg | perl /usr/src/kernel/scripts/bootgraph.pl > /home/User/bootgraph.svg

Das Kommando zerlegt die Ausgabe von dmesg mit Hilfe eines Perl-Skripts und legt das Ergebnis – eine Vektorgrafik im SVG-Format – im Home-Verzeichnis des Anwenders User ab. Die Grafik (Abbildung 1) schauen Sie sich wahlweise im Browser Firefox an – dann allerdings im Querformat – oder Sie rufen diese über ein Vektorgrafikprogramm wie Inkscape auf und drehen sie um 90 Grad.

Abbildung 1: Der Kernel hatte im Test eher einen minimalen Einfluss auf die Boot-Zeiten. Das zeigte das Skript Bootgraph, das es seit Kernel-Version 2.6.28 gibt.

Schauen und staunen

Was bedeuten nun die verschiedenen Elemente des von Bootchart erzeugten Diagramms (Abbildung 2)? Ganz oben listet die Grafik eine Reihe statistischer Angaben auf. Denen entnehmen Sie das Datum der Messung, die eingesetzte Linux-Distribution und die verwendete Kernel-Version. Darunter finden Sie Details zur CPU und zu den genutzten Kernel-Optionen. Neben time erscheint die beim Booten verstrichene Zeit.

Abbildung 2: Vor dem Optimieren: Bootchart produziert eine Grafik, die zeigt, wofür der Bootprozess seine Zeit verwendet.

Es folgen zwei schlanke Diagramme. Diese zeigen die Auslastung der CPU während der Bootzeit sowie die Ein-/Ausgabe-Aktivitäten. Täler weisen auf untätige Prozessoren hin. Da das Diagramm die X-Achse mit der Haupttabelle teilt, erkennen Sie auch gleich, welche Prozesse die CPU nicht auslasten und so wertvolle Bootzeit verschenken. Das unten anschließende Diagramm sieht ähnlich aus, konzentriert sich aber auf die Festplatte, deren Datendurchsatz und Betriebsdauer es zeigt.

Darunter beginnt der Hauptteil der Bootchart-Grafik: Er besteht aus einem sehr langen Diagramm, bei dem die X-Achse die verflossenen Sekunden während des Bootvorgangs zählt. Zur besseren Orientierung wandert nach jeder Sekunde eine dünne vertikale Linie zum Fuß des Diagramms.

Zugleich laufen beschriftete Balken von links nach rechts. Jeder einzelne repräsentiert dabei einen bestimmten Prozess während des Bootvorgangs. Während einige der Balken nach ein paar Sekunden wieder enden, ziehen andere sich bis zum Ende durch: Diese Prozesse laufen auch nach Abschluss des Bootvorgangs weiter; dazu gehören Dienste wie CUPS oder der ACPI-Daemon. Das erlaubt, anhand der Querbalken und der vertikalen Zeitlinien abzulesen, wann ein Prozess beginnt und wann er endet. Kindprozesse verbindet die Grafik mit Hilfe gestrichelter Linien mit dem Elternprozess.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

EasyBCD/NeoGrub
Wolfgang Conrad, 17.12.2017 11:40, 0 Antworten
Hallo zusammen, benutze unter Windows 7 den EasyBCD bzw. NEOgrub, um LinuxMint aus einer ISO Dat...
Huawei
Pit Hampelmann, 13.12.2017 11:35, 2 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...