性能分析之使用perf生产火焰图

perf是由Linux Kernel提供的动态追踪调试工具,我们可以使用perf对运行时的程序进行分析
相比单纯依赖log,core进行离线排查,perf是一种在线的调试手段,可以在线上随时进行采样并进行分析,无需预先埋点,所带来的只是采样时间段内的一些性能损耗,这种特性使perf很适合于排查未知的问题
perf生成的运行时栈可以通过FlameGraph生成交互式的图表,可以更方便地分析热点

安装perf

sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`

使用perf对特定进程进行采样

sudo perf record -p 14573 -g -- sleep 60 // 对pid为14573的进程进行60秒的采样
sudo perf script > out.perf //输出采样数据

使用FlameGraph产生火焰图

git clone https://github.com/brendangregg/FlameGraph  //FlameGraph是一系列perl脚本,clone下来即可使用
./stackcollapse-perf.pl out.perf > out.folded //生成折叠后的调用栈
./flamegraph.pl out.folded > out.svg //生成火焰图

最终可以生成如下svg文件 out.svg
分析需要注意的点
火焰图中的颜色没有特殊含义
火焰图的每一层栈都可以展开
火焰图中的色块宽度只代表采样命中率,不代表绝对运行时间

Extra Refrences
https://openresty.org/posts/dynamic-tracing/
http://kernel.taobao.org/index.php?title=Documents/Kernel_Perf
http://dtrace.org/blogs/brendan/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值