systemd-analyze Linux 启动性能分析

概述启动

如果没有像该命令传递子命令,默认是 systemd-analyze time

-> pi@raspberrypi ☃ ❄ ⛄~ ☺ # systemd-analyze Startup finished in 2.679s (kernel) + 29.108s (userspace) = 31.787sgraphical.target reached after 29.058s in userspace

初始化时间

~ ☺ # systemd-analyze blame | head -n 10 42.4°C(0s)[9:35:48] 24.758s apt-daily.service 16.329s docker.service 11.829s webmin.service 9.005s apt-daily-upgrade.service 7.322s hciuart.service 6.455s containerd.service 4.229s nmbd.service 3.625s udisks2.service 3.005s qbittorrent.service 2.888s rpi-eeprom-update.service-> pi@raspberrypi ☃ ❄ ⛄~ ☺ # ls /lib/systemd/system/ | grep apt-daily apt-daily.serviceapt-daily.timerapt-daily-upgrade.serviceapt-daily-upgrade.timer-> pi@raspberrypi ☃ ❄ ⛄~ ☺ # sudo systemctl stop apt-daily.servicesudo systemctl stop apt-daily.timersudo systemctl stop apt-daily-upgrade.servicesudo systemctl stop apt-daily-upgrade.timersudo systemctl disable apt-daily.servicesudo systemctl disable apt-daily.timersudo systemctl disable apt-daily-upgrade.servicesudo systemctl disable apt-daily-upgrade.timer

关键链

@ 的数字表示单元激活开始启动所使用的绝对秒数。前面有 + 的数字显示单元启动所需的时间

-> pi@raspberrypi ☃ ❄ ⛄~ ☺ # 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 @29.058s└─multi-user.target @29.058s └─docker.service @12.726s +16.329s └─containerd.service @6.267s +6.455s └─network.target @6.223s └─wpa_supplicant.service @5.389s +820ms └─dbus.service @5.276s └─basic.target @5.225s └─sockets.target @5.224s └─docker.socket @5.204s +17ms └─sysinit.target @5.191s └─sys-fs-fuse-connections.mount @19.413s +8ms └─systemd-modules-load.service @1.166s +241ms └─systemd-journald.socket @1.137s └─-.mount @1.014s └─system.slice @1.014s └─-.slice @1.014s

系统状态

显示用户管理器的内部状态

-> pi@raspberrypi ☃ ❄ ⛄~ 141☺ # systemd-analyze dump | head -n 20 Timestamp kernel: Thu 1970-01-01 08:00:00 CSTTimestamp userspace: Thu 1970-01-01 08:00:02 CSTTimestamp finish: Fri 2022-04-01 23:42:35 CSTTimestamp security-start: Thu 1970-01-01 08:00:02 CSTTimestamp security-finish: Thu 1970-01-01 08:00:02 CSTTimestamp generators-start: Thu 2019-02-14 18:11:58 CSTTimestamp generators-finish: Thu 2019-02-14 18:11:58 CSTTimestamp units-load-start: Thu 2019-02-14 18:11:58 CSTTimestamp units-load-finish: Thu 2019-02-14 18:11:58 CST-> Unit sys-devices-virtual-net-veth0405364.device: Description: /sys/devices/virtual/net/veth0405364 Instance: n/a Unit Load State: loaded Unit Active State: active State Change Timestamp: Fri 2022-04-01 23:42:30 CST Inactive Exit Timestamp: Fri 2022-04-01 23:42:30 CST Active Enter Timestamp: Fri 2022-04-01 23:42:30 CST Active Exit Timestamp: n/a Inactive Enter Timestamp: n/a May GC: no

分析图表

systemd-analyze plot > /tmp/bootup.svgsystemd-analyze dot | dot -Tsvg > /tmp/test.svg

单元文件检查

systemd-analyze verify /etc/systemd/system/backup.service