systemd-analyze是一個分析啟動性能的工具,用於分析啟動時服務時間消耗。默認顯示啟動是內核和用戶空間的消耗時間:使用systemd-analyze plot > boot.svg生成一張啟動詳細信息矢量圖,然后用圖像瀏覽器或者網頁瀏覽器打開查看 。
[root@localhost~]#systemd-analyze Startupfinishedin818ms(kernel)+6.240s(initrd)+32.979s(userspace)=40.038s 和使用systemd-analyzetime命令的效果一樣。
(1)查看詳細的每個服務消耗的啟動時間
通過systemd-analyzeblame命令查看詳細的每個服務消耗的啟動時間:
[root@localhost~]#systemd-analyzeblame 30.852siscsi.service 16.994skdump.service 10.871sboot.mount ... 103mssystemd-sysctl.service 101msdatapool.mount
(2)查看嚴重消耗時間的服務樹狀表
systemd-analyzecritical-chain命令打印嚴重消耗時間的服務樹狀表,按照啟動消耗的時間進行排序,時間消耗越多,越排到前面。@之后是服務激活或者啟動的時間,+號之后是服務啟動消耗的時間。個人理解@是從系統引導到服務啟動起來的時間,是一個相對時間消耗,+是服務啟動消耗的時間,是一個絕對時間消耗。
[root@localhost~]#systemd-analyzecritical-chain Thetimeaftertheunitisactiveorstartedisprintedafterthe"@"character. Thetimetheunittakestostartisprintedafterthe"+"character. multi-user.target@32.976s └─kdump.service@15.981s+16.994s └─network.target@15.980s └─NetworkManager.service@15.069s+54ms └─firewalld.service@14.532s+535ms └─basic.target@14.532s └─sockets.target@14.532s └─dbus.socket@14.532s └─sysinit.target@14.527s └─systemd-update-utmp.service@14.524s+2ms └─systemd-tmpfiles-setup.service@14.456s+67ms
(3)打印分析圖及其他命令
systemd-analyzeplot打印一個svg格式的服務消耗時間表,通過瀏覽器可以以圖形的方式展示,非常直觀:
[root@localhost~]#systemd-analyze plot>plot.svg systemd-analyzedot用分隔符產生當前服務 systemd-analyzedump以友好方式顯示當前服務狀態 6systemd文件類型及存放位置 systemd配置文件被稱為unit單元,根據類型不同,以不同的擴展名結尾。 .service系統服務; .target一組系統服務; .automount自動掛載點; .device能被內核識別的設備; .mount掛載點; .path文件系統的文件或者目錄; .scope外部創建的進程; .slice一組分層次管理的系統進程; .snapshot系統服務狀態管理; .socket進程間通訊套接字; .swap定義swap文件或者設備; .timer定義定時器。
最后再總結一下:
# 查看啟動耗時
$ systemd-analyze
# 查看每個服務的啟動耗時
$ systemd-analyze blame
# 顯示瀑布狀的啟動過程流
$ systemd-analyze critical-chain
# 顯示指定服務的啟動流
$ systemd-analyze critical-chain atd.service
查看所有的服務
systemctl list-units --type=service