色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

Linux閱碼場 ? 來源:Linuxer ? 2020-06-28 09:44 ? 次閱讀

什么是火焰圖

火焰圖(Flame Graph)是由Linux性能優化大師Brendan Gregg發明的,和所有其他的trace和profiling方法不同的是,Flame Graph以一個全局的視野來看待時間分布,它從底部往頂部,列出所有可能的調用棧。其他的呈現方法,一般只能列出單一的調用棧或者非層次化的時間分布。

我最快樂的童年時代,每逢冬天,尤其是春節的時候,和一家人圍坐在火堆旁邊烤火。這已經成為最美好的回憶,其實人生追求的快樂非常簡單。火焰圖的火焰首先來自于根,然后以火苗的形式往上面竄。可以把從靠近地面的根到頂上的每個火苗,想想成一個調用棧。由于火苗有很多根,這正好也和現實生活中程序的執行邏輯相似。

以典型的分析CPU時間花費到哪個函數的on-cpu火焰圖為例來展開。

CPU火焰圖中的每一個方框是一個函數,方框的長度,代表了它的執行時間,所以越寬的函數,執行越久。火焰圖的樓層每高一層,就是更深一級的函數被調用,最頂層的函數,是葉子函數。

火焰圖的生成過程是:

先trace系統,獲取系統的profiling數據

用腳本來繪制

系統的profiling數據獲取,可以選擇最流行的perf record,而后把采集的數據進行加工處理,繪制為火焰圖。其中第二步的繪制火焰圖的腳本程序,通過如下方式獲取:

gitclone https://github.com/brendangregg/FlameGraph

火焰圖案例

廢話不多說,直接從最簡單的例子開始說起。talk is cheap, show you the cde,代碼如下:

c()

{

for(int i=0;i<1000;i++);

}

b()

{

for(int i=0;i<1000;i++);

c();

}

a()

{

for(int i=0;i<1000;i++);

b();

}

則這三個函數,在火焰圖中呈現的樣子為:

a()的2/3的時間花在b()上面,而b()的1/3的時間花在c()上面。很多個這樣的a->b->c的火苗堆在一起,就構成了火焰圖。

進一步理解火焰圖的最好方法仍然是通過一個實際的案例,下面的程序創建2個線程,兩個線程的handler都是thread_fun(),之后thread_fun()調用fun_a()、fun_b()、fun_c(),而fun_a()又會調用fun_d():

/*

* One example to demo flamegraph

*

* Copyright (c) Barry Song

*

* Licensed under GPLv2

*/

#include

func_d()

{

int i;

for(i=0;i<50000;i++);

}

func_a()

{

int i;

for(i=0;i<100000;i++);

func_d();

}

func_b()

{

int i;

for(i=0;i<200000;i++);

}

func_c()

{

int i;

for(i=0;i<300000;i++);

}

void* thread_fun(void* param)

{

while(1) {

int i;

for(i=0;i<100000;i++);

func_a();

func_b();

func_c();

}

}

int main(void)

{

pthread_t tid1,tid2;

int ret;

ret=pthread_create(&tid1,NULL,thread_fun,NULL);

if(ret==-1){

...

}

ret=pthread_create(&tid2,NULL,thread_fun,NULL);

...

if(pthread_join(tid1,NULL)!=0){

...

}

if(pthread_join(tid2,NULL)!=0){

...

}

return 0;

}

先看看不用火焰圖的缺點在哪里。

如果不用火焰圖,我們也可以用類似perf top這樣的工具分析出來CPU時間主要花費在哪里了:

$gcc exam.c -pthread

$./a.out&

$sudo perf top

perf top的顯示結果如下:

perf top提示出來了fun_a()、fun_b()、fun_c(), fun_d(),thread_func()這些函數內部的代碼是CPU消耗大戶,但是它缺乏一個全局的視野,我們無法看出全局的調用棧,也弄不清楚這些函數之間的關系。火焰圖則不然,我們用下面的命令可以生成火焰圖(以root權限運行):

perf record -F 99 -a -g -- sleep 60

perf script | ./stackcollapse-perf.pl > out.perf-folded

./flamegraph.pl out.perf-folded > perf-kernel.svg

