使用systemd-analyze 工具來分析各個服務進程的啟動性能


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM