[*] 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)啟后,就" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

幾種統(tǒng)計(jì)內(nèi)核啟動(dòng)耗時(shí)的方法

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux充電站 ? 作者: Vincent ? 2023-10-04 15:01 ? 次閱讀

啟動(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ì)的。

kernelcmdline中加入參數(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)類似于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í) ,該方法也是用的比較多的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 示波器
    +關(guān)注

    關(guān)注

    113

    文章

    6173

    瀏覽量

    184357
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1362

    瀏覽量

    40194
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11215

    瀏覽量

    208740
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)DM8168上怎么統(tǒng)計(jì)算法程序的耗時(shí)?

    大家好!請(qǐng)問(wèn),CCSv6單獨(dú)連接DM8168上的DSP C674x后,已經(jīng)可以運(yùn)行算法程序,不過(guò)怎么統(tǒng)計(jì)該算法程序的耗時(shí)?
    發(fā)表于 02-20 10:45

    幾種Linux下后臺(tái)啟動(dòng)jar包的方法介紹

    ,但是窗口被鎖定,當(dāng)我們關(guān)閉窗口或Ctrl + C打斷程序運(yùn)行時(shí),程序就會(huì)退出,這肯定不是我們想要的,下面我介紹幾種Linux下后臺(tái)啟動(dòng)jar包的方法
    發(fā)表于 07-22 08:02

    統(tǒng)計(jì)的學(xué)習(xí)方法

    統(tǒng)計(jì)學(xué)習(xí)方法感知機(jī)
    發(fā)表于 07-15 10:33

    內(nèi)核是如何啟動(dòng)

    UbuntuLTS16.04_x64系統(tǒng) *參考資料:《嵌入式Linux應(yīng)用開(kāi)發(fā)手冊(cè)》*/目錄內(nèi)核啟動(dòng)流程分析之編譯體驗(yàn)與配置1、解壓縮2、打補(bǔ)丁3、配置3.1 方法一:修改...
    發(fā)表于 12-20 07:15

    Cortex-M3內(nèi)核HardFault錯(cuò)誤調(diào)試定位方法有哪幾種

    STM32程序進(jìn)入HardFault_Handler故障的原因有哪些?Cortex-M3內(nèi)核HardFault錯(cuò)誤調(diào)試定位方法有哪幾種
    發(fā)表于 01-27 07:03

    分辨矩陣法耗時(shí)推算

    分辨矩陣法耗時(shí)推算:針對(duì)粗集理論的分辨矩陣方法求解知識(shí)約簡(jiǎn)過(guò)程中時(shí)空性能上存在的問(wèn)題,提出分辨矩陣法耗時(shí)推算的原理和算法,包括2 個(gè)耗時(shí)段的推算及推算結(jié)果的可靠
    發(fā)表于 10-17 23:06 ?17次下載

    幾種啟動(dòng)電路圖

    幾種啟動(dòng)電路圖
    發(fā)表于 01-20 22:44 ?5383次閱讀
    <b class='flag-5'>幾種</b>軟<b class='flag-5'>啟動(dòng)</b>電路圖

    linux內(nèi)核啟動(dòng)內(nèi)核解壓過(guò)程分析

    linux啟動(dòng)時(shí)內(nèi)核解壓過(guò)程分析,一份不錯(cuò)的文檔,深入了解內(nèi)核必備
    發(fā)表于 03-09 13:39 ?1次下載

    Linux內(nèi)核文檔:ARM-啟動(dòng)

    Linux內(nèi)核文檔:ARM-啟動(dòng)
    發(fā)表于 10-30 10:15 ?6次下載
    Linux<b class='flag-5'>內(nèi)核</b>文檔:ARM-<b class='flag-5'>啟動(dòng)</b>

    用戶與內(nèi)核空間數(shù)據(jù)交換的方式之一:內(nèi)核啟動(dòng)參數(shù)

    Linux 提供了一種通過(guò) bootloader 向其傳輸啟動(dòng)參數(shù)的功能,內(nèi)核開(kāi)發(fā)者可以通過(guò)這種方式來(lái)向內(nèi)核傳輸數(shù)據(jù),從而控制內(nèi)核啟動(dòng)行為。
    發(fā)表于 05-14 15:42 ?486次閱讀

    內(nèi)核級(jí)HOOK的幾種實(shí)現(xiàn)方法與應(yīng)用說(shuō)明

    實(shí)現(xiàn)內(nèi)核級(jí)HOOK 對(duì)于攔截、分析、跟蹤系統(tǒng)內(nèi)核起著致關(guān)重要的作用。實(shí)現(xiàn)的方法不同意味著應(yīng)用側(cè)重點(diǎn)的不同。如想要攔截NATIVE API 那么可能常用的就是HOOKSERVICE TABLE 的
    發(fā)表于 11-10 17:35 ?5次下載

    電機(jī)軟啟動(dòng)幾種方式_電機(jī)軟啟動(dòng)最簡(jiǎn)單的方法

    電機(jī)軟啟動(dòng)是一種通過(guò)逐漸升高電機(jī)電壓和電流,減小電機(jī)啟動(dòng)時(shí)的電流沖擊,保護(hù)電機(jī)和電網(wǎng),提高電機(jī)的使用壽命和運(yùn)行效率的控制方式。常見(jiàn)的電機(jī)軟啟動(dòng)方式包括以下幾種:   電壓降低
    發(fā)表于 03-09 09:35 ?9555次閱讀

    Linux內(nèi)核常用的幾種鏡像文件

    簡(jiǎn)述幾種常用的內(nèi)核鏡像文件:vmlinux、Image、zImage、bzImage、uImage、bootpImage、XIPImage等等。
    發(fā)表于 06-23 11:49 ?1.2w次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>常用的<b class='flag-5'>幾種</b>鏡像文件

    Linux內(nèi)核啟動(dòng)流程(下)

    本篇是通用內(nèi)核啟動(dòng)階段,一般是C語(yǔ)言實(shí)現(xiàn)。
    發(fā)表于 06-23 14:08 ?510次閱讀
    Linux<b class='flag-5'>內(nèi)核</b><b class='flag-5'>啟動(dòng)</b>流程(下)

    如何在內(nèi)核啟動(dòng)secondary cpu

    啟動(dòng)secondary cpu 內(nèi)核啟動(dòng)secondary cpu之前當(dāng)然需要為其準(zhǔn)備好執(zhí)行環(huán)境,因?yàn)?b class='flag-5'>內(nèi)核中cpu最終都將由調(diào)度器管理,故此時(shí)調(diào)度子系統(tǒng)應(yīng)該要初始化完成。 同時(shí)cpu
    的頭像 發(fā)表于 12-05 15:46 ?516次閱讀
    如何在<b class='flag-5'>內(nèi)核</b>中<b class='flag-5'>啟動(dòng)</b>secondary cpu