systemd-analyze – 檢視 Linux 啟動時間統計

如何 Linux 是使用 systemd 作為服務管理, 可以用內建的 systemd-analyze 指令, 檢查每一個啟動的服務需要多少時間開啟。

直接輸入 systemd-analyze 指令, 不加入任何參數, 會印出系統啟動時間的概覽, 例如:

# systemd-analyze
Startup finished in 1.685s (kernel) + 2.306s (initrd) + 43.588s (userspace) = 47.580s

上面列出了 kernel, initrd 及 userspace 的啟動時間, 最後將幾個時間相加的整體啟動時間。

要檢查每一個服務的啟動時間, 並按所需啟動時間由高至低排序, 可以加入 blame 參數, 這樣可以找出那一個服務造成開機緩慢, 例如:

# systemd-analyze blame

輸出例子如下:

25.634s kdump.service
21.346s sendmail.service
7.898s network.service
5.775s NetworkManager-wait-online.service
3.389s mariadb.service
1.605s named.service
1.357s dev-mapper-centos\x2droot.device
1.130s snmpd.service
1.064s tuned.service
676ms httpd.service
674ms lvm2-monitor.service
563ms systemd-tmpfiles-setup-dev.service
518ms NetworkManager.service
492ms lvm2-pvscan@8:2.service
334ms rhel-readonly.service
330ms home.mount
305ms var.mount
300ms fail2ban.service
257ms sshd.service
206ms systemd-sysctl.service
188ms tmp.mount
186ms systemd-logind.service
184ms named-setup-rndc.service
181ms sm-client.service
171ms backup.mount
170ms rsyslog.service
157ms systemd-tmpfiles-clean.service
147ms systemd-udevd.service
133ms boot.mount
129ms systemd-journald.service
125ms polkit.service
……

另一個用法是以樹狀形式檢查啟動的服務:


# systemd-analyze critical-chain
multi-user.target @39.664s
└─sm-client.service @39.290s +181ms
└─sendmail.service @17.943s +21.346s
└─network.target @17.922s
└─network.service @10.023s +7.898s
└─NetworkManager-wait-online.service @4.246s +5.775s
└─NetworkManager.service @3.727s +518ms
└─dbus.service @3.549s
└─basic.target @3.544s
└─paths.target @3.544s
└─brandbot.path @3.544s
└─sysinit.target @3.543s
└─systemd-update-utmp.service @3.516s +26ms
└─auditd.service @3.423s +91ms
└─systemd-tmpfiles-setup.service @3.331s +90ms
└─rhel-import-state.service @3.284s +45ms
└─local-fs.target @3.242s
└─home.mount @2.911s +330ms
└─dev-mapper-centos\x2dhome.device @2.909s

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.