性能工具之 FlameGraph 火焰图

简介: 其实很多类似 perf 的工具都能生成火焰图,像 systemtap/dtrace 之类的并且这个思路,现在在 js 优化、代码优化等各方面都有具体的应用了至于怎么理解?简单点说,就是看谁又平又宽

一、前言

很多人觉得火焰图炫酷

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

这里演示一下 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 文件

image.png

三、小结

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

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

至于怎么理解?

简单点说,就是看谁又平又宽

目录
相关文章
|
Linux
如何看懂火焰图
如何看懂火焰图
677 0
如何看懂火焰图
|
4月前
|
Ubuntu
代码性能展现 火焰图
代码性能展现 火焰图
36 0
|
9月前
|
Ubuntu
perf + 火焰图分析软件性能
perf + 火焰图分析软件性能
96 0
|
11月前
|
监控 数据可视化 前端开发
火焰图是怎么画出来的?Pyroscope源码解析之火焰图
火焰图简述火焰图(Flame Graph) 由Brendan Gregg在2011年创造,是一种可视化程序性能分析工具,它可以帮助开发人员追踪程序的函数调用以及调用所占用的时间,并且展示出这些信息。一般性解释火焰图的基本思想是将程序的函数调用栈转化为一个矩形的 “火焰” 形图像,每个矩形的宽度表示该函数所占用的比例,高度表示函数的调用深度(也就是递归调用的层数)。通过比较不同时间点的火焰图,可以快
333 0
|
前端开发 数据可视化 关系型数据库
巧用 “ 火焰图 ” 快速分析链路性能
巧用 “ 火焰图 ” 快速分析链路性能
252 0
巧用 “ 火焰图 ” 快速分析链路性能
|
Arthas 测试技术 网络安全
Profiler 生成火焰图 | 学习笔记
快速学习 Profiler 生成火焰图
1071 0
Profiler 生成火焰图 | 学习笔记
|
数据采集 运维 Ubuntu
|
SQL 数据可视化 程序员
clickhouse与火焰图
clickhouse与火焰图
521 0
clickhouse与火焰图
|
存储 算法 数据可视化
聊聊Graphin的图分析
今年有幸跟参与到Antv Graphin的共建组织中,并与山果同学一起做了Graphin FY21财年的产品规划。这篇文章主要根据Graphin规划内容重新思考图分析。 # 定位 既然聊到了图可视化分析,首先要讲清楚什么是图,什么是图分析。 ## 图 ![image.png](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.c
1766 0
|
架构师 Java
分析复杂问题时,我们该画一个怎样的图?
我们在面对一些复杂问题时,该如何通过一个系统性的思考路径去(尝试)解决问题?系统循环图可能会是一个简单可行的工具哦!
615 0
分析复杂问题时,我们该画一个怎样的图?