systemd中,提供了系统引导的性能分析工具,可以查看系统的引导时间,可以具体到每个服务。
查看系统引导的整体时间
1
2
3
# systemd-analyze time
Startup finished in 11min 4.279s (firmware) + 11.015s (loader) + 5.800s (kernel) + 14.109s (userspace) = 11min 35.204s
graphical.target reached after 14.088s in userspace
查看系统引导过程中每个单元的时间占用情况,可以有针对性的进行优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ systemd-analyze blame
11min 10.655s fstrim.service
6.203s NetworkManager-wait-online.service
5.632s dev-nvme1n1p2.device
3.036s apt-daily-upgrade.service
2.488s fwupd-refresh.service
1.637s snapd.service
1.043s apt-daily.service
1.035s xrdp.service
907ms docker.service
832ms systemd-udev-trigger.service
552ms man-db.service
307ms ua-timer.service
291ms logrotate.service
270ms systemd-journald.service
249ms udisks2.service
232ms data.mount
219ms snap-gtk\x2dcommon\x2dthemes-1535.mount
217ms networkd-dispatcher.service
213ms snap-gtk\x2dcommon\x2dthemes-1519.mount
...
...
注意,这里列出的时间可能是“并行”的,即两个服务可能同时初始化,因此初始化它们所花费的时间要比两个单独时间的总和少得多。 对于启动时间过长的,可以优化或直接禁用掉,以加快启动。
还可以输出图片格式,直接以图形化查看
1
2
$ systemd-analyze plot > plot.svg
$ eog plot.svg
可以直接查看 plot.svg图片。
另外,有个
bootchart
工具可以查看引导过程中的细节,CPU和IO的使用情况。可以和systemd-analyze plot
配合使用