啟動耗時統(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占用率、進程等信息,并以圖形方式顯示分析結(jié)果,可用作指導優(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)到主應用程序啟動過程中的耗時
gpio+示波器
可以找一個在系統(tǒng)啟動過程中空閑的GPIO
,在適當位置設(shè)置GPIO
電平。
通過示波器抓取波形可以得到各階段耗時。
通常該方法被用來 測量整個啟動的耗時,或者各階段的耗時 ,該方法也是用的比較多的。
-
示波器
+關(guān)注
關(guān)注
113文章
6703瀏覽量
189215 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1416瀏覽量
41421 -
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213750
發(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)方法與應用說明
電機軟啟動有幾種方式_電機軟啟動最簡單的方法
Linux內(nèi)核常用的幾種鏡像文件

如何在內(nèi)核中啟動secondary cpu

評論