Ricerca nel sito web

systemd-analyze - Trova le statistiche sulle prestazioni di avvio del sistema in Linux


Stai utilizzando Systemd System e Service Manager e il tuo sistema Linux impiega più tempo per l'avvio o desideri semplicemente visualizzare i report sulle prestazioni di avvio del tuo sistema? Se sì, sei arrivato nel posto giusto.

In questo articolo, ti mostreremo come analizzare le statistiche sulle prestazioni di avvio di un sistema Linux utilizzando systemd-analyze, una delle numerose utilità di systemd per la gestione del sistema.

Leggi anche: Come controllare i servizi Systemd su un server Linux remoto

Per avere una panoramica del tempo di avvio del sistema, possiamo eseguire il comando systemd-analyze senza argomenti come segue. Elencherà le informazioni sul tempo impiegato da ciascun servizio per avviarsi, incluso il tempo impiegato dal kernel, initrd e userspace durante l'avvio.

systemd-analyze

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

Se si desidera visualizzare un elenco di tutte le unità in esecuzione, ordinate in base al tempo impiegato per l'inizializzazione (tempo più alto in alto), a questo scopo viene utilizzato il sottocomando colpa. Dopo aver eseguito il comando seguente, utilizza [Invio] per visualizzare più servizi nell'elenco e q per uscire.

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

Come puoi vedere dall'output sopra che ciascuna unità viene ordinata in base al tempo impiegato, puoi semplicemente scoprire quale servizio impiega più tempo durante l'avvio e analizzare il problema.

Successivamente, possiamo anche visualizzare un albero della catena time-critical per il target predefinito o un elenco di unità specificate con il sottocomando critical-chain come mostrato.

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

Infine, diamo un'occhiata a un altro sottocomando importante che consente di produrre dettagli grafici (formato SVG) dei servizi di sistema che sono stati avviati e a che ora, evidenziando il loro tempo di inizializzazione, come segue.

Assicurati che la modalità di visualizzazione grafica o x-windows sia abilitata per visualizzare il grafico.

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

Tutti i comandi precedenti stamperanno le statistiche sulle prestazioni di avvio per il computer locale. Per visualizzare le informazioni da un host remoto su ssh, utilizza il flag -H e specifica la direttiva username@host, come mostrato.

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

systemd-analyze può essere utilizzato anche per trovare altre informazioni sullo stato e sulla traccia dal sistema e da systemd (gestore del servizio) e altro ancora. Per ulteriori informazioni, consultare la relativa pagina man.

man systemd-analyze 

Leggi anche: Come modificare i runlevel (target) in SystemD

Per ora è tutto! Se hai domande o pensieri da condividere, utilizza il modulo di feedback qui sotto per contattarci.