啟動耗時統計
printk time
打開kernel配置:
kernel hacking --- >
[*] Show timing information on printks
打開后,每個printk的前面都會顯示時間戳
主要用來測量內核啟動過程各個階段的耗時
initcall_debug
眾所周知,kernel
啟動時會執行不同等級的initcall
,而每個initcall
的耗時也是可以統計的。
在kernel
的cmdline
中加入參數initcall_debug=1
:
initcall_debug=1
setargs_nand=setenv bootargs console=${console} earlyprintk=${earlyprintk} root=${nand_root} initcall_debug=${initcall_debug} init=${init}
開啟后,就能打印每個initcall
函數調用及耗時。
bootgraph
內核自帶了一個工具用于統計啟動時間:scripts/bootgraph.pl
使用該工具需要打開內核配置CONFIG_PRINTK_TIME=y
,并且在cmdline
中加上"initcall_debug=1
"
系統啟動之后,執行命令:
dmesg|perl $(kernel_dir)/script/bootgraph.pl > out.svg
用瀏覽器查看out.svg
文件,可以看到內核啟動過程中各個階段的耗時。
這個工具有點類似于perf
的火焰圖,可以統計啟動各階段的耗時。
bootchart
除了內核自帶的工具,也有開源的工具可用:bootchart
。
bootchart是一個用于linux啟動過程性能分析的開源軟件工具,在系統啟動過程自動收集CPU占用率、進程等信息,并以圖形方式顯示分析結果,可用作指導優化系統啟動過程。
- 修改
kernel cmdline
。將其中的init
修改為“init=/sbin/bootchartd
”。 - 收集信息。
bootchartd
會從/proc/stat
,/proc/diskstat
,/proc/[pid]/stat
中采集信息,經過處理后保存為bootchart.tgz
文件 - 轉換圖片。在
pc
上通過pybootchartgui.py
工具將bootchart.tgz
轉換為bootchart.png
,方便分析
最后也會成圖片供做分析,例如:
bootchar
主要用來測量掛載文件系統到主應用程序啟動過程中的耗時
gpio+示波器
可以找一個在系統啟動過程中空閑的GPIO
,在適當位置設置GPIO
電平。
通過示波器抓取波形可以得到各階段耗時。
通常該方法被用來 測量整個啟動的耗時,或者各階段的耗時 ,該方法也是用的比較多的。
-
示波器
+關注
關注
113文章
6279瀏覽量
185604 -
內核
+關注
關注
3文章
1381瀏覽量
40363 -
Linux
+關注
關注
87文章
11336瀏覽量
210098
發布評論請先 登錄
相關推薦
評論