systemd-analyze - Znajdź statystyki wydajności uruchamiania systemu w systemie Linux
Czy używasz Systemd System i Menedżera usług, a Twój system Linux uruchamia się dłużej lub po prostu chcesz wyświetlić raporty dotyczące wydajności uruchamiania systemu? Jeśli tak, trafiłeś we właściwe miejsce.
W tym artykule pokażemy, jak analizować statystyki wydajności uruchamiania systemu Linux za pomocą systemd-analyze, jednego z wielu narzędzi w ramach systemd do zarządzania systemem.
Przeczytaj także: Jak kontrolować usługi systemowe na zdalnym serwerze Linux
Aby uzyskać przegląd czasu uruchamiania systemu, możemy uruchomić polecenie systemd-analyze bez żadnych argumentów w następujący sposób. Wyświetli informacje o tym, ile czasu zajęło uruchomienie każdej usługi, co obejmuje czas potrzebny na uruchomienie jądra, initrd i przestrzeni użytkownika.
systemd-analyze
Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s
Jeśli chcesz wyświetlić listę wszystkich działających jednostek, posortowaną według czasu potrzebnego na inicjalizację (najwyższy czas na górze), używana jest w tym celu podkomenda obwiniania. Po uruchomieniu poniższego polecenia użyj [Enter], aby wyświetlić więcej usług na liście i q
, aby wyjść.
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
...
Jak widać z powyższych wyników, każda jednostka jest sortowana na podstawie czasu potrzebnego na uruchomienie, możesz po prostu dowiedzieć się, która usługa zajmuje więcej czasu podczas uruchamiania i przeanalizować problem.
Następnie możemy także wyświetlić drzewo łańcucha krytycznego czasowo dla docelowego celu domyślnego lub listę określonych jednostek za pomocą komendy pomocniczej łańcucha krytycznego, jak pokazano.
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
Na koniec przyjrzyjmy się jeszcze jednej ważnej komendzie, która pozwala na wygenerowanie graficznego (w formacie svg) szczegółów usług systemowych, które zostały uruchomione i o której godzinie, podkreślając czas ich inicjalizacji, w następujący sposób.
Aby zobaczyć wykres, upewnij się, że włączony jest tryb wyświetlania graficznego lub X-windows.
systemd-analyze plot > boot_analysis.svg
xviewer boot_analysis.svg
Wszystkie powyższe polecenia spowodują wydruk statystyk wydajności uruchamiania komputera lokalnego. Aby wyświetlić informacje ze zdalnego hosta przez ssh, użyj flagi -H
i określ dyrektywę username@host, jak pokazano.
systemd-analyze time -H [email
systemd-analyze blame -H [email
systemd-analyze critical-chain -H [email
systemd-analyze może być również użyte do znalezienia innych informacji o stanie i śledzeniu z systemu i systemd (menedżera usług) i nie tylko. Aby uzyskać więcej informacji, zobacz jego stronę podręcznika.
man systemd-analyze
Przeczytaj także: Jak zmienić poziomy działania (cele) w SystemD
To wszystko na teraz! Jeśli masz jakieś pytania lub chcesz się nimi podzielić, skorzystaj z poniższego formularza opinii, aby się z nami skontaktować.