systemd-analyse - Find System Boot-up Performance Statistics i Linux


Bruger du systemd system- og servicemanager, og dit Linux-system tager længere tid at starte, eller har du simpelthen lyst til at se rapporterne om din systemstart-ydeevne? Hvis ja, er du landet på det rigtige sted.

I denne artikel vil vi vise dig, hvordan du analyserer en Linux-system-opstartspræstationsstatistik ved hjælp af systemd-analyse, et af mange værktøjer under systemd til systemadministration.

For at få et overblik over systemets opstartstid kan vi køre kommandoen systemd-analyse uden nogen argumenter som følger. Den viser oplysninger om, hvor lang tid hver tjeneste tog at starte, hvilket inkluderer den tid, det tager af kernen, initrd og brugerområdet under opstart.

# systemd-analyze

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

Hvis du vil se en liste over alle kørende enheder sorteret efter den tid, det tog at initialisere (højeste tid på toppen), bruges skyldkommandoen til dette formål. Når du har kørt den følgende kommando, skal du bruge [Enter] til at se flere tjenester på listen og q for at afslutte.

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

Som du kan se fra ovenstående output, at hver enhed er sorteret ud fra den tid, det tager, kan du simpelthen finde ud af, hvilken service der tager længere tid, mens du starter og analyserer problemet.

Dernæst kan vi også se et træ i den tidskritiske kæde for standardmålet eller en liste over specificerede enheder med den kritiske kæde-underkommando som vist.

# 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

Lad os endelig se på endnu en vigtig underkommando, der giver mulighed for at producere grafisk (svg-format) detaljering af systemtjenester, der er startet, og på hvilket tidspunkt fremhæver deres initialiseringstid som følger.

Sørg for, at grafisk visningstilstand eller x-windows er aktiveret for at se plottet.

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

Alle ovenstående kommandoer udskriver startstatistik for den lokale maskine. Hvis du vil se oplysninger fra en fjernhost over ssh, skal du bruge -H -flagget og angive [e-mail-beskyttet] -direktivet som vist.

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

systemd-analyse kan også bruges til at finde andre tilstands- og sporingsoplysninger fra systemet og systemd (servicemanager) og mere. For mere information, se dens mandside.

# man systemd-analyze 

Det er det for nu! Hvis du har spørgsmål eller tænkte at dele, skal du bruge feedbackformularen nedenfor for at nå os.