Profiler 生成火焰图 | 学习笔记

简介: 快速学习 Profiler 生成火焰图

开发者学堂课程【线上问题排查利器 Alibaba Arthas(下)Profiler 生成火焰图】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/747/detail/13209


Profiler 火焰图


内容介绍:

一、Profiler 火焰图的目标

二、Profiler 的主要作用

三、案例

四、火焰图的含义

五、小结


一.目标:生成火焰图

介绍:Profiler 命令支持生成应用热点的火焰图。本质上是通过不断采样,把收集到的采样结果生成火焰图。

命令基本运行结构是 profiler 命令{命令参数}。


二.profiler 主要的作用

profiler 主要的作用是用来生成火焰图

Arthas 当中有一条命令这条命令叫profiler支持生成应用热点的火焰图。

所谓的应用热点可以用来监听不同的事件,在默认的情况下它监听的是cpu。

焰生成的是cpu的火焰图它本质上是通过不断的去采样把收集到的采样的结果生成一张火焰图profile的命令本身很简单,它的基本结构就是一个Profiler

后面跟命令,再跟这个命令的参数。并且这个命令参数是可选的,所以用中括号括起来。火焰图的使用简单关键是以后生成的火焰图需要能分析和读


三.案例

首先第一个例子是先启动 profiler

启动的作用是什么?

就是开始记录,从现在开始每隔一段时间获取它的采样的样本并且生成火焰图

首先输入 profiler。启动profiler的命令叫start。再按回车,它就开始启动。这个地方会有提示,默认的情况下就是对cpu进行采样profiling)。如下代码所示:

arthas@10829]$ profiler start

Started [ cpu ] profiling

[ arthas@10829]$

如果想知道到底支持哪一些事件也可以通过一条命令:list

这条命令可以显示出profiler所支持的所有的事件按回车,以下看到的就是profiler支持的一些事件,如下代码所示:

[ arthas@10829]$ profiler start

Started [cpu] profiling

[ arthas@10829]$ profiler list

Bjasic events:

cpu

Alloc

Lock

Wall

Itimer

Perf events :

page -faults

context - switches

cycles

instructions

cache – references

cache- misses

branches

branch- mi sses

bus-cycles

L1-dcache- load-misses

LLC- load-misses

dTLB-load-misses

mem: breakpoint

trace: tracepoint

(arthas@18829]$

第一个是基本的事件,有cpu,有锁,有防火墙,等等。下面是其他的一些事件。这些都是profiler所支持的一些事件

它默认的情况下就是第一个cpu的事件。这样可以显示所有支持的事件。

如果想获取它现在到底已经采集了多少个样本可以通过第三条命令Profiler getsamples 获得样本,再按回车。这时候它就会获得16个样本。如下代码所示:

[ arthas@10829]$ profiler getSamples

16

( arthas@10829j$

随着时间的增长它获取的样本就会越来越多。

假设敲两次回车变成18个样本,所以时间越长获取的样本就越多。如下代码所示:

( arthas@10829]$ profiler getSamples

18

(arthas@10829)$

另外一条命令叫profiler status这个命令有什么用呢?

它可以用来显示当前的获取的状态,如下图所示就会显示,它已经运行了158秒, 这个的是cpu。如下代码所示:

[ arthas@10829]$ profiler status

[perf] profiling is running for 158 seconds

[ arthas@10829]$ profiler getSample

30

(arthas@10829]$

可以看出现在已经有30个样本。那这时候想要把它停止怎么呢?

停止它就会生成样本的图。直接输入stop命令Profiler stop,按回车回车以后它就会停止,并且它会在如下这个目录下面生成一个svg的图片文件,它默认放在output目录下面。如下代码所示:

[ arthas@10829]$ profiler stopprofiler output file: /root/. arthas/lib/3.1.7/arthas/anthas outpu20200322-101225. Svg

OK

(arthas10829]$

那怎么切换目录呢?

因为它是一个隐藏的文件,所以要先找到这个文件,将这个文件复制出来,再切换一下目录上面的对上,它是客户端操作的,就可以进到相应的目录下。并且它是会跟随的。如下图所示:

image.png

如果现在想进output的目录下面这里面就有一个svg的图片可以双击打开,按允许会发现它生成了如下这样的一张图,这个图就是它所生成的火焰图。

image.png

生成火焰图它默认输出的是Svg的图片。如果想要生成的是Html文件怎么办?

它也可以指定生成HTML的文件。这时只需要在stop后面输入Format html这是指它的格式,再指定为Html就可以了。如下代码所示:

(arthas@10829]$ profiler stop -format html

如果敲回车可以看到它也是输出在同一个目录下面,但是它生成的是一个html的文件。如下代码所示:

[ arthas@10829]$ profiler stop --format htmlprofiler output file: /root . arthas/lib/3.1. 7/arthas/anthasoutput/20299322101458 html

OK

rthas@10829]$

