systemd-analyze - Trobeu estadístiques de rendiment d'arrencada del sistema a Linux


Esteu utilitzant el gestor de serveis i sistemes systemd, i el vostre sistema Linux triga més temps a arrencar o simplement voleu veure els informes del rendiment d'arrencada del vostre sistema? En cas afirmatiu, heu arribat al lloc correcte.

En aquest article, us mostrarem com analitzar les estadístiques de rendiment d'arrencada d'un sistema Linux mitjançant systemd-analyze, una de les nombroses utilitats de systemd per a la gestió del sistema.

Per obtenir una visió general del temps d'arrencada del sistema, podem executar l'ordre systemd-analyze sense cap argument de la manera següent. Enumerarà informació sobre el temps que va trigar cada servei a iniciar-se, que inclou el temps que triga el nucli, initrd i l'espai d'usuari durant l'arrencada.

# systemd-analyze

Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s

Si voleu veure una llista de totes les unitats en execució, ordenades pel temps que van trigar a inicialitzar-se (temps més alt a la part superior), s'utilitza la subordre blame per a aquest propòsit. Després d'executar l'ordre que segueix, utilitzeu [Enter] per veure més serveis a la llista i q per sortir.

# 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
...

Com podeu veure a la sortida anterior que cada unitat s'ordena en funció del temps que triga, simplement podeu esbrinar quin servei triga més temps durant l'arrencada i analitzar el problema.

A continuació, també podem veure un arbre de la cadena de temps crític per a l'objectiu predeterminat o una llista d'unitats especificades amb la subordre de cadena crítica tal com es mostra.

# 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

Finalment, mirem una subordre més important que permet produir detalls gràfics (format svg) dels serveis del sistema que s'han iniciat, i en quin moment, destacant el seu temps d'inicialització, de la manera següent.

Assegureu-vos que el mode de visualització gràfica o X-windows estigui habilitat per veure la trama.

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

Totes les ordres anteriors imprimiran les estadístiques de rendiment d'arrencada de la màquina local. Per veure informació d'un host remot mitjançant ssh, utilitzeu la marca -H i especifiqueu la directiva [protegit per correu electrònic], tal com es mostra.

# systemd-analyze time -H [email 
# systemd-analyze blame -H [email 
# systemd-analyze critical-chain -H [email 

systemd-analyze també es pot utilitzar per trobar altra informació d'estat i de traça del sistema i systemd (gestor de serveis) i molt més. Per obtenir més informació, consulteu la seva pàgina de manual.

# man systemd-analyze 

Això és tot de moment! Si teniu cap pregunta o pensa a compartir, utilitzeu el formulari de comentaris a continuació per posar-vos en contacte amb nosaltres.