Perf+火焰圖進行性能瓶頸分析

  • 依賴程序

  1. Perf    執行 perf 看系統有沒有安裝,沒有則執行 yum install perf 安裝 Perf;
  2. FlameGraph    https://github.com/brendangregg/FlameGraph 下載 FlameGraph-master.zip,並解壓到你的目錄 /YOUR_PATH

 

  • 使用perf運行你的程序 your_program

  1. 在你的可執行程序目錄下執行    perf record --call-graph dwarf ./your_program your_program_paras  (--call-graph dwarf 可以記錄完整函數調用棧,具體討論可以參見 https://www.dazhuanlan.com/2020/02/27/5e57cc3612a61/ 也可以按照需要增加其他 perf 參數)
  2. 運行一段時間後 Ctrl+c結束(運行時間適當把握,保證程序初始化完成,需要測量性能的功能已經正常運行一段時間,但也不能運行太久,否則生成數據過大處理比較費時)

 

  • 生成火焰圖

  1. perf script >> your_program.perf
  2. /YOUR_PATH/FlameGraph-master/stackcollapse-perf.pl your_program.perf > your_program.folded
  3. /YOUR_PATH/FlameGraph-master/flamegraph.pl your_program.folded > your_program.svg

 

  • 使用瀏覽器打開 your_program.svg 查看各函數運行時間佔比,分析查找瓶頸

火焰圖

 

  • 參考

關於 Perf 的更多用法可以參考

https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/

https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/

及其他網絡文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章