这时可以看有没Output目录。在arthas里面寻找会发现有一个svg的图片,也有个Html的文件

如下图所示:

image.png

这个文件双击打开。因为要看的是它的网页,所以假设使用google打开。

google所看到的结果是有一点区别,它生成的是这样的一种格式这就是它的采样,并且输出的Html的格式。如下图所示:

image.png


四.火焰图的含义:

火焰图是基于perf结果产生的svg图片,用来展示cpu的调用线。

首先看到如下所示的火焰图

image.png

它现在展示cpu的调用站的。

水平方向看,它的坐标是跟数学里面是不一样的,向右边这个方向X方向,向下面这个方向是Y方向圆点在左上角。在计算机里面都是这个方向X这个方向是Y。

这里面怎么去看XY轴呢?

首先Y轴方向表示调用的一级一级往下走一个栈。每一层实际上就是一个函数,调用栈越深火焰就越高。顶部就是正在执行的函数下面都是它的复函数。

X轴就表示抽样的数量。如果一个函数在X轴占据的宽度越宽,就表示被抽到的次数多,即执行时间

这里要注意的是X轴它不是代表时间,而是所有调用栈合并后按字母顺序进行排序。

火焰图主要是看顶层的函数哪个函数占的宽度最大就表示这个函数是可能存在性能的瓶颈只要有平顶那就表示它的时间是很耗时的。

颜色没有特殊的含义,因为火焰图表示的是cpu的繁忙程度,所以一般选择暖色调。

是火焰图的含义以后可以对它进行一个性能的分析,尽量不要出现平顶。


五.小结

1.首先第一个 profiler start 。这个是表示启动Profiler,在默认的情况下是生成Cpu的火焰

2.Profiler list是用来显示所有支持的事件。火焰图的生成它在Linus电脑上可以,但是在windows下是不能生成的

3.profiler getsamples 是用来获取已采集的样本sample的数量。

4.Profiler status 是用来获取或者查看profiler的状态,运行的时间

5Profiler stop 用来停止 profiler 生产火焰图的结果可以指定它的输出目录和输出的格式输入格式有两种,一种是 svg 另一种是 Html。

相关文章
|
1月前
|
Arthas Java 测试技术
Arthas本身并没有提供直接让进程结束时自动生成火焰图的配置
【2月更文挑战第31天】Arthas本身并没有提供直接让进程结束时自动生成火焰图的配置
20 2
|
7月前
|
固态存储 NoSQL Go
使用 cProfile 和火焰图调优 Python 程序性能(下)
使用 cProfile 和火焰图调优 Python 程序性能
123 0
|
7月前
|
JSON 监控 JavaScript
使用 cProfile 和火焰图调优 Python 程序性能(上)
使用 cProfile 和火焰图调优 Python 程序性能
96 0
|
Linux
如何看懂火焰图
如何看懂火焰图
677 0
如何看懂火焰图
|
Arthas Java 测试技术
超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
1902 0
超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
|
1月前
|
JavaScript
性能工具之 FlameGraph 火焰图
其实很多类似 perf 的工具都能生成火焰图,像 systemtap/dtrace 之类的 并且这个思路,现在在 js 优化、代码优化等各方面都有具体的应用了 至于怎么理解? 简单点说,就是看谁又平又宽
50 7
性能工具之 FlameGraph 火焰图
|
2月前
|
监控 数据可视化 数据挖掘
Golang性能分析神器:pprof与火焰图实战揭秘
在软件开发的世界里,性能分析如同一把锋利的剑,它能帮助开发者洞悉程序的运行状态,发现并解决那些隐藏在代码深处的性能瓶颈。而在Go语言的生态系统中,pprof无疑是这把剑中的佼佼者。本文将带你深入了解pprof的使用方法,并通过火焰图这一直观的工具,让你对性能分析有一个全新的认识。
|
4月前
|
Ubuntu
代码性能展现 火焰图
代码性能展现 火焰图
36 0
|
8月前
|
Go
pprof新增的火焰图实现
pprof新增的火焰图实现
43 0
|
9月前
|
Ubuntu
perf + 火焰图分析软件性能
perf + 火焰图分析软件性能
96 0