systemd-analyze - Findet Statistiken zur Systemstartleistung unter Linux
Verwenden Sie systemd System und Service Manager und Ihr Linux-System braucht länger zum Booten, oder möchten Sie einfach nur die Berichte über die Leistung Ihres Systemstarts anzeigen? Wenn ja, sind Sie hier genau richtig.
In diesem Artikel zeigen wir Ihnen, wie Sie die Leistungsstatistiken eines Linux-Systems mit systemd-analyze, einem der zahlreichen Dienstprogramme unter systemd für die Systemverwaltung, analysieren können.
Lesen Sie auch: So steuern Sie Systemd-Dienste auf einem Remote-Linux-Server
Um einen Überblick über die Startzeit des Systems zu erhalten, können wir den Befehl systemd-analyze ohne Argumente wie folgt ausführen. Es werden Informationen darüber aufgelistet, wie viel Zeit jeder Dienst zum Starten benötigt hat, einschließlich der Zeit, die Kernel, initrd und Userspace beim Booten benötigt haben.
# systemd-analyze
Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s
Wenn Sie eine Liste aller laufenden Units anzeigen möchten, sortiert nach der Zeit, die sie für die Initialisierung benötigt haben (höchste Zeit oben), wird zu diesem Zweck der Unterbefehl blame verwendet. Nachdem Sie den folgenden Befehl ausgeführt haben, verwenden Sie [Enter], um weitere Dienste in der Liste anzuzeigen, und q zum Beenden.
# systemd-analyze blame
16.159s mariadb.service
12.178s libvirtd.service
10.298s tuned.service
9.836s postfix.service
8.704s lsws.service
7.352s lscpd.service
4.988s [email
4.779s NetworkManager-wait-online.service
4.577s lvm2-monitor.service
4.439s ModemManager.service
4.413s polkit.service
4.280s dev-sda1.device
4.225s systemd-udev-settle.service
3.957s firewalld.service
3.227s rhel-dmesg.service
3.221s abrt-ccpp.service
3.142s rsyslog.service
3.053s avahi-daemon.service
3.042s pure-ftpd.service
2.249s gssproxy.service
2.212s NetworkManager.service
1.889s proc-fs-nfsd.mount
1.780s systemd-tmpfiles-setup-dev.service
1.451s sshd.service
1.267s rhel-readonly.service
1.035s sysstat.service
1.001s rpc-statd-notify.service
910ms systemd-logind.service
739ms kdump.service
738ms network.service
...
Da Sie aus der obigen Ausgabe ersehen können, dass jede Einheit nach der benötigten Zeit sortiert wird, können Sie einfach herausfinden, welcher Dienst beim Booten länger benötigt und das Problem analysieren.
Als nächstes können wir auch einen Baum der zeitkritischen Kette für das Standardziel oder eine Liste der angegebenen Einheiten mit dem Unterbefehl critical-chain anzeigen, wie gezeigt.
# systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
multi-user.target @48.342s
└─mariadb.service @31.560s +16.159s
└─network.target @31.558s
└─network.service @30.819s +738ms
└─NetworkManager-wait-online.service @26.035s +4.779s
└─NetworkManager.service @23.821s +2.212s
└─network-pre.target @23.821s
└─firewalld.service @19.863s +3.957s
└─polkit.service @15.381s +4.413s
└─basic.target @12.271s
└─sockets.target @12.271s
└─virtlockd.socket @12.270s
└─sysinit.target @12.251s
└─systemd-update-utmp.service @12.196s +54ms
└─auditd.service @11.705s +486ms
└─systemd-tmpfiles-setup.service @11.609s +93ms
└─rhel-import-state.service @11.397s +211ms
└─local-fs.target @11.363s
└─run-user-0.mount @46.910s
└─local-fs-pre.target @10.575s
└─lvm2-monitor.service @5.996s +4.577s
└─lvm2-lvmetad.service @7.376s
└─lvm2-lvmetad.socket @5.987s
└─-.slice
# systemd-analyze critical-chain ntp.service networking.service
Schauen wir uns zum Schluss noch einen weiteren wichtigen Unterbefehl an, der es ermöglicht, grafische (SVG-Format) Details der Systemdienste zu erstellen, die gestartet wurden, und zu welchem Zeitpunkt, wobei ihre Initialisierungszeit wie folgt hervorgehoben wird.
Stellen Sie sicher, dass der grafische Anzeigemodus oder X-Fenster aktiviert ist, um das Diagramm anzuzeigen.
# systemd-analyze plot > boot_analysis.svg
xviewer boot_analysis.svg
Alle oben genannten Befehle drucken die Statistiken zur Startleistung für den lokalen Rechner. Um Informationen von einem entfernten Host über SSH anzuzeigen, verwenden Sie das Flag -H und geben Sie die Direktive username@host an, wie gezeigt.
# systemd-analyze time -H [email
systemd-analyze blame -H [email
systemd-analyze critical-chain -H [email
systemd-analyze kann auch verwendet werden, um andere Status- und Ablaufverfolgungsinformationen aus dem System und systemd (Service Manager) und mehr zu finden. Weitere Informationen finden Sie auf der entsprechenden Manpage.
# man systemd-analyze
Lesen Sie auch: So ändern Sie Runlevel (Ziele) in SystemD
Das war's fürs Erste! Wenn Sie Fragen oder Gedanken haben, verwenden Sie das untenstehende Feedback-Formular, um uns zu erreichen.
