一、使用perf生成火焰图步骤:
1、perf工具监听服务的堆栈:
perf record -F 100 -p 194095 -g – sleep 600
命令含义:我要监控PID为194095 的服务,每秒监控堆栈频率为100次,共监控600秒
2、在场景结束,得到监控文件perf.data后,需要用perf script 工具对 perf.data 进行解析:
perf script -i perf.data &> perf.unfold
3、接着用 stackcollapse-perf.pl 将 perf 解析出的内容 perf.unfold 中的符号进行折叠 :
./stackcollapse-perf.pl perf.unfold &> perf.folded
4、最后生成 svg 图:
./flamegraph.pl perf.folded > perf.svg
5、火焰图代码gitHub地址:
https://github.com/brendangregg/FlameGraph.git
火焰图生成步骤2:
perf record -g -F 99 --call-graph dwarf --pid=172243 – sleep 120
perf script -i perf.data &> perf.unfold
./FlamGraph/FlameGraph-master/stackcollapse-perf.pl perf.unfold &> perf.folded
./FlamGraph/FlameGraph-master/flamegraph.pl perf.folded > perf.svg
perf [options] [arguments]
常用命令和参数:
record:用于收集性能数据的命令。
-e :指定要采集的性能事件,例如-e cycles表示采集CPU周期计数器。
-p :指定要采集的进程ID。
-g:采集调用链(call stack)数据。启动堆栈/栈回溯功能。
-o :指定输出文件的名称。
–call-graph :设置调用链类型,例如–call-graph dwarf使用DWARF调试信息进行调用链采集。
report:用于分析和显示收集到的性能数据的命令。
-i :指定输入文件的名称。
-n:显示每个符号的调用次数。
-t :指定要显示的性能事件类型,例如-t cycles表示显示CPU周期计数器的数据。
–stdio:将结果输出到标准输出而不是交互式界面。