在本文中,我们将向您展示如何使用systemd-analyze来分析Linux系统启动性能统计信息,systemd-analyze是systemd下用于系统管理的众多实用程序之一。
要大致了解系统启动时间,我们可以运行systemd-analyze命令,不带任何参数,如下所示。它将列出有关每个服务启动所需时间的信息,包括启动时内核,initrd和用户空间所花费的时间。
# systemd-analyze
Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s
如果要查看每个启动单元所花的启动时间,请使用blame参数。运行以下命令后,使用[Enter]查看列表中的更多获取按q
退出。
# systemd-analyze blame
17.729s snapd.service
17.077s nv.service
14.437s NetworkManager.service
14.206s udisks2.service
10.990s networking.service
10.025s accounts-daemon.service
8.308s polkit.service
1.967s grub-common.service
1.963s dev-mmcblk0p1.device
572ms apport.service
552ms nvfb-early.service
547ms ssh.service
493ms resolvconf-pull-resolved.service
480ms systemd-udev-trigger.service
456ms systemd-logind.service
451ms wpa_supplicant.service
403ms nvphs.service
384ms keyboard-setup.service
375ms systemd-timesyncd.service
336ms systemd-resolved.service
331ms rsyslog.service
281ms lightdm.service
279ms ubuntu-fan.service
277ms systemd-journald.service
274ms nvfb.service
236ms speech-dispatcher.service
226ms systemd-udevd.service
221ms kerneloops.service
201ms user@1000.service
193ms avahi-daemon.service
167ms snapd.seeded.service
150ms systemd-fsck@dev-sda8.service
140ms systemd-tmpfiles-setup-dev.service
133ms pppd-dns.service
111ms rpcbind.service
108ms setvtrgb.service
100ms systemd-random-seed.service
96ms dns-clean.service
95ms systemd-tmpfiles-setup.service
88ms nvpmodel.service
83ms systemd-sysctl.service
77ms resolvconf.service
73ms systemd-update-utmp.service
72ms systemd-user-sessions.service
66ms containerd.service
65ms media.mount
63ms plymouth-read-write.service
61ms home-user-root.mount
60ms systemd-remount-fs.service
58ms dev-hugepages.mount
54ms dev-mqueue.mount
49ms systemd-modules-load.service
46ms run-rpc_pipefs.mount
46ms systemd-fsck@dev-sda1.service
46ms systemd-update-utmp-runlevel.service
44ms sys-kernel-config.mount
36ms sys-kernel-debug.mount
35ms console-setup.service
33ms systemd-journal-flush.service
24ms nfs-config.service
16ms snapd.socket
13ms plymouth-quit-wait.service
10ms docker.socket
从上面的输出中可以看到,每个单元都是基于花费的时间进行排序的,您可以简单地找出启动时哪个服务花费更长的时间并分析问题。
最后,让我们看一个更重要的子命令,该子命令允许生成已启动的系统服务的图形化(svg格式)详细信息,并在何时突出显示其初始化时间,如下所示。
# systemd-analyze plot > boot_analysis.svg
由于systemd的单元很多是并行启动的,这样可以更好的分析系统启动时在哪里耗费了更多的时间。
如果要通过ssh从远程主机查看信息,请使用该-H
标志并指定username @ host指令。
# systemd-analyze time -H tecmint@192.168.56.5
# systemd-analyze blame -H tecmint@192.168.56.5
# systemd-analyze critical-chain -H tecmint@192.168.56.5