Zoeken op website

systemd-analyze - Zoek prestatiestatistieken bij het opstarten van het systeem in Linux


Gebruikt u systemd system en service manager, en duurt het langer voordat uw Linux-systeem opstart, of wilt u eenvoudigweg de rapporten bekijken van de opstartprestaties van uw systeem? Zo ja, dan bent u op de juiste plaats beland.

In dit artikel laten we u zien hoe u de opstartstatistieken van een Linux-systeem kunt analyseren met behulp van systemd-analyze, een van de vele hulpprogramma's onder systemd voor systeembeheer.

Lees ook: Systemd Services beheren op een externe Linux-server

Om een overzicht te krijgen van de opstarttijd van het systeem, kunnen we de opdracht systemd-analyze als volgt uitvoeren zonder enige argumenten. Het geeft informatie weer over hoeveel tijd elke service nodig had om te starten, inclusief de tijd die nodig was voor kernel, initrd en gebruikersruimte tijdens het opstarten.

systemd-analyze

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

Als je een lijst wilt bekijken van alle actieve eenheden, gesorteerd op de tijd die ze nodig hadden om te initialiseren (hoogste tijd bovenaan), wordt voor dit doel het subcommando 'blabla' gebruikt. Nadat u de volgende opdracht heeft uitgevoerd, gebruikt u [Enter] om meer services in de lijst te bekijken en q om af te sluiten.

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

Zoals u uit de bovenstaande uitvoer kunt zien, is elke eenheid gesorteerd op basis van de benodigde tijd. U kunt er eenvoudig achter komen welke service langer duurt tijdens het opstarten en het probleem analyseren.

Vervolgens kunnen we ook een boomstructuur van de tijdkritische keten voor het standaarddoel bekijken, of een lijst met gespecificeerde eenheden met het subcommando van de kritieke keten, zoals weergegeven.

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

Laten we tot slot nog eens kijken naar nog een belangrijk subcommando dat het mogelijk maakt om grafische details (svg-formaat) te produceren van systeemservices die zijn gestart, en op welk tijdstip, waarbij hun initialisatietijd wordt benadrukt, als volgt.

Zorg ervoor dat de grafische weergavemodus of x-windows is ingeschakeld om de plot te kunnen bekijken.

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

Alle bovenstaande opdrachten drukken de opstartprestatiestatistieken voor de lokale machine af. Om informatie van een externe host via ssh te bekijken, gebruikt u de vlag -H en specificeert u de instructie gebruikersnaam@host, zoals weergegeven.

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

systemd-analyze kan ook worden gebruikt om andere status- en traceringsinformatie van het systeem en systemd (servicemanager) en meer te vinden. Voor meer informatie, zie de manpagina ervan.

man systemd-analyze 

Lees ook: Runlevels (doelen) wijzigen in SystemD

Dat is het voor nu! Als u vragen heeft of ideeën wilt delen, gebruik dan het onderstaande feedbackformulier om ons te bereiken.