之前小弟一直在宣傳推廣火焰圖,結果是很多童鞋凡事都用火焰圖。說實話,火焰圖特別適合分析運行時熱點(無論是on-cpu、off-cpu、還是內(nèi)存等,火焰圖的想象力可以無窮放大),但是你要分析一個的如果是一個時序問題,比如系統(tǒng)啟動的慢、一個軟件啟動的慢,用火焰圖固然可能有一點幫助,但是幫助肯定很微妙。
因為這種某個過程慢的問題,是一個時序問題。不是一個運行時熱點的問題,所以你最重要的是畫出來你的這個過程的時序圖。這里面說不定有I/O的牽絆,說不定就是狂占CPU,說不定誰傻不拉幾地在sleep。
Linux界有一個殺手級分析Linux本身啟動慢的工具,叫做bootchart,它其實把啟動過程中進程的IO,CPU占用情況進行了描述。注意這類圖都有一個共同特點,橫軸是時間,縱軸是CPU、線程等的狀態(tài)(運行、睡眠、IO什么的)。
bootchart確實有利于分析開機過程,但是你平時某個軟件啟動慢呢?或者更廣泛地說,某個特定過程特別慢呢?或者更加更加廣泛地說,我寫的程序在系統(tǒng)里面是怎么在運行,幾個線程怎么在跑?我們則要描繪出它的時序圖。
這個時候,我們可以用perf的timechart,比如,下面我們寫一個很簡單的包含了2個線程周期循環(huán)做事情和睡眠的代碼:
我們運行上面這個a.out,下面我們用perf錄制系統(tǒng)的sched情況:
~$ sudo perf sched record -a^C[ perf record: Woken up 1 times to write data ][perfrecord:Capturedandwrote1.909MBperf.data(9039samples)]
接下來生成timechart:
~$ sudo perf timechartWritten6.4secondsoftracetooutput.svg.
我們用firefox打開這個時序圖:
時序圖上我們看到了我的8個CPU的運行情況,以及a.out中2個線程一會兒藍色(running)一會灰色(sleeping)的情況。我們看到,系統(tǒng)差不多在用CPU2和CPU7跑我們a.out里面的2個占用CPU比較高線程。
不過,這類工具里面壓軸的不是perf timechart,說實話,有點太粗糙了!我們來看看大名鼎鼎的內(nèi)核鯊魚——kernelshark。
下面我們用trace-cmd來錄制sched相關的trace點:
~$ sudo trace-cmd record -e 'sched_wakeup*' -e sched_switch -e 'sched_migrate*'Hit Ctrl^C to stop recording^CCPU0 data recorded at offset=0x60e000 61440 bytes in sizeCPU1 data recorded at offset=0x61d000 184320 bytes in sizeCPU2 data recorded at offset=0x64a000 24576 bytes in sizeCPU3 data recorded at offset=0x650000 12288 bytes in sizeCPU4 data recorded at offset=0x653000 12288 bytes in sizeCPU5 data recorded at offset=0x656000 86016 bytes in sizeCPU6 data recorded at offset=0x66b000 172032 bytes in sizeCPU7 data recorded at offset=0x69500028672bytesinsize
用kernelshark來打開錄制的點:
~$ kernelshark trace.datLoading"trace.dat"
看到下面的圖形界面:
我們可以在UI上面進行各種操作,比如我們關注a.out,我們就選擇task:
我們得到這樣的視圖:
比如我圖上畫的那個點,a.out的顏色發(fā)生了變化,而下面的文字則表達了發(fā)生變化的原因是調(diào)度,調(diào)度的目標是swapper,這個調(diào)度點發(fā)生在CPU4上面:
如果你期待的是一個橫軸是時間,縱軸是每個線程、CPU在某個時間段里面在干什么的圖,kernelshark,你當然值得擁有。
原文標題:宋寶華:當Linux內(nèi)核遭遇鯊魚—kernelshark
文章出處:【微信公眾號:Linuxer】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
-
Linux
+關注
關注
87文章
11345瀏覽量
210418
原文標題:宋寶華:當Linux內(nèi)核遭遇鯊魚—kernelshark
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
電池(包級)測試系統(tǒng)的技術原理和應用
汽車級PMIC在BDU和PDU中的應用分析
![汽車<b class='flag-5'>級</b>PMIC在BDU和PDU中的應用<b class='flag-5'>分析</b>](https://file1.elecfans.com/web3/M00/00/6F/wKgZO2dJU9-AUfkFAAAdaRmhvwE589.png)
工業(yè)級網(wǎng)線標準分析
電流隱患大揭秘:電氣短路——火災背后的“無形殺手”
![電流隱患大揭秘:電氣短路——火災背后的“無形<b class='flag-5'>殺手</b>”](https://file1.elecfans.com//web2/M00/07/4D/wKgaombk5qKASK6XAANZ004rlGE586.png)
國產(chǎn)網(wǎng)表級功耗分析EDA大幅提升精度與性能
![國產(chǎn)網(wǎng)表<b class='flag-5'>級</b>功耗<b class='flag-5'>分析</b>EDA大幅提升精度與性能](https://file1.elecfans.com/web2/M00/06/22/wKgZombiXq-AfcrzAAKQ0LQdcS8403.png)
用opa847搭的兩級放大電路,出現(xiàn)震蕩的原因?
差分放大電路如何分析等效輸出噪聲?
Moldex3D模流分析之晶圓級封裝(EWLP)制程
![Moldex3D模流<b class='flag-5'>分析</b>之晶圓<b class='flag-5'>級</b>封裝(EWLP)制程](https://file1.elecfans.com/web2/M00/C2/1B/wKgZomXgKimAKUIdAAA9lGgn6AA745.png)
OpenHarmony之開機優(yōu)化
江波龍分析存儲市場:企業(yè)級產(chǎn)品受青睞,價格或?qū)睾蜕蠞q
概倫電子宣布正式推出芯片級HBM靜電防護分析平臺ESDi
無人機遭遇“神秘殺手”:揭秘反無人機技術的崛起
![無人機遭遇“神秘<b class='flag-5'>殺手</b>”:揭秘反無人機技術的崛起](https://file1.elecfans.com//web2/M00/D8/F1/wKgZomYpre-AApU_AANkRLbrB6U729.jpg)
人工智能熱潮來襲,硅光子技術迎來殺手級應用?
![人工智能熱潮來襲,硅光子技術迎來<b class='flag-5'>殺手</b><b class='flag-5'>級</b>應用?](https://file1.elecfans.com/web2/M00/C6/91/wKgZomYKfjaAA4v2AAAYEcx5WHw008.jpg)
單級功率因數(shù)校正電路的適用性分析
深入分析國產(chǎn)車規(guī)級芯片的產(chǎn)業(yè)發(fā)展現(xiàn)狀
![深入<b class='flag-5'>分析</b>國產(chǎn)車規(guī)<b class='flag-5'>級</b>芯片的產(chǎn)業(yè)發(fā)展現(xiàn)狀](https://file1.elecfans.com/web2/M00/C1/69/wKgaomXVxHKAVIOMAAAefTv7gfE588.png)
評論