性能工具之 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 Android开发
探索eBPF:Linux内核的黑科技(下)
探索eBPF:Linux内核的黑科技
|
机器学习/深度学习 监控 Ubuntu
perf性能分析工具使用分享
perf性能分析工具使用分享
3129 0
perf性能分析工具使用分享
|
3月前
|
机器学习/深度学习 人工智能 运维
3类电力绝缘子缺陷检测数据集分享(破损绝缘子/污闪绝缘子/正常绝缘子)
本数据集含12000张真实输电线路实拍图像,标注3类绝缘子状态(破损/污闪/正常),YOLO标准格式,覆盖多光照、天气与视角,适用于YOLO系列等模型训练,支撑智能巡检、无人机检测与电力AI科研。
|
5月前
|
机器学习/深度学习 人工智能 运维
高压电线电力巡检六类图像识别数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含2000张高压输电线路巡检图像,涵盖电缆破损、绝缘子破损、正常电缆/绝缘子、杆塔、植被遮挡共6类,YOLO格式标注,已划分train/val/test,开箱即用,专为YOLO系列目标检测任务优化,助力智能电力巡检研发与落地。(239字)
803 6
|
数据采集 存储 Rust
Rust爬虫实战:用reqwest+select打造高效网页抓取工具
在数据驱动时代,本文详解如何用Rust构建高效稳定爬虫系统。基于reqwest与select库,以books.toscrape.com为例,演示HTTP请求、HTML解析、分页抓取及数据存储全流程,涵盖同步与异步实现、反爬应对及性能优化,助你掌握Rust爬虫开发核心技能。
531 2
|
消息中间件 存储 安全
深入理解 Qt 信号槽:高效沟通的桥梁
深入理解 Qt 信号槽:高效沟通的桥梁
1830 1
|
SQL 存储 运维
阿里云分布式关系型数据库服务 DRDS
DRDS 是阿里巴巴集团自主研发的分布式数据库中间件产品,专注于解决单机关系型数据库扩展性问题,具备轻量(无状态)、灵活、稳定、高效等特性,稳定运行11年,经历历届双十一核心交易业务和各类行业业务的考验
15779 0
|
网络协议 前端开发 Java
Coolbpf最新特性解读:profiler功能上线,助力性能分析和优化
本文介绍Coolbpf性能分析模块中的profiler功能。
|
关系型数据库 MySQL Java
译 | Off-CPU Flame Graphs
译 | Off-CPU Flame Graphs
721 0

热门文章

最新文章