systemd-analyze: Linux系统启动性能统计和分析
你是否正在使用systemd系统和服务管理器,并且Linux系统需要很长的启动时间?或者你只是想查看有关系统启动性能的报告?那么systemd-analyze可以来帮助我们来统计和分析这些性能。systemd-analyze是systemd下用于系统管理的众多实用程序之一,本文中,我们将向你展示如何使用systemd-analyze来分析Linux系统启动性能统计信息。要大致了解系统启动时间,我.
你是否正在使用systemd
系统和服务管理器,并且Linux
系统需要很长的启动时间?或者你只是想查看有关系统启动性能的报告?那么systemd-analyze
可以来帮助我们来统计和分析这些性能。systemd-analyze
是systemd
下用于系统管理的众多实用程序之一,本文中,我们将向你展示如何使用systemd-analyze
来分析Linux
系统启动性能统计信息。
要大致了解系统启动时间,我们可以运行systemd-analyze
命令,不带任何参数,如下所示。它将列出有关每个服务启动所需时间的信息,包括启动时内核和用户空间所花费的时间。
$ systemd-analyze
Startup finished in 4.454s (kernel) + 5.155s (userspace) = 9.609s
graphical.target reached after 5.144s in userspace
如果要查看所有正在运行的单元的列表,并且按照它们初始化所需的时间(最长时间)排序,我们可以使用blame
子命令。运行以下命令后,使用Enter
查看列表中的更多服务并q
退出。
$ systemd-analyze blame
找出每个单元开始的时间
5.923s dev-sda1.device
5.543s dev-loop14.device
5.478s dev-loop15.device
5.121s dev-loop13.device
2.442s snapd.service
1.163s snapd.seeded.service
1.036s udisks2.service
964ms networkd-dispatcher.service
930ms fwupd.service
883ms apparmor.service
758ms ModemManager.service
677ms accounts-daemon.service
581ms systemd-udev-trigger.service
538ms systemd-journald.service
530ms NetworkManager-wait-online.service
528ms grub-common.service
514ms speech-dispatcher.service
499ms dev-loop4.device
493ms networking.service
481ms dev-loop7.device
474ms avahi-daemon.service
444ms dev-loop2.device
433ms dev-loop0.device
418ms NetworkManager.service
415ms dev-loop1.device
415ms systemd-modules-load.service
414ms dev-loop5.device
396ms dev-loop6.device
393ms dev-loop3.device
363ms dev-loop8.device
344ms systemd-random-seed.service
从上面的输出中可以看到,每个单元都是基于花费的时间进行排序的,你可以简单地找出启动时哪个服务花费更长的时间并分析问题。
接下来,我们还可以使用critical-chain
子命令查看默认目标的时间关键链的树或指定单元的列表,如图所示。
systemd-analyze critical-chain
打印默认目标的时间关键链的树
$ 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 @5.144s
└─multi-user.target @5.144s
└─snapd.seeded.service @3.980s +1.163s
└─snapd.service @1.536s +2.442s
└─basic.target @1.464s
└─sockets.target @1.464s
└─snapd.socket @1.457s +6ms
└─sysinit.target @1.454s
└─apparmor.service @569ms +883ms
└─local-fs.target @511ms
└─run-user-121.mount @2.988s
└─swap.target @845ms
└─swapfile.swap @364ms +319ms
└─systemd-remount-fs.service @325ms +30ms
└─systemd-journald.socket @283ms
└─system.slice @283ms
└─-.slice @279ms
最后,让我们看一个更重要的子命令,该子命令可以产生已启动的系统服务的图形化(svg
格式)详细信息,并在何时突出显示其初始化时间,如下所示。
确保已启用图形显示模式或x窗口以查看图。
$ systemd-analyze plot > boot.svg
$ google-chrome boot.svg
以上所有命令将打印本地计算机的启动性能统计信息。要通过ssh
从远程主机查看相关信息,可以使用-H
标志并指定username@host
指令,如下所示。
$ systemd-analyze time -H iot@192.168.1.10
$ systemd-analyze blame -H iot@192.168.1.10
$ systemd-analyze critical-chain -H iot@192.168.1.10
systemd-analyze
还可以用于从system
和systemd
等中查找其他状态和跟踪信息,有关更多信息,请参见其手册页。
$ man systemd-analyze
更多推荐
所有评论(0)