火焰图FlameGraph

作用:软件性能优化,瓶颈分析。
FlameGraph工具下载网站
需要有perf工具:在内核中编译,后将二进制文件放到/usr/local/bin/目录。

火焰图分类:好几种,分On-CPU,Off-CPU,还有 Memory,Hot/Cold,Differential 等等,根据处理的场景不同做区分

火焰图怎么生成:

  1. perf record -C 1 -F 99 -g – sleep 20 >> pref.data
    -F 99 表示每秒 99 次(如果-e cpu-clock就是用CPU时钟周期,这样采集的要大很多)
    -p 13204 是进程号
    -g 表示记录调用栈
    sleep 30 则是持续 30 秒
  2. perf script 工具对 perf.data 进行解析, 生成折叠后的调用栈
    perf script -i perf.data &> perf.unfold
    后把文件拷贝到FlameGraph工程目录。
  3. ./stackcollapse-perf.pl perf.unfold > perf.folded 生成火焰图
  4. ./flamegraph.pl perf.folded > out.svg 生成svg
    其中我遇到了几个问题,在执行后面两步的过程中遇到了缺少库的问题,把最后的步骤更换到其他服务器上解决了。

火焰图分析方法:

1、纵轴代表调用栈的深度(栈桢数),用于表示函数间调用关系:下面的函数是上面函数的父函数。
2、横轴代表调用频次,一个格子的宽度越大,越说明其可能是瓶颈原因。
3、不同类型火焰图适合优化的场景不同,比如 on-cpu 火焰图适合分析 cpu 占用高的问题函数,off-cpu 火焰图适合解决阻塞和锁抢占问题。
4、无意义的事情:横向先后顺序是为了聚合,跟函数间依赖或调用关系无关;火焰图各种颜色是为方便区分,本身不具有特殊含义

学习网站
https://zhuanlan.zhihu.com/p/402188023

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值