日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

Linux閱碼場(chǎng) ? 來(lái)源:Linuxer ? 2020-06-23 10:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于CPU能耗優(yōu)化的原因,火焰圖有時(shí)并不準(zhǔn)確。為此,我們來(lái)做一個(gè)小實(shí)驗(yàn)。

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

1.小實(shí)驗(yàn)

這是一個(gè)簡(jiǎn)單C程序,其實(shí)就是一個(gè)死循環(huán),如下:

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

編譯后可執(zhí)行程序名為 func。接下來(lái)我開(kāi)了兩個(gè)終端,分別使用 taskset將 func運(yùn)行在CPU0和CPU1上:

taskset 0x1 ./functaskset 0x2 ./func

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

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

得到的火焰圖:

我的測(cè)試環(huán)境是Qemu/KVM, 32核。

我們可以看到,火焰圖顯示, func程序占用了近四分之一的CPU時(shí)間。但是由于我們把 func綁定在CPU0和1上執(zhí)行,根據(jù)小學(xué)數(shù)學(xué)我們應(yīng)該可以計(jì)算出來(lái) func最多占用 2/32=6.25%的時(shí)間。

是不是有點(diǎn)不對(duì)?

2.原因

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

3.解決辦法

當(dāng)然,我們可以修改CPUfreq強(qiáng)制讓所有滿負(fù)荷工作。但是這樣一來(lái)麻煩,二來(lái)我的測(cè)試環(huán)境是虛擬機(jī),修改起來(lái)更加麻煩。我們希望用一個(gè)簡(jiǎn)單的方法解決。

這就要提到flamegraph的隱藏功能了。為什么叫隱藏功能?因?yàn)槿绻愫?jiǎn)單地 ./flamegraph.pl--help他不會(huì)告訴你這個(gè)用法。但是實(shí)際上他已經(jīng)實(shí)現(xiàn)了這個(gè)功能,語(yǔ)法是:

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

其中N為用戶規(guī)定的總采樣數(shù)。在我們的示例中,應(yīng)該是31680。這樣,我們繪制出來(lái)的火焰圖是這個(gè)樣子的:

嗯,的確有點(diǎn)丑,但是6.26%才是 func真正消耗了的CPU時(shí)間比例。

4.關(guān)于CPU時(shí)間準(zhǔn)確性的討論

怎樣才算是繪制了準(zhǔn)確的火焰圖呢?

考慮如下情形,如果CPU1滿負(fù)荷運(yùn)轉(zhuǎn)執(zhí)行 func110秒鐘,而CPU2半負(fù)荷運(yùn)轉(zhuǎn)執(zhí)行 func25秒鐘,剩下5s是idle。

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

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

兩者不相等!筆者認(rèn)為,原因在于二者算法所獲結(jié)果的含義不同。算法1計(jì)算出來(lái)的是在這種運(yùn)行情形下實(shí)際 func的執(zhí)行時(shí)間占比。而算法2計(jì)算出來(lái)(或者說(shuō)繪制出來(lái))的是在CPU滿負(fù)荷運(yùn)轉(zhuǎn)下func的CPU時(shí)間占比。從現(xiàn)實(shí)來(lái)看,不同背景負(fù)載,不同情形下同一個(gè)workload的運(yùn)行時(shí)間可能不同。當(dāng)系統(tǒng)負(fù)載加重時(shí),Linux會(huì)自動(dòng)控制CPUfreq將CPU頻率增加。單單查看在某一個(gè)情形下workload的CPU執(zhí)行時(shí)間意義有限。但是,對(duì)于一個(gè)workload而言,他所需要占用的計(jì)算資源量往往是相同的。因此,從程序優(yōu)化角度而言,采用第三節(jié)所描述的方法計(jì)算CPU滿負(fù)載下應(yīng)用程序的時(shí)間占比對(duì)于我們優(yōu)化代碼更具有指導(dǎo)性意義。

