1 perf 安裝
-
安裝perf工具包:
sudo apt install linux-tools-common
-
執行perf提示:
WARNING: perf not found for kernel 5.4.0-89 You may need to install the following packages for this specific kernel: linux-tools-5.4.0-89-generic linux-cloud-tools-5.4.0-89-generic You may also want to install one of the following packages to keep up to date: linux-tools-generic linux-cloud-tools-generic
-
安裝perf依賴工具:linux-tools-xxx
sudo apt install linux-tools-generic sudo apt install linux-tools-5.4.0-89-generic
注意
:這里可以用dpkg -l package-name-pattern——列出所有與模式相匹配的軟件包。如果您不知道軟件包的全名,您可以使用“package-name-pattern”。
查看已安裝軟件包的命令:https://www.cnblogs.com/wangkongming/p/4531341.html
也可以參考源碼編譯perf使用:https://www.cnblogs.com/codehello/articles/9229630.html
需要用到詞法分析器flex:https://www.jianshu.com/p/f519fec5bc46
2 perf使用
- 針對運行中的進程PID,使用perf采樣函數的調用頻率(對於C/C++語言,為了能夠顯示完整的函數棧,需要在編譯時加入-g選項),如下所示
perf record -F 99 -p 進程PID -g
- 一段時間后,使用Ctrl+C結束抓取,會看到當前目錄下有一個data.perf文件,該文件是一個二進制信息的問題;
- 將二進制信息轉換為ASCII格式的文件,方便可視化處理:
perf script > out.perf
perf使用:https://www.cnblogs.com/arnoldlu/p/6241297.html
3 查看分析
-
火焰圖生成工具
git clone --depth 1 https://github.com/brendangregg/FlameGraph.git
-
處理數據格式
cd FlameGraph ./stackcollapse-perf.pl out.perf > out.folded
-
生成SVG格式矢量火焰圖
cd FlameGraph ./flamegraph.pl out.folded > out.svg
gprof 性能分析工具
gprof(GNU profiler)是GNU binutils工具集中的一個工具,linux系統當中會自帶這個工具。它可以分析程序的性能,能給出函數調用時間、調用次數和調用關系,找出程序的瓶頸所在。在編譯和鏈接選項中都加入-pg之后,gcc會在每個函數中插入代碼片段,用於記錄函數間的調用關系和調用次數,並采集函數的調用時間。