perf+火焰图使用

使用

# 安装perf
yum install perf -y
# 下载绘图工具
git clone https://github.com/brendangregg/FlameGraph.git

# 采集数据
perf record -F99-p3887-g -- sleep 30

# 生成火焰图
perf script -i perf.data &> perf.unfold
./FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
./FlameGraph/flamegraph.pl perf.folded > perf.svg

火焰图的含义

  1. 火焰图是基于 stack 信息生成的 SVG 图片, 用来展示 CPU 的调用栈。 y 轴表示调用栈, 每一层都是一个函数.
  2. 调用栈越深, 火焰就越高, 顶部就是正在执行的函数, 下方都是它的父函数. x 轴表示抽样数, 如果一个函数在 x 轴占据的宽度越宽,
  3. 就表示它被抽到的次数多, 即执行的时间长. 注意, x 轴不代表时间, 而是所有的调用栈合并后, 按字母顺序排列的.
  4. 火焰图就是看顶层的哪个函数占据的宽度最大. 只要有 “平顶”(plateaus), 就表示该函数可能存在性能问题。 颜色没有特殊含义,
  5. 因为火焰图表示的是 CPU 的繁忙程度, 所以一般选择暖色调.

原文地址:https://www.cnblogs.com/CSunShine/p/11478278.html

时间: 2024-10-09 12:54:23

perf+火焰图使用的相关文章

perf + 火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果: perf record perf report 举例: sudo perf record -e cpu-clock -g -p 2548 -g 选项是告诉perf record额外记录函数的调用关系 -e cpu-clock 指perf record监控的指标为cpu周期 -p 指定需要reco

[转]perf + 火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果: perf record perf report 举例: sudo perf record -e cpu-clock -g -p 2548 -g 选项是告诉perf record额外记录函数的调用关系 -e cpu-clock 指perf record监控的指标为cpu周期 -p 指定需要reco

使用perf + FlameGraph生成进程火焰图

FlameGraph代码:https://github.com/cobblau/FlameGraph 使用方法 1,perf record --call-graph dwarf -p 12345 2,perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl > process.svg 使用其他工具如何生成火焰图的方法在FlameGraph的Readme只有详细的介绍

使用linux perf工具生成java程序火焰图

pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: 120% } a:link { } 重要参考文献:www.brendangregg.com/blog/2017-06-30/package-flame-graph.html Java FlameGraph(火焰图)能够非常直观的展示java程序的性能分析结果,方便发现程序热点和进一步调优.本文将展示如何使用

perf + Flame Graph火焰图分析程序性能

1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果: usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS] The most commonly used perf commands are: annotate Read perf.data (created by perf record)

转发 Java火焰图在Netflix的实践

为了分析不同软件或软件的不同版本使用CPU的情况,相关设计人员通常需要进行函数的堆栈性能分析.相比于定期采样获得数据的方式,利用定时中断来收集程序运行时的PC寄存器值.函数地址以及整个堆栈轨迹更加高效.目前,OProfile.gprof和SystemTap等工具都是采用该方法,给出详细的CPU使用情况报告.然而,这些工具在处理复杂的统计数据时,给出的报告往往过于繁杂.不够直观.不能直接反应分析员所需要的数据.为此,Brendan Gregg开发了专门把采样到的堆栈轨迹(Stack Trace)转

Linux火焰图

关注火焰图非常长的时间了!~~一直未能自己做个火焰图出来.今天小试一把. ubuntu18.04 ssh登陆之后执行命令 安装软件 apt-get install -y linux-cloud-tools-generic linux-tools-generic 访问https://github.com/brendangregg/FlameGraph download zip然后解压完传到ubuntu18.04的/root/ 然后找个程序执行(我拿iperf用来做性能测试的对象,你可以用dd或者p

Linux程序性能分析和火焰图

Linux程序性能分析和火焰图 Linux程序的性能分析工具数量比较多,涉及到整个操作系统的方方面面,可能是开源的原因吧,相对于Windows来说丰富太多.其中应用分析性能方面Dtrace, SystemTap, Perf_events应该算是这方面的集大成者.Dtrace目前只在较高的内核版本有支持,记得是4.8以后, SystemTap则是需要在Red Hat的官方网站下载OS版本对应的调试符号和对应的调试版本内核,配置起来需要花费一定的时间,只有Perf_events使用起来比较方面,但是

nodejs 应用火焰图简单分析

以前有写过一个使用speedscope 的简单说明,以下是一个使用另外一个工具进行火焰图分析的简单说明 环境准备 项目结构 ├── app.js ├── package.json └── yarn.lock 代码说明 app.js //app.js const express = require('express'); const console = require('console'); const levenshtein = require('fast-levenshtein'); var