如何生成火焰图以及火焰图基本介绍

news/2024/11/4 13:59:37/

火焰图(Flame Graph)

目录

火焰图基本介绍
SystemTap入门介绍
火焰图生成原理
使用火焰图分析线上性能问题。

火焰图基本介绍

火焰图是由Linux性能优化大师Brendan Gregg发明的,从宏观角度查看时间花在了哪里。
火焰图是 svg 格式的矢量图,基于 perf 软件性能分析工具。通过对软件在系统上的工作行为记录进行采样。并将数据进行图形化,从而获得比较直观的可视化数据矢量图。
火焰图的得名就是因为生成后类似一个跳动的火焰。
火焰图可以理解成他的顶端温度最高。顶部就是正在执行的函数
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶山",就表示该函数可能存在性能问题。

火焰图的类型

常见的火焰图类型有

  • On-CPU火焰图,(适用于CPU占用高的问题)
  • Off-CPU火焰图(适用于I/O、网络阻塞、锁竞争、死锁导致的性能下降)
  • 内存火焰图,(申请、释放内存多、内存泄漏)
  • Hot/Cold火焰图,(结合On-CPU火焰图和Off-CPU火焰图)
  • 其他火焰图JVM、浏览器(原理类似)。

On-CPU火焰图比较常用。
如果是cup怎么样都上不去,就要用到off-CPU火焰图。锁或者阻塞的问题。

如何读火焰图

  • X轴:
    由多个方块组成,每个方块表示一个函数
    函数在X轴占据的宽度越宽,表示它被采样到的次数越多,可以简单粗暴的近似理解为执行时间。
  • Y轴:
    表示函数调用栈。调用栈越深,火焰就越高
    顶部是CPU正在执行的函数,下方都是它的父函数。
    通过图象,我们对自己写的代码工作效率一目了然,这样可以针对性优化源码性能。

火焰图生成的三个步骤

1.采集堆栈 perf SystemTap sample-bt…
2.折叠堆栈 stackcollapse.pl
3.生成火焰图 flamegraph.pl

perf

基于Linux平台的perf采样脚本(fg.sh),对指定进程进行采样,生成火焰图perf.svg。

火焰图

perf 采集的数据,可以通过插件生成二维火焰图:
Y 轴是函数块叠加而成,有点像程序调试堆栈;
X 轴代表程序函数,在单位时间内被采样的密集度。函数块越长,说明采样越多,工作频率越高,耗性能越多。

on-cpu火焰图

进程/线程正在运行使用cpu的数据。

生成火焰图步骤

通过脚本可以抓取到对应的进程/线程的数据,并将数据转换为火焰图。(注意,脚本不能监控正在睡眠一直不工作的进程/线程,否则抓取数据失败)

1.安装perf

yum install perf

2.在github上的FlameGraph的releases中下载FlameGraph-1.0.zip,解压后获得其中的stackcollapse-perf.pl和flamegraph.pl

https://github.com/brendangregg/FlameGraph

2.1.也可以用git将其clone下来

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

3.拷贝stackcollapse-perf.pl和flamegraph.pl到目标机器上。
4.赋予权限

chmod +x flamegraph.pl

chmod +x stackcollapse-perf.pl

4.生成perf.data (注意最后28591的是进程/线程的pid)

sudo perf record -e cpu-clock -g -p 28591

5.结束生成

Ctrl + c

6.用perf script工具对perf.data进行解析,生成perf.unfold

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

7.将perf.unfold中的符号进行折叠

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

8.最后生成svg图

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

http://www.ppmy.cn/news/835568.html

相关文章

学历,工作经验,火焰纹章

1.火焰纹章火焰纹章中,我一般是喜欢使用那些成长率好的人物,这些人物出场时的等级都不高,也就是说经验偏低,但是因为成长率好,一般是很容易修炼成强人在游戏后期会出现一些高等级的人物,这些的成长率一般都是惨不忍睹,对于懒得修炼的玩家,这些人物不错,省时. 2.学历,工作经验学…

java火焰纹章攻略女神之剑_《火焰纹章风花雪月》白云之章-女神再生仪式图文攻略...

原标题:《火焰纹章风花雪月》白云之章-女神再生仪式图文攻略 白云之章-女神再生仪式 青海节7月1日 7月的第一天,首先获得3000G的活动资金,并且今天是卡斯帕尔的生日,给他200G祝他生日快乐。 青海节7月5日 这个月的课题是暗杀计划的…

火焰纹章核心功能的实现

"火焰纹章"核心功能的实现 第一关预览 用到的软件 1.PngSplit: 用于将整图分割为一个个的素材,对帧动画有特效 2.Cocos2d-x: 代码和UI分开操作,减少了程序和美术之间的交互冲突,提高了代码的保密性。功能强大且完善,编译测试方便简洁,但在游戏项目创建时要确定…

勇者预言java_火焰之纹章 英雄

台词和语音欣赏 日语声优:花江夏树(Natsuki Hanae) 英语声优:Kyle McCarley 加入宣言: 我是阿雷武。是索菲亚解放军的领袖。这把剑一定能助你一臂之力! 城堡问候: (一)这里全是从没见过的事物,还有许多不同…

java火焰纹章攻略女神之剑_火焰纹章风花雪月图文攻略 主线流程+角色培养+转职系统 白云之章女神再生仪式②-游侠网...

【女神再生仪式袭击战】 战场一览: 过关攻略: 这一关需要在25回合内击败敌将,回合数比较充裕,通关并非难事。但是地图中间有一个死神骑士,虽然不会主动攻击,不过他身上的暗魔法考试准考证,是用来…

战棋SRPG游戏开发-序

什么是SRPG 战略角色扮演游戏(Strategy Role-Playing Game),日本又称角色扮演模拟游戏,简称SRPG或RSLG,最大特性在于战斗系统中拥有类似战略游戏的游戏方式,以及具有类似角色扮演游戏的剧情推演及人物成长。…

火焰之纹章的各种计算

1.属性:HP:影响人物生存能力力(魔力):影响物理,魔法攻击力,杖的恢复效果和杖的命中率。技:影响命中率,必杀率。速:影响回避率,攻速。幸:影响命中率…

mac批量在文件名前面加相同文字?

mac批量在文件名前面加相同文字?你平时在使用电脑进行工作或者学习的时候,是不是需要做一些关于文件整理和保存的操作呢,并且还需要对一大堆的文件进行重名呢?相信很大多数小伙伴都要面对这些,经常需要将大量文件的名称…