Domanda:Il mio sistema sta impiegando molto tempo per avviarsi. Come faccio a scoprire quali servizi richiedono molto tempo per essere avviati?
Risposta:
analisi di sistema Il comando può essere utilizzato per trovare informazioni su quanto ogni servizio ha impiegato per iniziare. tempo di analisi del sistema può fornire informazioni generali sul tempo impiegato dal sistema per avviarsi. Ecco un comando che mostra chiaramente il tempo impiegato da kernel, initrd e userspace durante l'avvio.
# systemd-analyze time Startup finished in 1.267s (kernel) + 6.798s (initrd) + 1min 2.139s (userspace) = 1min 10.205s
Per scoprire quanto tempo ha impiegato ciascuna unità per avviarsi, esegui systemd-analyze incolpa .
# systemd-analyze blame 24.728s dev-mapper-centosx2droot.device 15.135s kdump.service 14.670s plymouth-quit-wait.service 14.210s firewalld.service 9.835s accounts-daemon.service 7.383s ModemManager.service 7.259s libvirtd.service 7.257s systemd-logind.service 7.177s ksm.service 7.081s gssproxy.service 7.067s avahi-daemon.service 7.062s rsyslog.service 7.039s abrt-ccpp.service
Come puoi vedere, l'output è ordinato in base al tempo impiegato da ciascuna unità, puoi facilmente scoprire quale servizio sta impiegando più tempo durante l'avvio e puoi approfondire per analizzare il problema.
In determinati passaggi, l'avvio non può procedere finché tutte le dipendenze per l'unità non sono soddisfatte. Per vedere le unità in questi punti critici, esegui systemd-analyze critical-chain .
# 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. graphical.target @1min 2.102s └─multi-user.target @1min 2.102s └─abrt-vmcore.service @1min 1.228s +872ms └─kdump.service @46.090s +15.135s └─remote-fs.target @46.086s └─remote-fs-pre.target @46.083s └─iscsi-shutdown.service @45.951s +99ms └─network.target @45.944s └─network.service @44.959s +975ms └─NetworkManager.service @38.653s +689ms └─firewalld.service @24.439s +14.210s └─basic.target @23.850s └─sockets.target @23.849s └─cups.socket @23.847s └─sysinit.target @23.618s └─systemd-update-utmp.service @23.603s +13ms └─auditd.service @22.959s +643ms └─systemd-tmpfiles-setup.service @22.726s +230ms └─rhel-import-state.service @22.431s +294ms └─local-fs.target @22.428s └─boot.mount @19.675s +2.126s └─dev-disk-byx2duuid-7de2053cx2d44d7x2d4f33x2db522x2d81dee2f6b69b.device @19.652s
È possibile tracciare un'immagine grafica SVG che contiene dettagli sull'ora di inizio dei servizi di sistema, evidenziando il tempo speso per l'inizializzazione. Assicurati di aver abilitato la modalità di visualizzazione grafica o di aver abilitato x-windows per vedere il grafico.
# systemd-analyze plot > plot.svg # eog plot.svg
Ecco uno snip dal grafico di esempio sulla mia macchina CentOS 7. Ingrandisci per controllare chiaramente la cascata.