聲明:本文內(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)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11335

    瀏覽量

    226005
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3849

    瀏覽量

    85501

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

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    昉·星光開(kāi)發(fā)板火焰傳感器探測(cè)火光

    本次課程為昉·星光開(kāi)發(fā)板IoT開(kāi)發(fā)系列課程的第九講,將帶領(lǐng)同學(xué)們?cè)跁P·星光開(kāi)發(fā)板上,使用火焰傳感器探測(cè)火焰火光。 本次課程,在昉·星光開(kāi)發(fā)板V1和V2上,操作步驟相同。 一、學(xué)習(xí)目標(biāo) 學(xué)習(xí)昉
    發(fā)表于 03-16 06:48

    火焰傳感器的特征及應(yīng)用

    火焰被發(fā)出的弱紫外線,可實(shí)現(xiàn)點(diǎn)火、熄火報(bào)警連鎖等自動(dòng)控制功能。 火焰傳感器可以用來(lái)探測(cè)火源或其它一些波長(zhǎng)在700納米~1000納米范圍內(nèi)的熱源。火焰傳感器的
    發(fā)表于 04-18 14:55

    急求一個(gè)火焰傳感器模塊的原理

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

    火焰探測(cè)電路

    想要做一個(gè)滅火裝置,老師要我先找一個(gè)火焰探測(cè)器的電路,然后做PCB板子,有沒(méi)有探測(cè)火焰的電路
    發(fā)表于 11-04 20:20

    honeywell火焰探測(cè)器

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

    火焰探測(cè)器參考方案

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

    基于單片機(jī)的防火報(bào)警系統(tǒng)_DS18B20測(cè)溫+火焰傳感器 相關(guān)資料下載

    摘要隨著現(xiàn)代家庭用火、用電量的增加,家庭火災(zāi)發(fā)生的頻率越來(lái)越高。防火報(bào)警器也隨之被廣泛應(yīng)用于各種場(chǎng)合。本文章所研究的無(wú)線多功能防火報(bào)警系統(tǒng)采用STC12C5A60S2為核心控制器,利用火焰傳感器
    發(fā)表于 07-01 08:23

    為巡線小車添加火焰檢測(cè)功能

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

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

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

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

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

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

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

    火焰傳感器電路

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

    隧道專用火焰探測(cè)器的技術(shù)參數(shù)

    火焰探測(cè)器廣泛應(yīng)用于燃?xì)?,隧道,化工,冶金,制藥等行業(yè),探測(cè)器適用于汽油、煤油、柴油、航空汽油、液壓油、碳?xì)浠衔铮阂蚁⒕垡蚁?、?然氣、民用燃?xì)?、液化石油氣、甲烷、乙烷、丙烷、氫氣、酒精、隧道等產(chǎn)生爆燃場(chǎng)所的火焰檢測(cè)。
    發(fā)表于 03-14 15:33 ?2616次閱讀

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

    CPU火焰圖中的每一個(gè)方框是一個(gè)函數(shù),方框的長(zhǎng)度,代表了它的執(zhí)行時(shí)間,所以越寬的函數(shù),執(zhí)行越久。火焰的樓層每高一層,就是更深一級(jí)的函數(shù)被調(diào)用,最頂層的函數(shù),是葉子函數(shù)。
    的頭像 發(fā)表于 06-28 09:44 ?2747次閱讀

    使用Arthas火焰工具的Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)

    分享作者在使用Arthas火焰工具進(jìn)行Java應(yīng)用性能分析和優(yōu)化的經(jīng)驗(yàn)。
    的頭像 發(fā)表于 10-28 09:27 ?2414次閱讀
    使用Arthas<b class='flag-5'>火焰</b><b class='flag-5'>圖</b>工具的Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)
    新化县| 高碑店市| 波密县| 遂宁市| 策勒县| 习水县| 贺州市| 泗洪县| 姚安县| 关岭| 三门县| 安阳市| 和田县| 康平县| 正镶白旗| 海淀区| 基隆市| 左云县| 满洲里市| 驻马店市| 曲麻莱县| 贵溪市| 贞丰县| 蓝田县| 和田县| 六盘水市| 霍城县| 苗栗市| 香格里拉县| 琼海市| 丹江口市| 繁昌县| 汾阳市| 芦山县| 贺兰县| 桃源县| 延边| 镇江市| 益阳市| 马关县| 乐亭县|