使用火焰图分析进程性能流程:
在我们遇到spdk性能问题的时候需要通过perf工具分析具体函数调用信息。
通过命令:perf top -p pid
这个图片能看到热点函数,但是具体的调用信息无法展示。
我们通过火焰图的方式来查看具体的热点调用信息。
火焰图生成:
1. /usr/bin/perf record -F 99 -g -p pid
perf record表示采集系统事件, 没有使用 -e 指定采集事件, 则默认采集 cycles(即 CPU clock 周期)
-F 99 表示每秒 99 次
-p pid是进程号, 即对哪个进程进行分析
-g 表示记录调用栈
sleep 30 则是持续 30 秒,不加则需要手动停止
默认生成文件名称perf.data
根据记录的数据生成火焰图的过程:
# 解析perf收集的信息
1 perf script -i perf.data &> perf.unfold
# 生成折叠后的调用栈
2 ./stackcollapse-perf.pl perf.unfold &> perf.folded
# 生成火焰图
3 ./flamegraph.pl perf.folded > perf.svg
stackcollapse-perf.pl和flamegraph.pl工具需要从github上下载,
仓库信息大家可以从github上搜索flamegraph仓库下载
perf.svg展示信息: