使用perf工具生成火焰图

一、使用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:将结果输出到标准输出而不是交互式界面。

-p $pid 记录进程pid的events

-t $tid 记录线程tid的events

-a 采集所有cpu上的events

-F $freq 采用频率

-o $path 指定采样文件输出路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值