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

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