啟動耗時統(tǒng)計
printk time
打開kernel配置:
kernel hacking --- >
[*] Show timing information on printks
打開后,每個printk的前面都會顯示時間戳
主要用來測量內(nèi)核啟動過程各個階段的耗時
initcall_debug
眾所周知,kernel啟動時會執(zhí)行不同等級的initcall,而每個initcall的耗時也是可以統(tǒng)計的。
在kernel的cmdline中加入?yún)?shù)initcall_debug=1:
initcall_debug=1
setargs_nand=setenv bootargs console=${console} earlyprintk=${earlyprintk} root=${nand_root} initcall_debug=${initcall_debug} init=${init}
開啟后,就能打印每個initcall函數(shù)調(diào)用及耗時。
bootgraph
內(nèi)核自帶了一個工具用于統(tǒng)計啟動時間:scripts/bootgraph.pl
使用該工具需要打開內(nèi)核配置CONFIG_PRINTK_TIME=y,并且在cmdline中加上"initcall_debug=1"
系統(tǒng)啟動之后,執(zhí)行命令:
dmesg|perl $(kernel_dir)/script/bootgraph.pl > out.svg
用瀏覽器查看out.svg文件,可以看到內(nèi)核啟動過程中各個階段的耗時。
這個工具有點類似于perf的火焰圖,可以統(tǒng)計啟動各階段的耗時。
bootchart
除了內(nèi)核自帶的工具,也有開源的工具可用:bootchart。
bootchart是一個用于linux啟動過程性能分析的開源軟件工具,在系統(tǒng)啟動過程自動收集CPU占用率、進(jìn)程等信息,并以圖形方式顯示分析結(jié)果,可用作指導(dǎo)優(yōu)化系統(tǒng)啟動過程。
- 修改
kernel cmdline。將其中的init修改為“init=/sbin/bootchartd”。 - 收集信息。
bootchartd會從/proc/stat,/proc/diskstat,/proc/[pid]/stat中采集信息,經(jīng)過處理后保存為bootchart.tgz文件 - 轉(zhuǎn)換圖片。在
pc上通過pybootchartgui.py工具將bootchart.tgz轉(zhuǎn)換為bootchart.png,方便分析
最后也會成圖片供做分析,例如:

bootchar主要用來測量掛載文件系統(tǒng)到主應(yīng)用程序啟動過程中的耗時
gpio+示波器
可以找一個在系統(tǒng)啟動過程中空閑的GPIO,在適當(dāng)位置設(shè)置GPIO電平。
通過示波器抓取波形可以得到各階段耗時。
通常該方法被用來 測量整個啟動的耗時,或者各階段的耗時 ,該方法也是用的比較多的。
-
示波器
+關(guān)注
關(guān)注
113文章
7075瀏覽量
196048 -
內(nèi)核
+關(guān)注
關(guān)注
4文章
1467瀏覽量
42873 -
Linux
+關(guān)注
關(guān)注
88文章
11759瀏覽量
219013
發(fā)布評論請先 登錄
請問DM8168上怎么統(tǒng)計算法程序的耗時?
幾種Linux下后臺啟動jar包的方法介紹
內(nèi)核是如何啟動的
Cortex-M3內(nèi)核HardFault錯誤調(diào)試定位方法有哪幾種
分辨矩陣法耗時推算
用戶與內(nèi)核空間數(shù)據(jù)交換的方式之一:內(nèi)核啟動參數(shù)
內(nèi)核級HOOK的幾種實現(xiàn)方法與應(yīng)用說明
電機(jī)軟啟動有幾種方式_電機(jī)軟啟動最簡單的方法
Linux內(nèi)核常用的幾種鏡像文件
如何在內(nèi)核中啟動secondary cpu
幾種統(tǒng)計內(nèi)核啟動耗時的方法
評論