on-cpu火焰图
准备
1. 首先目标二进制编译加参数 -fno-omit-frame-pointer
2. 安装perf:yum install -y perf
数据采样
perf record -F 99 -p PID -g -- sleep 60
perf record -g <binary>
-F 99
: 每秒采样99次-p PID
: 指定进程id-g
: 记录调用栈sleep 60
: 持续60秒, 如果不加则一直采样到手动中断(CRTL+C)为止
上面的命令会生成一个perf.data的文件.
- 执行
perf report -n
可以生成报告的预览 - 执行
perf report -n --stdio
可以生成一个详细的报告 - 执行
perf script > out.perf
可以 dump 出 perf.data 的内容
生成火焰图
通常的做法是将 out.perf 拷贝到本地机器在本地生成火焰图
复制
1 2 3 4 5 6 7 8 |
# 下载火焰图生成工程 git clone --depth 1 https://github.com/brendangregg/FlameGraph.git # 折叠调用栈 FlameGraph/stackcollapse-perf.pl out.perf > out.folded # 生成火焰图 Fla |