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.