Website-Suche

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.

Verwandte Artikel: