首页 > 其他分享 >性能分析之FlameGraph火焰图的生成

性能分析之FlameGraph火焰图的生成

时间:2023-04-04 10:08:12浏览次数:64  
标签:Mar perf -- 08 生成 FlameGraph 火焰 root

很多人觉得火焰图炫酷。

如果只从操作上来说,真是没什么难度,只比大象放冰箱稍微难点。

这里演示一下perf结果怎么放冰箱,不,是怎么生成火焰图!


perf结果生成火焰图

  • 第一步:随便录点啥,我这里是所有操作,主要是生成perf.data文件。
[root@7DGroup FlameGraph]# perf record -F 99 -a -g -- sleep 60
[ perf record: Woken up 7 times to write data ]
[ perf record: Captured and wrote 1.868 MB perf.data (11880 samples) ]
[root@7DGroup FlameGraph]# ll
total 1924
drwxr-xr-x 7 root root    4096 Mar  4 07:42 FlameGraph
-rw------- 1 root root 1965540 Mar  4 08:45 perf.data
  • 第二步:转换成输出文件
[root@7DGroup FlameGraph]# perf script > out.perf
[root@7DGroup FlameGraph]# ll
total 7460
drwxr-xr-x 7 root root    4096 Mar  4 07:42 FlameGraph
-rw-r--r-- 1 root root 5668491 Mar  4 08:46 out.perf
-rw------- 1 root root 1965540 Mar  4 08:45 perf.data
  • 第三步:折叠栈信息
[root@7DGroup FlameGraph]# ./FlameGraph/stackcollapse-perf.pl out.perf > out.folded
[root@7DGroup FlameGraph]# ll
total 7576
drwxr-xr-x 7 root root    4096 Mar  4 07:42 FlameGraph
-rw-r--r-- 1 root root  115637 Mar  4 08:47 out.folded
-rw-r--r-- 1 root root 5668491 Mar  4 08:46 out.perf
-rw------- 1 root root 1965540 Mar  4 08:45 perf.data
  • 第四步:生成SVG文件。
[root@7DGroup FlameGraph]# ./FlameGraph/flamegraph.pl out.folded > kernel.svg
[root@7DGroup FlameGraph]# ll
total 7732
drwxr-xr-x 7 root root    4096 Mar  4 07:42 FlameGraph
-rw-r--r-- 1 root root  157603 Mar  4 08:48 kernel.svg
-rw-r--r-- 1 root root  115637 Mar  4 08:47 out.folded
-rw-r--r-- 1 root root 5668491 Mar  4 08:46 out.perf
-rw------- 1 root root 1965540 Mar  4 08:45 perf.data
[root@7DGroup FlameGraph]#
  • 第五步:下载并打开svg文件。

性能分析之FlameGraph火焰图的生成_代码优化


其实很多类似perf的工具都能生成火焰图,像systemtap/dtrace之类的。

并且这个思路,现在在js优化、代码优化等各方面都有具体的应用了。


至于怎么理解?简单点说,就是看谁又平又宽。


没了。 

标签:Mar,perf,--,08,生成,FlameGraph,火焰,root
From: https://blog.51cto.com/u_15181572/6167900

相关文章

  • day07 sparksql 生成Physical Plan
     1.案例sqlselectA,Bfromtestdata2whereA>2 对应的执行计划:==AnalyzedLogicalPlan==Project[A#23,B#24]+-Filter(A#23>2)+-SubqueryAliastestdata2+-View(`testData2`,[a#23,b#24])+-SerializeFromObject[knownnotnull(a......
  • Python的web框架自动生成readme文件的第三方模块介绍以及使用方法
    第一步安装pipinstalldjango-readme-generator第二步在Django项目配置文件文件中的INSTALLED_APPS配置中注册一下INSTALLED_APPS=[ django_readme_generator,]第三步命令运行产生readme文件pythonmanage.pygenerate_readme其实很简单,以上三步可以轻轻松松的自动......
  • (4.3)数组、对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组、数
    1.1数组、对象及类数组对象1.数组:​ 数组是有序的数据集合,其中的索引值从0开始递增,并且数组有length属性,可以获取数组内的元素个数,其中的值可以是任何的数组类型。2.对象:​ 对象是无序的是由一个或多个键值对组成的数据集合,对象没有length属性。3.伪数组(类数组对象):​ ......
  • PHP实现JWT lcobucci/jwt生成jwt token
    github:https://github.com/lcobucci/jwt/tree/3.21.安装PHP5.5+(v3.2)andPHP7.1(v4.x)OpenSSLExtension"lcobucci/jwt":"^3.3"composerrequirelcobucci/jwt2.一些参数说明iss【issuer】发布者的url地址sub【subject】该JWT所面向的用户,用于处理特定应用,不是常......
  • 如何用Java程序生成大乐透号码?
    在大乐透游戏中,需要选出5个红球号码和2个蓝球号码。这个过程可能比较耗时,而且如果想要生成多组号码,手动输入的方式就变得特别不切实际。因此,我们可以使用Java程序来实现大乐透号码的自动生成。一、生成红球号码首先,需要确定生成红球号码的范围和数量。在大乐透游戏中,红球号码的......
  • Midjourney? 文心一格? 一张思维导图带你了解图片生成AI
    (“马爸爸开心回国图”,图片使用Midjourney生成) 最近和ChatGPT大语言模型一样大火的还有图片生成AI(Text-To-Image),大家耳熟能详的Midjourney、StableDiffusion、Dalle2、Imagen等等都是图片生成AI,尤其是百度的文心一格上线后,网上的讨论(调侃)更加火热。 图片生成普遍采用Di......
  • 解决java注解处理器生成的方法,在编译时报错“找不到符号”
    我的注解处理器,添加的其中一个方法中有一段AST代码如下:JCTree.JCFieldAccessobjectsIsNull=maker.Select(maker.Ident(names.fromString("java.util.Objects")),names.fromString("isNull"));JCTree.JCIfifExpr1=maker.If(maker.Apply(List.nil(),objectsI......
  • smark doc api文档生成器插件
    1、pom.xml文件导入插入包 <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/......
  • 分布式ID生成方案总结
    什么是分布式ID分布式ID是指,在分布式环境下可用于对数据进行标识且易存储的全局唯一的ID标识。为什么需要分布式ID对于单体系统来说,主键ID可能会常用主键自动的方式进行设置,这种ID生成方法在单体项目是可行的。对于分布式系统,分库分表之后,就不适应了,比如订单表数据量太大了,分......
  • 用C#生成多个Telerik Report PDF
    1.创建一个新的WinForms或WPF应用程序,具体取决于您的需要。2.将TelerikReporting组件添加到您的应用程序中。您可以通过NuGet包管理器来完成此操作。3.在您的应用程序中添加多个报表文件。您可以使用TelerikReportDesigner创建报表并将其添加到您的应用程序项目中。确保为每......