上述程序捕獲系統的行為60秒鐘,最后調用flamegraph.pl生成一個火焰圖perf-kernel.svg,用看圖片的工具就可以打開這個svg。

上述火焰圖顯示出了a.out中,thread_func()、func_a()、func_b()、fun_c()和func_d()的時間分布。

從上述火焰圖可以看出,雖然thread_func()被兩個線程調用,但是由于thread_func()之前的調用棧是一樣的,所以2個線程的thread_func()調用是合并為同一個方框的。

更深閱讀

除了on-cpu的火焰圖以外,off-cpu的火焰圖,對于分析系統堵在IO、SWAP、取得鎖方面的幫助很大,有利于分析系統在運行的時候究竟在等待什么,系統資源之間的彼此伊伴。

比如,下面的火焰圖顯示,nginx的吞吐能力上不來的很多程度原因在于sem_wait()等待信號量。

上圖摘自Yichun Zhang (agentzh)的《Introduction to offCPU Time Flame Graphs》。

關于火焰圖的更多細節和更多種火焰圖各自的功能,可以訪問:

http://www.brendangregg.com/flamegraphs.html

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

    關注

    87

    文章

    11319

    瀏覽量

    209830
  • 函數
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62739

原文標題:火焰圖:全局視野的Linux性能剖析

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

