perf 与火焰图读 C++ 热点

本文对应 成长路径 C++ / 系统调试:用 perf + 火焰图 找用户态 CPU 热点


采样

perf record -g --call-graph dwarf -F 99 ./app
perf script > out.perf

保留 调试符号-g 编译,或安装 app.debug 分离符号。


火焰图(Brendan Gregg 工具)

git clone https://github.com/brendangregg/FlameGraph.git
perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > fg.svg

横条越宽 累计 CPU 越多;纵轴为 调用栈深度


C++ 注意

  • 模板栈可能 极深,关注 业务函数名
  • LTO 后符号可能合并,对比 优化前后 用同一工具链。

与 DPDK

数据面线程需 对指定 CPU 采样:

perf record -C 2 -g -- sleep 30

DPDK 性能剖析与绑核 checklist


延伸阅读