[转帖]使用perf生成Flame Graph(火焰图)

使用,perf,生成,flame,graph,火焰 · 浏览次数 : 0

小编点评

**脚本名称:**perf_flame_graph.sh **脚本功能:** 使用 perf 工具生成火焰图,并将其转换为 SVG 格式输出。 **使用方法:** 1. 将 script 保存为 `perf_flame_graph.sh` 文件。 2. 修改 `$1` 的值,以指定采样的时间(以秒为单位)。 3. 双击运行脚本:`./perf_flame_graph.sh` **脚本内容:** ```bash #!/bin/bash # 检查参数数量 if [ $1 -ne 1 ]; then echo "Usage: $0 seconds" exit 1 fi # 设置默认采样时间 sample_time="$1" # 启动 perf 命令 perf record -a -g -o perf.data "$PID" sleep "$sample_time" # 停止 perf 命令 kill -s INT "$PID" # 列出 perf 的输出文件 perf script -i perf.data ``` **测试结果:** 执行脚本时,会创建一个名为 `perf.svg` 的 SVG 文件,其中包含火焰图。该文件可以使用任何图像编辑软件进行查看。 **示例:** ``` ./perf_flame_graph.sh 10 ``` 这将创建一个 10 秒的火焰图,并将其保存为 `perf.svg` 文件。

正文

https://www.cnblogs.com/keanuyaoo/p/3313378.html

 

  使用SystemTap脚本制作火焰图,内存较少时,分配存储采样的数组可能失败,需要编写脚本,还要安装kernel的debuginfo包。使用perf的话,相对来说要简单一些。不过在有kernel的debuginfo包的时候,采样显示的信息要更丰富一些。
  为了使用perf制作火焰图方便,我编写了下面的脚本,贴上来备忘,也方便需要的人。
  脚本如下:
if [ $ # -ne 1 ];then
echo "Usage: $0 seconds"
exit 1
fi

perf record -a -g -o perf.data &

PID = ` ps aux | grep "perf record" | grep -v grep | awk '{print $2}' `

if [ -n "$PID" ]; then
sleep $ 1
kill -s INT $PID
fi

# wait until perf exite
sleep 1

perf script -i perf.data & > perf.unfold
perl stackcollapse -perf.pl perf.unfold & > perf.folded
perl flamegraph.pl perf.folded >perf.svg
  将上面的脚本保存为perf_flame_graph.sh。根据上面的Usage可以看出在执行的时候,只需要指定采样的时间,单位为秒。
  下面是我在测试机上制作的火焰图:
  我这里制作的火焰图没有指定具体的进程或线程,如果只想关注某个具体的进程,可以在pref record命令后面加上命令或者通过-p选项指定进程ID。更多的参数和选项参见man perf-record。

与[转帖]使用perf生成Flame Graph(火焰图)相似的内容:

[转帖]使用perf生成Flame Graph(火焰图)

https://www.cnblogs.com/keanuyaoo/p/3313378.html 具体的步骤参见这里: 《flame graph:图形化perf call stack数据的小工具》 使用SystemTap脚本制作火焰图,内存较少时,分配存储采样的数组可能失败,需要编写脚本,还要安装k

[转帖]使用火焰图(FlameGraph)分析程序性能

火焰图概念 火焰图(FlameGraph)是 svg 格式的矢量图,是先通过 perf 等工具分析得到结果,并将该结果生成的具有不同层次且支持互动的图片,看起来就像是火焰,这也是它的名字的由来。表现形式如下所示: 需要注意以下几点: 纵向(Y 轴)高低不平,表示的是函数调用栈的深度。每一层都是一个函

[转帖]kafka压测多维度分析实战

设置虚拟机不同的带宽来进行模拟压测 kafka数据压测 1、公司生产kafka集群硬盘:单台500G、共3台、日志保留7天。 1.1 版本:1.1.0 2、压测kafka。 2.1 使用kafka自带压测工具:bin/kafka-producer-perf-test.sh 命令参数解释: --num

[转帖]使用Flame Graph进行系统性能分析

http://t.zoukankan.com/arnoldlu-p-10148558.html 关键词:Flame Graph、perf、perl。 FlameGraph是由BrendanGregg开发的一款开源可视化性能分析工具,形象的成为火焰图。 从底向上像火苗一样逐渐变小,也反映了相互之间的包

[转帖]《Linux性能优化实战》笔记(24)—— 动态追踪 DTrace

使用 perf 对系统内核线程进行分析时,内核线程依然还在正常运行中,所以这种方法也被称为动态追踪技术。动态追踪技术通过探针机制来采集内核或者应用程序的运行信息,从而可以不用修改内核和应用程序的代码就获得丰富的信息,帮你分析、定位想要排查的问题。 以往,在排查和调试性能问题时,我们往往需要先为应用程

[转帖]flamegraph(火焰图)性能分析

`https://www.cnblogs.com/HadesBlog/p/13877761.html` 使用perf工具以及flamegraph可以将调试的程序运行栈以及在每个函数中停留的时间以火焰图的形式展现出来。 perf工具可以在内核源码tools/perf中编译安装。 make && mak

[转帖]linux 系统级性能分析工具 perf 的介绍与使用

目录 1. 背景知识 1.1 tracepoints 1.2 硬件特性之cache 2. 主要关注点 3. perf的使用 3.0 perf引入的overhead 3.1 perf list 3.2 perf top 3.3 perf stat 3.4 perf bench 3.4.1 perf b

[转帖]Perf分析CPU性能问题笔记

https://cloud.tencent.com/developer/article/1416234 本文仅仅是一个笔记。 场景 观察进程的CPU使用情况 观察进程内各个函数的CPU使用情况: sudo perf top -p 复制 同时显示函数调用链: sudo perf top -

[转帖]人工智能 Java混合模式火焰图

https://www.dazhuanlan.com/smallnight/topics/1040103 在做性能调优的时候,我们通常会借助一些性能分析工具(比如 perf,DTrace)分析系统资源的使用情况,比如 CPU、内存等,但这些工具分析的结果通常是文本形式,不够直观,不便于快速定位系统瓶

[转帖]人工智能 Java混合模式火焰图

https://www.dazhuanlan.com/smallnight/topics/1040103 在做性能调优的时候,我们通常会借助一些性能分析工具(比如 perf,DTrace)分析系统资源的使用情况,比如 CPU、内存等,但这些工具分析的结果通常是文本形式,不够直观,不便于快速定位系统瓶