Perf火焰图生成及分析
1抓取性能数据
先通过top或者ps 命令查询需要抓取火焰图的pid,然后执行如下脚本perf.sh抓取相应进程的火焰图数据:
#!/bin/bashfunction doperfpid() {echo "doperf $pid $name: doperf pid name 10 (记录8011进程、ls name,10s时间)"perf record -g -F 400 -p $1 -- sleep $3perf script > $2.$1.perfdata
}
source perf.sh
#执行脚本抓取planning进程,进程id为13944 30秒的性能数据
doperfpid 13944 planning 30
三个参数分别为:$1:进程ID $2:进程名称 $3:时间
最后会得到文件: planning.13944.perfdata
2 火焰图制作
制作火焰可以采用一款开源工具 FlameGraph,该工具出自性能优化大师,性能之巅作者乔治·布莱登,工具下载号以后按下面步骤生成火焰图,火焰图可以用浏览器打开,可缩放:
../../Code/FlameGraph/stackcollapse-perf.pl planning.13944.perfdata > planning.13944.folded
# 生成火焰图矢量图
../../Code/FlameGraph/flamegraph.pl planning.13944.folded > planning.13944.svg
注意:
y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调
Perf火焰图生成及分析相关推荐
- linux性能优化——利用perf火焰图分析内核调用
1.内核进程 我们知道,在 Linux 中,用户态进程的"祖先",都是 PID 号为 1 的 init 进程.比如,现在主流的 Linux 发行版中,init 都是 systemd ...
- C++ 之 perf+火焰图分析与Debug
0. 简介 在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,之前作者就专门写过两篇博客(Ubuntu环境下便于调试代码的工具.Valgrind对ROS程序的可视化分析)来介绍性能分析的问 ...
- 【性能】perf + 火焰图分析软件性能瓶颈
目录 零.即看即用 一.perf 命令 perf简介 perf record参数 命令例子 二.火焰图的含义 三.互动性 四.火焰图示例 五.局限 六.Node 应用的火焰图 七.浏览器的火焰图 八. ...
- perf + 火焰图用法 小结
要对新服务做性能测试,分析代码热点,初识perf,做下总结 perf + 火焰图用法 perf简介 Perf (Performance Event), Linux 系统原生提供的性能分析工具, 会返回 ...
- perf + 火焰图分析程序性能
From: https://www.cnblogs.com/happyliu/p/6142929.html 1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便 ...
- perf+火焰图 = 性能分析利器
perf 1. perf安装 sudo apt install linux-tools-common 检查是否安装好 perf 如果出现 You may need to install the fol ...
- mysql火焰图_Linux 性能分析利器 -火焰图 flame graph
简述 Perf 命令(performance的简写)是 Linux 系统原生提供的性能分析工具,返回 CPU 正在执行的函数名以及调用栈(stack). 通常,它的执行频率是 99Hz(每秒99次), ...
- java 性能 火焰图_flamegraph(火焰图)性能分析
使用perf工具以及flamegraph可以将调试的程序运行栈以及在每个函数中停留的时间以火焰图的形式展现出来. perf工具可以在内核源码tools/perf中编译安装. make &&am ...
- perf +火焰图使用
以mysqld进程为例: [root@VM-90-225-centos ~]# ps -ef | grep mysqld root 9808 9621 0 19:30 pts/7 00:00:00 g ...
最新文章
- WordPress工作原理之程序文件执行顺序
- Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)
- python手把手入门_新手必看:手把手教你入门 Python
- VTK:Math之1DTupleInterpolation
- javascript --- 非交互、交互、协作、任务
- [New Portal]Windows Azure Web Site (4) Web Site Gallery
- 限制RICHTEXTBOX的输入的范围
- LeetCode 345. Reverse Vowels of a String
- 你知道,什么时候用Vue计算属性吗?
- 从各位前辈手中搜集的经验
- 49.Linux/Unix 系统编程手册(下) -- 内存映射
- Ubuntu安装Atom编辑器
- ubuntu 下codeblocks的相关配置
- diabetes影响因子2017_瑞金医院创办Journal of Diabetes成为亚太地区影响因子最高的糖尿病学术期刊...
- 分开奇数和偶数(C语言实现)
- 鸡啄米教程之VS2010/MFC编程入门教程之目录和总结
- 超越函数e^(-x^2)的定积分
- python如何判断tcp异常断开_TCP socket如何判断连接断开
- linux 管理部门打印,Linux打印机相关的命令-打印管理_Linux常用命令大全
- Java —— 日期时间 API
热门文章
- 互联网:疫情之下,哪些行业能保命
- Linux ps -aux 和 ps -ef 查看进程信息说明+ps查看进程中的线程
- pro 台电tbook16_台电TbooK 16 Pro (E6C6)-双系统平板最新固件
- 2019保研成电东南北大清华...之旅
- 江苏有个县,人口近200万,却没有高铁站
- 企业园区网络的综合设计 (一)
- 博客园电子期刊2013年01月刊发布啦
- mysql xtrabackup恢复_MySQL Xtrabackup备份和恢复
- 播放器php调用不显示不出来,php – Jwplayer:加载播放器时出错:找不到可播放的来源...
- 贾跃亭与恒大“结婚”仨月就闹崩 各执一词谁之过