Systemd-analyze

Systemd-analyze je nástroj pro analýzu a ladění správce systému. Může být využit ke zjištění výkonu spouštění systému a trasuje informace ze systému a správce služeb. Z mého pohledu je to přímo dokonalý nástroj pro ladění, detekci a porovnávání spouštění systému, celého PC i služeb

Vizualizace startu služeb

Něco z manuálu

systemd-analyze  [OPTIONS...] [time]
systemd-analyze  [OPTIONS...]  blame 
systemd-analyze  [OPTIONS...]  critical-chain  [UNIT...]
systemd-analyze  [OPTIONS...]  dump 
systemd-analyze  [OPTIONS...]  plot  [>file.svg]
systemd-analyze  [OPTIONS...]  dot  [PATTERN...] [>file.dot]
systemd-analyze  [OPTIONS...]  unit-paths 
systemd-analyze  [OPTIONS...]  exit-status  [STATUS...]
systemd-analyze  [OPTIONS...]  capability  [CAPABILITY...]
systemd-analyze  [OPTIONS...]  condition   CONDITION… 
systemd-analyze  [OPTIONS...]  syscall-filter  [SET…]
systemd-analyze  [OPTIONS...]  calendar   SPEC... 
systemd-analyze  [OPTIONS...]  timestamp   TIMESTAMP... 
systemd-analyze  [OPTIONS...]  timespan   SPAN... 
systemd-analyze  [OPTIONS...]  cat-config   NAME|PATH... 
systemd-analyze  [OPTIONS...]  verify  [FILE...]
systemd-analyze  [OPTIONS...]  security   UNIT... 

Cli analýza

Pomocí samotného příkazu systemd-analyze se dozvíme dobu spouštění PC firmware, loaderu, kernelu, uživatelského prostředí.

systemd-analyze Startup finished in 12.681s (firmware) + 678ms (loader) + 2.086s (kernel) + 2.674s (userspace) = 18.119s graphical.target reached after 2.674s in userspace

blame

Pomocí parametru blame získáme výpis služeb a jejich dobu spuštění.

systemd-analyze blame

Výpis může vypadat takto:

938ms tor.service
778ms man-db.service
632ms dhcpcd.service
616ms dev-sda1.device
337ms systemd-journal-flush.service
132ms user@1000.service
120ms vboxservice.service
117ms systemd-udevd.service
112ms lvm2-monitor.service
107ms systemd-udev-trigger.service
 90ms systemd-logind.service
 85ms systemd-tmpfiles-setup-dev.service
 78ms systemd-journald.service
 75ms systemd-tmpfiles-setup.service
 70ms systemd-tmpfiles-clean.service
 55ms dbus.service
 50ms modprobe@fuse.service
 43ms upower.service
 43ms systemd-sysctl.service
 32ms systemd-random-seed.service
 27ms systemd-remount-fs.service
 23ms sys-kernel-config.mount
 22ms systemd-binfmt.service
 22ms dev-hugepages.mount
 21ms dev-mqueue.mount
 20ms sys-kernel-debug.mount
 20ms modprobe@drm.service
 19ms sys-kernel-tracing.mount
 18ms kmod-static-nodes.service
 17ms dev-disk-by\x2duuid-a712f492\x2d498c\x2d4f22\x2db0c9\x2d640a9b7c0a23.swap
 17ms sys-fs-fuse-connections.mount
 16ms modprobe@configfs.service
 14ms systemd-user-sessions.service
 12ms systemd-update-utmp.service
  9ms proc-sys-fs-binfmt_misc.mount
  8ms alsa-restore.service
  7ms user-runtime-dir@1000.service
  3ms tmp.mount

plot

Vykreslí a vytrasuje pomocí škálovatelné grafiky průběh zapínání PC. Příkaz může být následující:

systemd-analyze plot > spusteni.svg

Ukázky svg plotů

Zajímají mne pouze časy a přibližná orientace v údajích, příklady níže mohou být ořízlé a nekompletní, nicméně to podstatné si drží – a to je čas. Některé ukázky jsou natolik velké a dlouhé, že jsem vyzdvihl pouze koncový čas, kdy PC plně naběhl.

Na obrázcích nezohledňuji tzv. loader a dobu, kdy se spouští samotný HW počítače. Dění se odehrává zejména od zavaděče a značí dobu naběhnutí samotného OS až do úplného konce v grafickém prostředí.

Arch Linux jednoduchý desktop pro uživatele ve VirtualBoxu na NTB s procesorem Core i5, 8GB RAM, SSD – obrázek značí spuštění za 4 sekundy
Arch Linux a běžné i serverové služby na stolním PC Intel Xeon E3-1200 v3, 16GB RAM, SSD – obrázek značí spuštění za 4 sekundy
OpenSUSE jako server ve VirtualBoxu na NTB s procesorem Core i5, 8GB RAM, SSD – obrázek značí spuštění za 32 sekund
OpenSUSE jako server na PC Dell 8GB RAM, 2x 7200rpm, RAID – obrázek značí spuštění za 61 sekund

Mohu prohlásit, že OS Linux nabíhá na počítačích zhruba od 4 sekund až po minutu a v některých případech i téměř dvě minuty.