精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

火焰圖系列之使用火焰圖隱藏功能提高繪制精度

Linux閱碼場 ? 來源:Linuxer ? 2020-06-23 10:15 ? 次閱讀

由于CPU能耗優化的原因,火焰圖有時并不準確。為此,我們來做一個小實驗。

(還不熟悉什么是火焰圖的可以看看文章末尾火焰圖系列文章匯總)

1.小實驗

這是一個簡單C程序,其實就是一個死循環,如下:

#includeint globalv;void dosth(){ globalv++;}int main(){ globalv = 0; for(;;) dosth(); return 0;}

編譯后可執行程序名為 func。接下來我開了兩個終端,分別使用 taskset將 func運行在CPU0和CPU1上:

taskset 0x1 ./functaskset 0x2 ./func

然后使用bcc+flamegraph繪制火焰圖:

/bcc/profile -I -F 99 -daf 10 > out.profile/mnt/sdb/FlameGraph/flamegraph.plout.svg

得到的火焰圖:

我的測試環境是Qemu/KVM, 32核。

我們可以看到,火焰圖顯示, func程序占用了近四分之一的CPU時間。但是由于我們把 func綁定在CPU0和1上執行,根據小學數學我們應該可以計算出來 func最多占用 2/32=6.25%的時間。

是不是有點不對?

2.原因

由于Linux會對CPU進行能耗優化,在低負載的時候,CPU并不是滿負荷工作(降頻),因此對于Idle的CPU,bcc的采樣數會減少,從而導致總采樣數減少。我們可以看到,我們的采樣頻率是99個樣本/(min*CPU)。運行了10s,那么總的樣本數應該大約為 99*10*32=31680。而實際的總采樣數只有8197。分母小了,自然 func占用的CPU時間比例增加了。

3.解決辦法

當然,我們可以修改CPUfreq強制讓所有滿負荷工作。但是這樣一來麻煩,二來我的測試環境是虛擬機,修改起來更加麻煩。我們希望用一個簡單的方法解決。

這就要提到flamegraph的隱藏功能了。為什么叫隱藏功能?因為如果你簡單地 ./flamegraph.pl--help他不會告訴你這個用法。但是實際上他已經實現了這個功能,語法是:

./flamegraph.pl --total=N < out.profile > out2.svg

其中N為用戶規定的總采樣數。在我們的示例中,應該是31680。這樣,我們繪制出來的火焰圖是這個樣子的:

嗯,的確有點丑,但是6.26%才是 func真正消耗了的CPU時間比例。

4.關于CPU時間準確性的討論

怎樣才算是繪制了準確的火焰圖呢?

考慮如下情形,如果CPU1滿負荷運轉執行 func110秒鐘,而CPU2半負荷運轉執行 func25秒鐘,剩下5s是idle。

算法1::實際上 func1和 func2一起是占用了15s的CPU時間。根據計算, func占用的時間占總時間的 15s/(10s*32)=4.69%。

算法2:如果按照上面第三節所描述的方法繪制火焰圖,采樣結果應該是 func1有大約990個樣本, func2有大約 990/2/2=248個樣本,繪制出來的火焰圖 func占比為 (990+248)/31680=3.9%

兩者不相等!筆者認為,原因在于二者算法所獲結果的含義不同。算法1計算出來的是在這種運行情形下實際 func的執行時間占比。而算法2計算出來(或者說繪制出來)的是在CPU滿負荷運轉下func的CPU時間占比。從現實來看,不同背景負載,不同情形下同一個workload的運行時間可能不同。當系統負載加重時,Linux會自動控制CPUfreq將CPU頻率增加。單單查看在某一個情形下workload的CPU執行時間意義有限。但是,對于一個workload而言,他所需要占用的計算資源量往往是相同的。因此,從程序優化角度而言,采用第三節所描述的方法計算CPU滿負載下應用程序的時間占比對于我們優化代碼更具有指導性意義。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211151
  • 程序
    +關注

    關注

    116

    文章

    3777

    瀏覽量

    80851