收藏 人收藏

    評論

    相關推薦

    BNC接頭技術原理與工程應用剖析:從結構到性能優化

    在現代電子通信和射頻領域,BNC接頭作為一種廣泛應用的連接器件,發揮著至關重要的作用。它以其可靠的連接性能、優異的電氣特性和廣泛的兼容性,成為眾多電子設備和系統中不可或缺的一部分。本文將深入剖析
    的頭像 發表于 12-31 16:07 ?176次閱讀
    BNC接頭技術原理與工程應用<b class='flag-5'>剖析</b>:從結構到<b class='flag-5'>性能</b>優化

    思特威推出高性能智能交通應用全局快門圖像傳感器產品

    近日,技術先進的CMOS圖像傳感器供應商思特威(SmartSens,股票代碼688213),全新推出高性能智能交通(ITS)應用全局快門圖像傳感器產品——SC935HGS(9MP)及SC635HGS(6MP)。
    的頭像 發表于 12-26 10:48 ?252次閱讀

    多光譜火焰檢測攝像頭

    隨著工業化進程的加快,火災安全問題日益受到重視。傳統的火焰檢測技術主要依賴于溫度傳感器和煙霧探測器,但這些方法在某些情況下存在響應慢、誤報率高等缺陷。為了解決這些問題,多光譜火焰檢測攝像頭應運而生
    的頭像 發表于 12-11 10:50 ?155次閱讀
    多光譜<b class='flag-5'>火焰</b>檢測攝像頭

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

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

    迅為瑞芯微RK3588開發板深度剖析丨首選的性能

    搭建文檔),到軟件開發(Linux/Android等系統開發文檔),硬件開發(最小系統原理,復用關系表,電路介紹等文檔)。再到學習資料(如NPU快速上手,RK原廠NPU資料講解,系統編程,驅動開發等
    發表于 10-17 10:49

    如何優化Linux服務器的性能

    優化Linux服務器的性能是一個綜合性的任務,涉及硬件、軟件、配置、監控等多個方面。以下是一個詳細的指南,旨在幫助系統管理員和運維人員提升Linux服務器的性能和穩定性。
    的頭像 發表于 09-29 16:50 ?330次閱讀

    迅為RK3588開發板深度剖析丨首選的性能

    搭建文檔),到軟件開發(Linux/Android等系統開發文檔),硬件開發(最小系統原理,復用關系表,電路介紹等文檔)。再到學習資料(如NPU快速上手,RK原廠NPU資料講解,系統編程,驅動開發等
    發表于 09-03 15:49

    Linux服務器性能查看方法

    Linux服務器性能查看是系統管理員和開發人員在日常工作中經常需要進行的任務,以確保系統穩定運行并優化資源使用。以下將詳細介紹多種Linux服務器性能查看的方法,這些方法涵蓋了CPU、
    的頭像 發表于 09-02 11:15 ?1130次閱讀

    探索巔峰性能 | 迅為RK3588開發板深度剖析

    探索巔峰性能 | 迅為RK3588開發板深度剖析
    的頭像 發表于 08-12 14:07 ?926次閱讀
    探索巔峰<b class='flag-5'>性能</b> | 迅為RK3588開發板深度<b class='flag-5'>剖析</b>

    探索巔峰性能 |迅為 RK3588開發板深度剖析

    搭建文檔),到軟件開發(Linux/Android等系統開發文檔),硬件開發(最小系統原理,復用關系表,電路介紹等文檔)。再到學習資料(如NPU快速上手,RK原廠NPU資料講解,系統編程,驅動開發等
    發表于 08-09 15:44

    深入剖析石英 CMOS 振蕩器 PC3225 系列(1 to 200 MHz)的卓越性能

    深入剖析石英 CMOS 振蕩器 PC3225 系列(1 to 200 MHz)的卓越性能
    的頭像 發表于 08-08 10:14 ?375次閱讀
    深入<b class='flag-5'>剖析</b>石英 CMOS 振蕩器 PC3225 系列(1 to 200 MHz)的卓越<b class='flag-5'>性能</b>

    多光譜火焰智能監測攝像機

    當談到多光譜火焰智能監測攝像機時,我們進入了火災監測和安全預警領域的新時代。這些先進的攝像機利用多光譜技術,不僅能夠實時監測火焰的存在和擴展,還能夠識別不同類型的火焰,從而提高火災檢測的準確性
    的頭像 發表于 07-25 10:21 ?342次閱讀
    多光譜<b class='flag-5'>火焰</b>智能監測攝像機

    HarmonyOS實戰開發-全局狀態保留能力彈窗

    介紹 全局狀態保留能力彈窗一種很常見的能力,能夠保持狀態,且支持全局控制顯隱狀態以及自定義布局。使用效果參考評論組件 效果預覽 使用說明 首先程序入口頁對全局彈窗初始化
    發表于 05-07 14:53

    AI火焰識別,火焰檢測攝像頭助力降低防火安全監控成本、及時報警

    針對這一問題,AI火焰識別技術應運而生。火焰檢測攝像頭作為AI火焰識別的重要組成部分,不僅可以降低防火安全監控成本,還能及時報警,為保障人們的生命和財產安全發揮重
    的頭像 發表于 04-12 14:09 ?987次閱讀
    AI<b class='flag-5'>火焰</b>識別,<b class='flag-5'>火焰</b>檢測攝像頭助力降低防火安全監控成本、及時報警

    鴻蒙實戰開發-全局UI方法的功能

    使用全局UI的方法定義日期滑動選擇器彈窗并彈出。
    的頭像 發表于 02-02 17:13 ?629次閱讀
    鴻蒙實戰開發-<b class='flag-5'>全局</b>UI方法的功能
    主站蜘蛛池模板: 杨幂被视频在线观看| 凌馨baby| 亚洲高清在线天堂精品| 九九久久国产精品免费热6| 99热在线免费观看| 亚洲 欧美 国产 综合五月天| 久久中文字幕人妻熟AV女蜜柚M| 动漫女生的逼| 在线亚洲专区中文字幕| 日产久久视频| 久久精品国产96精品亚洲| 成人性视频全过程| 依人在线观看| 无码任你躁久久久久久老妇双奶| 久青草国产在线视频| 国产精品午夜福利在线观看| 999久久久无码国产精蜜柚| 亚洲国产成人精品无码区5566| 秋霞电影网伦大理电影在线观看| 九九99亚洲精品久久久久| 嘟嘟嘟WWW免费高清在线中文| 中文字幕永久在线观看| 新影音先锋男人色资源网| 欧美亚洲天堂网| 久久全国免费观看视频| 国产精品自产拍在线观看中文 | 亚洲国产区中文在线观看| 国产免费怕怕免费视频观看| 99热热在线精品久久| 在线观看免费av网站| 亚洲国产精品嫩草影院| 天美传媒 免费观看| 强奷表妺好紧2| 男女后进式猛烈xx00动态图片| 久久精品视频91| 黑人强伦姧人妻日韩那庞大的| 国产偷国产偷亚州清高APP| 国产成人精品免费视频软件 | 好紧的小嫩嫩17p| 欧美乱妇日本无乱码特黄大片| 午夜dj影院视频观看|