Bei Sysadmin-Kolumnist Charly bleibt kein verstolperter Systemstart unentdeckt. Das war bei Sys-V-Init schon so und änderte sich mit Systemd auch nicht. Nur bei den Tools, die er bei der Analyse verwendet, blieb keine Stoppuhr auf der anderen.
Wenn mir eine Distribution beim Starten ihren Splashscreen vor die Nase hält – inzwischen machen das fast alle –, dann schalte ich das Ding ab dem zweiten Mal ab. Ich will beim Booten die Kernelmeldungen vorbeirauschen sehen. Denn öfter als man meint, hakt es beim Booten irgendwo. Wenn ich etwas Bedenkliches vorbeihuschen sehe, mache ich mich mit einem Tool wie Bootchart [1] auf die Suche, finde einen hängenden Prozess oder ähnliche Wehwehchen schnell und kann sie kurieren.
Auf Systemen mit Systemd geht das prinzipiell auch, aber das Tool ist ein anderes: Systemd-analyze. Ohne Parameter aufgerufen rechnet »systemd-analyze« die Zeit zusammen, die bis zum abgeschlossenen Systemstart vergangen ist, getrennt nach Kernel- und Userland-Prozessen:
Startup finished in 3.507s (kernel) + 16.334s (userspace) = 19.842s
Das will ich jetzt natürlich genauer wissen. Das Kommando »systemd-analyze blame« gibt mir eine Liste aller beim Booten gestarteten Prozesse. Sie sind sortiert nach der Zeit, die verstrichen ist, bis der Prozess vollständig gestartet ist. Ich lasse mir normalerweise nur die zehn größten Trödler wie in Listing 1 anzeigen.
In diesem speziellen Fall darf ich die Notierungen der Zeilen 1 und 2 ignorieren – sie erscheinen, wenn das System unbeaufsichtigt Updates beim Start durchführt (»unattended updates/upgrades«). Diese blockieren zum Glück keine anderen Prozesse und zappeln einfach im Hintergrund ein bisschen herum. Systemd-analyze kalkuliert sie aus diesem Grund nicht mit, wie oben an den Summen schon zu sehen war.
Listing 1
systemd-analyze blame|head
01 1min 3.753s apt-daily.service 02 40.702s apt-daily-upgrade.service 03 8.649s fail2ban.service 04 4.246s networking.service 05 3.327s smokeping.service 06 2.622s apache2.service 07 2.303s mysql.service 08 2.206s postfix.service 09 1.835s dev-sdb1.device 10 993ms munin-node.service
Seriell erzählender Plot
Mit dem Parameter »plot« kann ich eine Art Zeitleiste im SVG-Format erzeugen lassen, die den Bootprozess grafisch sehr anschaulich wiedergibt. Damit das funktioniert, muss das Paket »graphwiz« installiert sein. Das Kommando lautet dann:
systemd-analyze plot > systemd-boot.svg
Abbildung 1 zeigt einen kleinen Ausschnitt aus den Ergebnissen. Die Startzeit der einzelnen Prozesse symbolisiert hier ein roter Balken. Nicht nur die Start-Reihenfolge und -Zeiten, sondern sogar alle Abhängigkeiten zwischen den Diensten kann mir das Tool in Form einer SVG-Grafik zusammenstellen:
systemd-analyze dot | dot -Tsvg > dependencies.svg
Achtung: Das Ergebnis ist echt riesig und entlockt wohl nur Besitzern von DIN-A1-Plottern einen erleichterten “Endlich lohnt sich mal das Ding!”-Seufzer.
Infos
- Bootchart: http://www.bootchart.org







