Perf
Perf 是一个 Linux 下的性能分析工具,可以对进程进行采样,利用采样数据对程序性能进行分析
安装(APT)
sudo apt install linux-perf安装 FlameGraph
FlameGraph 用于生成火焰图
Github:FlameGraph
使用方法
perf 总体分为三种模式:
- sample 模式
- counting 模式
- 其他模式
下图中整理了各模式对应的子命令:

常用的子命令有:
- perf record:采样,生成 perf.data 二进制文件
- perf annotate/report/script:分析 perf.data 文件,annotate 可以查看代码、report 可以统计分析、script 可以直接转换为文本格式
- perf stat:counter,统计 event 的出现次数
- perf top:整个系统的分析,类似于 top 命令,但是可以具体到函数,可以指定 event
使用示例
perf record -g -e cpu-clock ./example && perf script | ./FlameGraph/stackcollapse-perf.pl --all | ./FlameGraph/flamegraph.pl > out.svg火焰图解析
cpu 火焰图可以用于分析 cpu 被那些线程、那些函数占用的,可以方便找到热点代码。
y轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部是正在执行的函数,下方都是它的父函数x轴表示抽样数,如果一个函数在x轴占据的宽度越宽,就表示它被抽到的次数越多,即执行时间越长。注:x轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的
火焰图就是看顶层的哪个函数占据的宽度最大。只要有“平顶”(plateaus),就表示该函数可能存在性能问题。
引用
最近更新于