Website-Suche

systemd-analyze – Finden Sie Statistiken zur Systemstartleistung unter Linux


Verwenden Sie den systemd-System- und Service-Manager und Ihr Linux-System braucht länger zum Booten oder möchten Sie einfach die Berichte über die Boot-Leistung Ihres Systems anzeigen? Wenn ja, sind Sie hier richtig.

In diesem Artikel zeigen wir Ihnen, wie Sie die Startleistungsstatistik eines Linux-Systems mit systemd-analyze analysieren, einem der zahlreichen Dienstprogramme unter systemd für die Systemverwaltung.

Lesen Sie auch: So steuern Sie Systemd-Dienste auf einem Remote-Linux-Server

Um einen Überblick über die Systemstartzeit zu erhalten, können wir den Befehl systemd-analyze wie folgt ohne Argumente 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 Einheiten anzeigen möchten, sortiert nach der Zeit, die sie zum Initialisieren 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, um den Vorgang zu 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
...

Wie Sie der obigen Ausgabe entnehmen können, ist jede Einheit nach der benötigten Zeit sortiert. Sie können also einfach herausfinden, welcher Dienst beim Booten länger dauert, 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 abschließend noch einen weiteren wichtigen Unterbefehl an, der es ermöglicht, grafische Details (SVG-Format) zu den Systemdiensten zu erstellen, die gestartet wurden und zu welchem Zeitpunkt, und deren Initialisierungszeit wie folgt hervorzuheben.

Stellen Sie sicher, dass der grafische Anzeigemodus oder X-Windows aktiviert ist, um das Diagramm anzuzeigen.

systemd-analyze plot > boot_analysis.svg
xviewer boot_analysis.svg  

Alle oben genannten Befehle drucken die Startleistungsstatistiken für den lokalen Computer aus. Um Informationen von einem Remote-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 vom System und systemd (Dienstmanager) und mehr zu finden. Weitere Informationen finden Sie in der Manpage.

man systemd-analyze 

Lesen Sie auch: So ändern Sie Runlevels (Ziele) in SystemD

Das war es fürs Erste! Wenn Sie Fragen oder Anregungen zum Teilen haben, nutzen Sie das unten stehende Feedback-Formular, um uns zu erreichen.