flame graph:图形化perf call stack数据的小工具

很多人习惯于以图形的方式观察数据。但是perf目前在图形化上还非常不足。幸运的是,Brendan Gregg为我们开发了一个小工具--Flame Graph,能够将perf等剖析工具采到的call stack数据转换为svg图。svg是一种矢量图,可以被无限地放大。

Flame Graph项目位于GitHub上:

https://github.com/brendangregg/FlameGraph

看官可以用git将其clone下来:

git clone https://github.com/brendangregg/FlameGraph.git

进入FlameGraph的目录后,可以发现这个工具其实是一组perl脚本:

flamegraph.pl

stackcollapse-instruments.pl

stackcollapse.pl

stackcollapse-perf.pl

stackcollapse-stap.pl

stackcollapse*.pl用以将perf等工具获取的原始采样数据转换为flamegraph能够识别的文件格式。 flamegraph.pl用以生成svg图。

该工具目前能够支持Dtrace, perf, Systemtap以及XCode Instruments。

我们以perf为例,看一下flamegraph的使用方法:

首先执行perf record,记得通过-g参数记录call trace.

\#perf record -a -g

Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.

下面用perf script工具对perf.data进行解析:

\#perf script -i perf.data &> perf.unfold

随后,将perf.unfold中的符号进行折叠:

\#./stackcollapse-perf.pl perf.unfold &> perf.folded

最后一步,生成svg图:

\#./flamegraph.pl perf.folded > perf.svg

OK,perf.svg就是能够展示call trace的矢量图。ubuntu下,可以直接使用eog工具打开此文件.

File:perf_svg.jpg

SVG其实是一种XML格式的矢量图。看官如果用浏览器打开上述文件时,可以得到一些动态效果。比如鼠标悬停于某个函数时,能够看到该函数的热度,更便于分析热点所在。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值