对于系统服务启动问题,systemd自带了一个很好的优化工具,名叫systemd-analyze。它支持很多个子命令,用于满足各种优化需求。最常用的要算blame子命令。使用这个子命令,可以按耗时多少列出所有后台服务,耗时最长的列在最上面。
比如,在幽兰代码本上运行这条命令后,可以看到一张包含111个服务的耗时排行榜。
geduer@ulan:~$ systemd-analyze blame
2.911s NetworkManager-wait-online.service
2.297s logrotate.service
2.047s NetworkManager.service
1.520s snapd.service
超过1秒钟的有上面4个,是值得优化的目标。小于20毫秒的有下面8个,它们是速度标兵。
19ms systemd-user-sessions.service
17ms sys-fs-fuse-connections.mount
16ms ifupdown-pre.service
14ms sys-kernel-config.mount
14ms modprobe@dm_mod.service
11ms plymouth-quit-wait.service
11ms rtkit-daemon.service
6ms snapd.socket
当不带任何子命令运行时,可以看到一个启动耗时简报,比如在幽兰上运行的结果如下:
geduer@ulan:~$ systemd-analyze
Startup finished in 3.783s (kernel) + 8.258s (userspace) = 12.042s
graphical.target reached after 7.980s in userspace.
上面结果的含义是Linux系统启动总共用时12秒,其中内核阶段占用3.8秒,用户空间的初始化耗时8.2秒。
附录1:双剑2镜像的耗时排行表(2024-12-10)
2.911s NetworkManager-wait-online.service
2.297s logrotate.service
2.047s NetworkManager.service
1.520s snapd.service
906ms dev-nvme0n1p2.device
756ms systemd-udev-trigger.service
692ms udisks2.service
623ms snapd.seeded.service
617ms blueman-mechanism.service
564ms dev-loop1.device
557ms dev-loop5.device
538ms apport.service
529ms dev-loop6.device
526ms dev-loop7.device
523ms dev-loop2.device
517ms dev-loop4.device
515ms dev-loop9.device
509ms power-profiles-daemon.service
506ms upower.service
506ms dev-loop8.device
495ms dev-loop3.device
486ms polkit.service
484ms accounts-daemon.service
484ms dev-loop0.device
477ms e2scrub_reap.service
452ms dev-loop11.device
438ms dev-loop12.device
432ms dev-loop10.device
398ms user@1000.service
394ms waydroid-container.service
380ms user@123.service
365ms systemd-rfkill.service
356ms rc-local.service
321ms systemd-logind.service
314ms apport-autoreport.service
296ms systemd-fsck@dev-disk-by\x2duuid-4800\x2d9122.service
252ms systemd-resolved.service
212ms systemd-journal-flush.service
210ms systemd-oomd.service
207ms avahi-daemon.service
199ms systemd-journald.service
195ms systemd-timesyncd.service
190ms networking.service
184ms ModemManager.service
177ms rsyslog.service
175ms snap-bare-5.mount
171ms snap-core22-1666.mount
167ms snap-core22-1720.mount
164ms lm-sensors.service
162ms snap-core24-493.mount
157ms snap-core24-612.mount
154ms snap-cups-1059.mount
149ms snap-cups-1069.mount
145ms dpkg-db-backup.service
144ms snap-gnome\x2d46\x2d2404-41.mount
142ms switcheroo-control.service
141ms dbus.service
140ms snap-gnome\x2d46\x2d2404-49.mount
134ms snap-gtk\x2dcommon\x2dthemes-1535.mount
133ms systemd-remount-fs.service
133ms systemd-tmpfiles-setup.service
126ms lxc-net.service
125ms snap-mesa\x2d2404-142.mount
121ms snap-snapd-21761.mount
117ms snap-snapd-23259.mount
115ms lightdm.service
115ms tmp.mount
111ms uefi_ext.mount
95ms systemd-udevd.service
92ms ssh.service
89ms systemd-fsck@dev-disk-by\x2duuid-4801\x2d6134.service
79ms kerneloops.service
73ms cups.service
70ms systemd-sysusers.service
69ms dev-disk-by\x2duuid-5256e7ae\x2d1d0b\x2d4006\x2d8cc0\x2d2cea0900bd03.swap
67ms wpa_supplicant.service
62ms dev-hugepages.mount
59ms dev-mqueue.mount
57ms modprobe@loop.service
56ms sys-kernel-debug.mount
55ms netperf.service
55ms boot.mount
55ms modprobe@efi_pstore.service
54ms openvpn.service
53ms sys-kernel-tracing.mount
51ms pangolin.service
50ms systemd-tmpfiles-setup-dev.service
45ms systemd-backlight@backlight:backlight.service
44ms kmod-static-nodes.service
44ms user-runtime-dir@123.service
44ms alsa-restore.service
42ms modprobe@configfs.service
41ms plymouth-read-write.service
38ms modprobe@drm.service
38ms systemd-random-seed.service
38ms systemd-sysctl.service
34ms systemd-update-utmp.service
33ms modprobe@fuse.service
31ms plymouth-start.service
31ms systemd-update-utmp-runlevel.service
27ms systemd-modules-load.service
26ms lxc.service
24ms user-runtime-dir@1000.service
19ms systemd-user-sessions.service
17ms sys-fs-fuse-connections.mount
16ms ifupdown-pre.service
14ms sys-kernel-config.mount
14ms modprobe@dm_mod.service
11ms plymouth-quit-wait.service
11ms rtkit-daemon.service
6ms snapd.socket
附录2:测试中的汉阳镜像的耗时排行表(2025-6-26)
geduer@ulan:~$ systemd-analyze blame
30.166s lxc.service
7.032s plymouth-quit-wait.service
1.348s NetworkManager.service
1.001s apport.service
953ms snapd.seeded.service
826ms snapd.service
814ms waydroid-container.service
730ms dev-mmcblk0.device
727ms e2scrub_reap.service
574ms udisks2.service
563ms accounts-daemon.service
561ms gnome-remote-desktop.service
394ms ModemManager.service
391ms power-profiles-daemon.service
386ms polkit.service
372ms avahi-daemon.service
336ms dbus.service
289ms switcheroo-control.service
268ms systemd-udev-trigger.service
259ms lighttpd.service
221ms upower.service
210ms user@1000.service
197ms blueman-mechanism.service
197ms systemd-resolved.service
185ms systemd-rfkill.service
170ms wpa_supplicant.service
160ms systemd-journald.service
153ms systemd-logind.service
153ms gdm.service
133ms systemd-udevd.service
125ms lxcfs.service
109ms cups.service
107ms qrtr-ns.service
93ms lxc-net.service
93ms colord.service
93ms pd-mapper.service
90ms packagekit.service
82ms set-mali-firmware.service
81ms netperf.service
70ms systemd-timesyncd.service
58ms plymouth-start.service
56ms systemd-tmpfiles-setup-dev-early.service
55ms systemd-binfmt.service
53ms kerneloops.service
53ms systemd-tmpfiles-setup.service
49ms alsa-restore.service
47ms systemd-sysctl.service
40ms systemd-backlight@backlight:backlight.service
39ms systemd-tmpfiles-setup-dev.service
35ms dev-hugepages.mount
34ms dev-mqueue.mount
32ms sys-kernel-debug.mount
31ms plymouth-read-write.service
30ms sys-kernel-tracing.mount
28ms systemd-modules-load.service
27ms systemd-journal-flush.service
25ms modprobe@fuse.service
24ms user-runtime-dir@1000.service
24ms modprobe@loop.service
23ms kmod-static-nodes.service
22ms systemd-random-seed.service
22ms modprobe@configfs.service
21ms modprobe@dm_mod.service
18ms sys-kernel-config.mount
17ms tmp.mount
17ms run-qemu.mount
16ms modprobe@drm.service
16ms rtkit-daemon.service
16ms modprobe@efi_pstore.service
15ms systemd-update-utmp.service
14ms systemd-user-sessions.service
13ms pangolin.service
13ms proc-sys-fs-binfmt_misc.mount
12ms systemd-remount-fs.service
10ms openvpn.service
4ms snapd.socket
上面列表中,用于容器的lxc服务用时超过30秒,原因是它以来的fuse驱动构建为ko,而且没有安装deb包,导致这个ko没有加载,安装deb包后这个问题便消失了
geduer@ulan:~$ systemd-analyze blame
2min 40ms snapd.seeded.service
6.556s apport-autoreport.service
1.660s docker.service
904ms lvm2-monitor.service
834ms udisks2.service
810ms dev-mmcblk0p3.device
800ms containerd.service
645ms accounts-daemon.service
433ms NetworkManager.service
376ms async.service
358ms avahi-daemon.service
346ms systemd-logind.service
339ms e2scrub_reap.service
336ms wpa_supplicant.service
326ms switcheroo-control.service
321ms systemd-machined.service
310ms systemd-resolved.service
291ms snapd.service
225ms lightdm.service
218ms systemd-journal-flush.service
206ms systemd-rfkill.service
196ms systemd-udevd.service
190ms plymouth-quit-wait.service
186ms upower.service
168ms ssh.service
157ms systemd-udev-trigger.service
149ms user@128.service
124ms user@1000.service
115ms apport.service
112ms systemd-journald.service
110ms rsyslog.service
94ms ntp.service
89ms networking.service
82ms kerneloops.service
81ms snapd.failure.service
66ms dev-hugepages.mount
58ms run-rpc_pipefs.mount
56ms polkit.service
53ms sys-kernel-debug.mount
52ms libvirtd.service
51ms libvirt-guests.service
48ms sys-kernel-tracing.mount
47ms atd.service
42ms systemd-sysctl.service
40ms blk-availability.service
39ms alsa-restore.service
38ms systemd-tmpfiles-setup.service
37ms systemd-tmpfiles-setup-dev.service
34ms colord.service
32ms binfmt-support.service
32ms kmod-static-nodes.service
31ms systemd-sysusers.service
30ms systemd-random-seed.service
30ms systemd-pstore.service
26ms modprobe@chromeos_pstore.service
26ms pppd-dns.service
26ms rpcbind.service
26ms plymouth-start.service
25ms rkaiq_3A.service
24ms modprobe@pstore_blk.service
24ms openvpn.service
23ms rc-local.service
23ms modprobe@pstore_zone.service
21ms systemd-modules-load.service
21ms systemd-update-utmp.service
19ms systemd-backlight@backlight:backlight.service
18ms systemd-user-sessions.service
18ms systemd-update-utmp-runlevel.service
18ms systemd-remount-fs.service
16ms user-runtime-dir@128.service
16ms proc-sys-fs-binfmt_misc.mount
15ms plymouth-read-write.service
12ms vsftpd.service
11ms user-runtime-dir@1000.service
11ms nfs-config.service
10ms sys-kernel-config.mount
8ms rtkit-daemon.service
8ms qemu-kvm.service
7ms sys-fs-fuse-connections.mount
7ms ifupdown-pre.service
4ms docker.socket
3ms libvirtd.socket
2ms snapd.socket
作者:Zhang Yinkui 创建时间:2024-12-10 10:08
最后编辑:Zhang Yinkui 更新时间:2025-06-26 10:59
最后编辑:Zhang Yinkui 更新时间:2025-06-26 10:59