使用火焰图进行性能分析(一)

这篇具有很好参考价值的文章主要介绍了使用火焰图进行性能分析(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么会用到火焰图?火焰图能干那些事儿?

  1. 分析函数执行的频度;
  2. 分析哪些函数经常阻塞;
  3. 分析哪些函数频繁操作内存;

火焰图的主要特点:

  1. 每一列代表一个调用栈,每个格子代表一个函数;
  2. 纵轴呈现出栈的深度,按照各函数的调用关系自下而上排列;
  3. 最顶端的格子代表采样时正在占用CPU的函数;
  4. 横轴:采集到的调用栈的信息,按字母顺序从左到右依次排列;
  5. 每个格子的颜色是随机的,颜色深浅没具体意义;
  6. 火焰图主要有5种:On-CPU、Off-CPU、内存、红蓝、Hot/Cold火焰图(火焰图官方文档);
  7. On-CPU火焰图的横轴指CPU占用时间,Off-CPU火焰图的横轴代表阻塞时间;
  8. 采样的方式可以是单线程、多线程、多进程等。

注意:横轴不代表时间,宽度表示在采样过程中出现的频率:一个格子的宽度越大,表示这个函数被采集到的次数越多。亦即是该函数造成性能瓶颈的可能性越大。

火焰图类型简介

类型 横轴意义 适用场景 采样方式
CPU火焰图(也叫On-CPU火焰图) CPU占用时间 1. 找到CPU占用高的函数;
2. 分析代码热路径
固定频率采样CPU调用栈
Off-CPU火焰图 阻塞时间 1. 分析I/O、网络阻塞场景导致的性能问题;
2. 分析锁竞争、死锁导致的性能问题
固定频率采样阻塞事件调用栈
内存火焰图 内存申请、释放函数调用次数 1. 分析内存泄漏问题;
2. 找到内存占用高的对象、申请内存多的函数;
3. 分析虚拟内存或物理内存泄漏问题;
四种采样方式:
1. 跟踪malloc/free;
2. 跟踪brk;
3. 跟踪mmap;
4. 跟踪页错误;
Hot/Cold火焰图 On-CPU和Off-CPU综合展示 需要结合CPU占用和阻塞进行综合分析的场景; On-CPU和Off-CPU的结合;
红蓝交叉火焰图 红色表示上升、蓝色表示下降 不同版本之间性能对比 对比两个On-CPU火焰图;

使用哪种火焰图?On-CPU or Off CPU ?

取决于当前的性能瓶颈是什么:如果CPU是瓶颈则使用On-CPU火焰图,如果是I/O或者锁造成的性能瓶颈则使用Off-CPU火焰图。

可以先查看一下CPU是不是快占满了,如果CPU占用不高,就用Off-CPU。

也可以使用压测工具查看是否能让CPU使用率趋于饱和,如果能,则使用On-CPU;如果不论怎样打压,CPU使用率始终上不来,那么大概率是由于I/O或者锁卡住了,此时使用Off-CPU较好。

实在拿不准的情况下,也可以两种都试试,一般情况下两者的差异比较大,如果两张火焰图长得差不多,那么很有可能是CPU被其他进程抢占了。

分析技巧

  1. 纵轴代表调用栈深,即栈帧数,展示了函数调用关系:下面的调用上面的;
  2. 横轴代表调用频次,格子的宽度越大,越说明可能是瓶颈的原因(但要注意横轴不代表事件);
  3. 一些无意义的事:横向排列的函数的先后顺序没实际意义、火焰图中格子的颜色只是为了视觉上的区分,颜色深浅无实际意义。

火焰图的生成

先贴个图上来,具体内容明天 下次再写吧。
下节预告:perf、FlameGraph、stackcollapse、采集堆栈、折叠堆栈…
使用火焰图进行性能分析(一)文章来源地址https://www.toymoban.com/news/detail-447273.html

到了这里,关于使用火焰图进行性能分析(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LabVIEW使用图像处理进行交通控制性能分析

    LabVIEW使用图像处理进行交通控制性能分析 采用普雷维特、拉普拉斯、索贝尔和任意的空间域方法对存储的图像进行边缘检测,并获取实时图像。然而,对四种不同空间域边缘检测方法的核的性能分析。 以前,空路图像存储在数据库中,道路上没有任何车辆。将图像转换为阵

    2024年02月13日
    浏览(80)
  • 使用阿里巴巴开源神器Arthas进行性能分析

    目录 前言: Arthas介绍 启动 分析命令 Profiler工具 前言: Arthas是一款由阿里巴巴开源的Java诊断工具,它可以在生产环境中帮助开发人员快速地定位问题,并进行高效的性能分析。通过在命令行中输入简单的

    2024年02月11日
    浏览(87)
  • 性能分析与调优: Linux 使用 iperf3 进行TCP网络吞吐量测试

    目录 一、实验 1.环境 2.TCP网络吞吐量的微观基准测试 二、问题 1.iperf参数有哪些 2.iperf如何二进制安装 (1)主机 表1-1 主机 主机 架构 组件 IP 备注 prometheus 监测 系统 prometheus、node_exporter  192.168.204.18 grafana 监测GUI grafana 192.168.204.19 agent  监测 主机 node_exporter 192.168.204.20 (1)

    2024年02月03日
    浏览(60)
  • 如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

    PostgreSQL中的 pg_stat_statements 是一个强大的插件,用于追踪执行时间最长的SQL语句。通过它,我们可以获取有关SQL语句执行频率、总执行时间、平均执行时间等信息,从而进行性能调优和问题分析。 首先,我们需要确保 pg_stat_statements 插件已经安装。在大多数PostgreSQL发行版中,

    2024年04月25日
    浏览(75)
  • 软件为什么要进行性能压力测试?

    软件为什么要进行性能压力测试?随着软件应用的不断增多和复杂度的提高,软件的性能对用户体验和业务成功至关重要。性能问题可能导致软件运行缓慢、崩溃或无响应,给用户带来不便甚至损失。为了确保软件能够在高负载和压力下正常运行,性能压力测试变得至关重要

    2024年02月13日
    浏览(56)
  • 试用阿里云云拨测对Web网站的网页性能进行测试并分析

    目录 前言 云拨测操作步骤 1.开通应用实时监控服务ARMS 2.成功登录后,在产品类别下选择中间件应用实时监控服务,在云拨测卡片上单击立即试用。 3.登录ARMS控制台,在左侧导航栏中选择云拨测定时拨测,在定时拨测页面右上角单击+创建定时任务。 4.设置任务名称、任务类

    2024年02月05日
    浏览(45)
  • MySQL性能分析工具的使用

    当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。 整个流程划分成了 观察( Show status ) 和 行动( Action ) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。    

    2024年02月09日
    浏览(56)
  • 性能测试分析与使用

    性能测试分析与使用 xx系统已经成功发布,依据之前项目的规划,计划服务1000+客户,未来势必会出现业务系统中信息大量增长的趋势。 随着该系统在生产状态下日趋稳定,也让我们可以更静下心来去关注性能方面的问题: 能够承受多大的数据量? 系统的瓶颈是什么? 代码的

    2023年04月08日
    浏览(46)
  • 性能分析工具 之 Perfetto基本使用

            Perfetto是google从Android10开始引入的一个全新的平台级跟踪分析工具。适用于Android、Linux和Chrome的更加通用和复杂的用于性能检测和跟踪分析的生产级开源项目。在android系统中对性能分析是尤为重要的一部分,仅从logcat中进行时间分解太繁琐,android系统中可以通过

    2024年02月10日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包