轉自:https://www.cnblogs.com/xingmuxin/p/11413784.html
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. [email protected] └─[email protected]+16.994s └─[email protected] └─[email protected]+54ms └─[email protected]+535ms └─[email protected] └─[email protected] └─[email protected] └─[email protected] └─[email protected]+2ms └─[email protected]+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