Aus Linux-Magazin 05/2018

Aus dem Alltag eines Sysadmin: Systemd-analyze

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.

Abbildung 1: Eine Zeitleiste im SVG-Format über die Systemd-Startzeiten der einzelnen Dienste.

Abbildung 1: Eine Zeitleiste im SVG-Format über die Systemd-Startzeiten der einzelnen Dienste.

Infos

  1. Bootchart: http://www.bootchart.org

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein. Zu seinen Aufgaben gehören Sicherheit und Verfügbarkeit der Firewalls und der DMZ.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben