资讯专栏INFORMATION COLUMN

大话火焰图(flame graph)

Yumenokanata / 1338人阅读

摘要:火焰图是什么就是下图展示的图形简而言之就是这个图形看起来像一团跳动的火焰这也正是名字的由来火焰图的作用火焰图用于分析性能火焰图该怎么看火焰图关注哪几个部分颜色本身没有什么意义纵向表示调用栈的深度横向表示消耗的时间上述几个部分分别体现什么横向

火焰图是什么

就是下图展示的图形


简而言之,就是这个图形看起来像一团跳动的火焰,这也正是名字的由来.

火焰图的作用

火焰图(flame graph)用于分析性能

火焰图该怎么看 火焰图关注哪几个部分

颜色本身没有什么意义

纵向表示调用栈的深度

横向表示消耗的时间

上述几个部分分别体现什么 横向来看

由于横向表示消耗的时间,所以一个格子的宽度越大越说明其可能是瓶颈

纵向来看

由于纵向表示调用栈的深度,所以火焰的火苗尖部就是CPU正在执行的操作

综上

主要看那些比较宽大的火苗

特别是那些平头的火苗

如何生成火焰图

首先要有一个Tracer工具

Linux的Tracer工具

(常用)perf工具,参考Linux Profiling at Netflix的介绍

systemtap,相对更强大,缺点是要学习该工具的编程语言

常见火焰图类型

常见的火焰图类型有 On-CPU,Off-CPU,还有 Memory,Hot/Cold,Differential 等等

什么时候使用On-CPU,什么时候使用Off-CPU?

如果是CPU则使用On-CPU火焰图

如果是IO或锁则使用Off-CPU火焰图

不确定该怎么办

使用压测工具看看能否让CPU使用率趋于饱和

如果不管怎么压,CPU使用率始终上不来,那么很大可能是IO或锁出问题了,此时应该用Off-CPU火焰图,否则用On-CPU

还是不确定该怎么办

都搞搞

正常情况下两张图的差异是比较大的

如果差异不大,那么有可能是CPU被其他进程抢了

参考

Blazing Performance with Flame Graphs
白话火焰图
如何读懂火焰图

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/63157.html

相关文章

  • Java-FlameGraph火焰

    摘要:什么是火焰图怎么用以下会为你一一解答。工具包标准分析器,用于生成系统堆栈信息提供转换成带标示的代理生成火焰图的工具生成全部进程的堆栈信息还有一些问题很多方法都是缺少的,对比起,在图里的堆栈信息可能只有的深度。 什么是FlameGraph火焰图?怎么用?以下会为你一一解答。 Lets Go! 1.结论 如果能生成出来对应图表,分析java使用cpu性能很好用。 但是有时生成出来的堆栈...

    shleyZ 评论0 收藏0
  • 基本性能分析,省了几百万美元

    摘要:本文是关于我如何应用基本性能分析技术,借助火焰图做了一处小改进,使得我们计算机集群的状况获得了倍的改善,并在第二年帮助节省了几百万刀。最终,通过对平均大小在的事件进行批量插入,我们的吞吐量获得了的提高。 本文是关于我如何应用基本性能分析技术,借助火焰图做了一处小改进,使得我们 Postgres 计算机集群的 CPU 状况获得了 10 倍的改善,并在第二年帮助 Heap 节省了几百万刀。针对用...

    张宪坤 评论0 收藏0
  • 前端每日实战:88# 视频演示如何用 CSS 和 D3 创作火焰动画

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。最后,把火苗元素设置为个,形成火焰效果大功告成 showImg(https://segmentfault.com/img/bVbec4L?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。 htt...

    lbool 评论0 收藏0
  • 前端每日实战:88# 视频演示如何用 CSS 和 D3 创作火焰动画

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。最后,把火苗元素设置为个,形成火焰效果大功告成 showImg(https://segmentfault.com/img/bVbec4L?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。 htt...

    vincent_xyb 评论0 收藏0
  • [译]保持Node.js的速度-创建高性能Node.js Servers的工具、技术和提示

    摘要:本文翻译自原文地址中文标题保持的速度创建高性能的工具技术和提示快速摘要是一个非常多彩的平台,而创建服务就是其非常重要的能力之一。在目录下,我们执行译者注现在的话可以使用新的形式的命令语法会在剖析完毕后,创建文件并自动打开浏览器。 pre-tips 本文翻译自: Keeping Node.js Fast: Tools, Techniques, And Tips For Making Hi...

    Lavender 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<