原文標題:火焰圖系列之使用火焰圖隱藏功能提高繪制精度

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    火焰傳感器的特征及應用

    火焰被發出的弱紫外線,可實現點火、熄火報警連鎖等自動控制功能火焰傳感器可以用來探測火源或其它一些波長在700納米~1000納米范圍內的熱源。火焰傳感器的
    發表于 04-18 14:55

    急求一個火焰傳感器模塊的原理

    想做一個滅火機器人,急求一個火焰傳感器模塊的原理{:4_97:}求大神幫幫
    發表于 08-20 16:25

    火焰探測電路

    想要做一個滅火裝置,老師要我先找一個火焰探測器的電路,然后做PCB板子,有沒有探測火焰的電路
    發表于 11-04 20:20

    honeywell火焰探測器

    檢測到。只要有穩定的輻射發光就可以被探測到。例如,爐膛內熾熱的表面,對探測器沒有影響。C70XX 系列紫外光火焰探測器C70XX系列紫外光火焰探測器適用于氣體、液體(油)燃料、非連續燃
    發表于 04-27 12:28

    火焰探測器參考方案

    和室外。而隨著技術的進步,這樣的分界也逐漸模糊起來,比如今天我們拆解的這款由世健國際貿易(上海)有限公司設計的紅外火焰探測參考方案,就集快速、長距、高靈敏度等性能于一身,讓人刮目相看。1:世健紅外火焰
    發表于 06-21 05:00

    基于單片機的防火報警系統_DS18B20測溫+火焰傳感器 相關資料下載

    摘要隨著現代家庭用火、用電量的增加,家庭火災發生的頻率越來越高。防火報警器也隨之被廣泛應用于各種場合。本文章所研究的無線多功能防火報警系統采用STC12C5A60S2為核心控制器,利用火焰傳感器
    發表于 07-01 08:23

    為巡線小車添加火焰檢測功能

    當小車可以自行完成巡線功能后,在有剩余空閑I/O口的情況下,還可以為巡線小車添加火焰檢測功能,讓它成為名副其實的 “巡防小車” !添加火焰檢測功能
    發表于 09-08 06:34

    火焰傳感器的工作原理是什么

    火焰傳感器的工作原理是什么?使用火焰傳感器有哪些注意事項?
    發表于 10-15 06:55

    Arduion UNO&amp;Nano;火焰傳感器模塊

    說明:火焰傳感器(即紅外接收三極管)是一種對火焰特別敏感的傳感器。其利用紅外線對火焰的敏感特性,用特制的紅外線接收管來檢測火焰,然后將火焰
    發表于 04-25 16:38

    UV紫外線火焰傳感器及其典型電路

    UV紫外線火焰傳感器及其典型電路
    發表于 06-08 16:03 ?5899次閱讀
    UV紫外線<b class='flag-5'>火焰</b>傳感器及其典型電路<b class='flag-5'>圖</b>

    火焰傳感器電路

    火焰傳感器電路,用于探測火源的具體位置在哪里。
    發表于 05-20 11:47 ?44次下載

    火焰

    LED火焰
    發表于 02-27 16:28 ?20次下載

    隧道專用火焰探測器的技術參數

    火焰探測器廣泛應用于燃氣,隧道,化工,冶金,制藥等行業,探測器適用于汽油、煤油、柴油、航空汽油、液壓油、碳氫化合物:乙烯、聚乙烯、天 然氣、民用燃氣、液化石油氣、甲烷、乙烷、丙烷、氫氣、酒精、隧道等產生爆燃場所的火焰檢測。
    發表于 03-14 15:33 ?1926次閱讀

    火焰:全局視野的Linux性能剖析

    CPU火焰圖中的每一個方框是一個函數,方框的長度,代表了它的執行時間,所以越寬的函數,執行越久。火焰的樓層每高一層,就是更深一級的函數被調用,最頂層的函數,是葉子函數。
    的頭像 發表于 06-28 09:44 ?2026次閱讀

    使用Arthas火焰工具的Java應用性能分析和優化經驗

    分享作者在使用Arthas火焰工具進行Java應用性能分析和優化的經驗。
    的頭像 發表于 10-28 09:27 ?153次閱讀
    使用Arthas<b class='flag-5'>火焰</b><b class='flag-5'>圖</b>工具的Java應用性能分析和優化經驗