1. 安装
sudo apt install linux-tools-common
如果没安装成功可尝试制定特定内核版本的工具,例如sudo apt install linux-tools-6.5.0-27-generic
。
2. 使用perf
Step1:编译得到可执行程序,假设是a.out
。
Step2:执行类似如下指令,sudo perf record -F 1000 --call-graph dwarf ./a.out
。其中1000是采样频率, 如果太高可能会丢数据来不及捕获 ,如果太低统计数据的精细度不够。
Step3:执行sudo perf report -n
即可查看耗时详情:
3. 结合perf
和FlameGraph
生成火焰🔥图
Step1:先下载FlameGraph
源码,git clone https://github.com/brendangregg/FlameGraph.git
。无需安装,后续步骤都是制定源码中文件的路径。
Step2:在章节2中可执行程序a.out
的同路径下执行sudo perf script | ../FlameGraph/stackcollapse-perf.pl > out.perf
。如果路径不对会有错误提示failed to open perf.data: No such file or directory (try 'perf record' first)
。
Step3:执行sudo ../FlameGraph/flamegraph.pl out.perf > perf.svg
。
Step4:打开perf.svg
文件,open perf.svg
。