systemd-analyze - Găsiți statistici de performanță la pornirea sistemului în Linux


Utilizați systemd systemd and service manager, iar sistemul dvs. Linux necesită mai mult timp pentru a porni sau doriți pur și simplu să vedeți rapoartele privind performanța de pornire a sistemului dvs.? Dacă da, ați ajuns în locul potrivit.

În acest articol, vă vom arăta cum să analizați statisticile de performanță a pornirii unui sistem Linux utilizând systemd-analyze, unul dintre numeroasele utilitare sub systemd pentru managementul sistemului.

Citiți și: Cum să controlați serviciile Systemd pe serverul Linux de la distanță

Pentru a obține o imagine de ansamblu asupra timpului de pornire a sistemului, putem rula comanda systemd-analyze fără niciun argument, după cum urmează. Acesta va lista informații despre cât timp a durat fiecare serviciu pentru a porni, care include timpul necesar de kernel, initrd și spațiu de utilizator în timpul pornirii.

systemd-analyze

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

Dacă doriți să vizualizați o listă a tuturor unităților care rulează, sortate după timpul de inițializare (cel mai mare timp în partea de sus), sub-comanda blame este folosită în acest scop. După ce rulați comanda care urmează, utilizați [Enter] pentru a vedea mai multe servicii din listă și q pentru a ieși.

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

După cum puteți vedea din rezultatul de mai sus că fiecare unitate este sortată în funcție de timpul necesar, puteți afla pur și simplu care serviciu durează mai mult timp la pornire și puteți analiza problema.

Apoi, putem vizualiza, de asemenea, un arbore al lanțului critic în timp pentru ținta implicită sau o listă de unități specificate cu sub-comanda lanțului critic, așa cum se arată.

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

În cele din urmă, să ne uităm la încă o subcomandă importantă care permite producerea detalierii grafice (format svg) a serviciilor de sistem care au fost pornite și la ce oră, evidențiind timpul de inițializare a acestora, după cum urmează.

Asigurați-vă că modul de afișare grafică sau x-windows este activat pentru a vizualiza diagrama.

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

Toate comenzile de mai sus vor tipări statisticile de performanță la pornire pentru mașina locală. Pentru a vizualiza informații de la o gazdă la distanță prin ssh, utilizați marcatorul -H și specificați directiva nume utilizator@gazdă, după cum se arată.

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

systemd-analyze poate fi folosit și pentru a găsi alte informații de stare și de urmărire din sistem și systemd (manager de servicii) și multe altele. Pentru mai multe informații, consultați pagina sa de manual.

man systemd-analyze 

Citiți și: Cum să schimbați nivelurile de rulare (ținte) în SystemD

Atât deocamdată! Dacă aveți întrebări sau aveți gânduri de împărtășit, utilizați formularul de feedback de mai jos pentru a ne contacta.