golang 性能调优分析工具 pprof (上) (3)

执行上面 2 个命令如下图:

golang 性能调优分析工具 pprof (上)

用浏览器查看生成的 svg 图:

golang 性能调优分析工具 pprof (上)

(文件太大,只截取了一小部分图,完整的图请自行生成查看)

关于图形的一点说明:

每个框代表一个函数,理论上框越大表示占用的 cpu 资源越多

每个框之间的线条代表函数之间的调用关系,线条上的数字表示函数调用的次数

每个框中第一行数字表示当前函数占用 cpu 的百分比,第二行数字表示当前函数累计占用 cpu 的百分比

B. 火焰图 Flame Graph

火焰图 (Flame Graph) 是性能优化专家 Bredan Gregg 创建的一种性能分析图。Flame Graphs visualize profiled code。

火焰图形状如下:

golang 性能调优分析工具 pprof (上)

(来自:https://github.com/brendangregg/FlameGraph)

上面用 pprof 生成的采样数据,要把它转换成火焰图,就要使用一个转换工具 go-torch,这个工具是 uber 开源,它是用 go 语言编写的,可以直接读取 pprof 采集的数据,并生成一张火焰图, svg 格式的文件。

安装 go-torch:

go get -v github.com/uber/go-torch

安装 flame graph:

git clone https://github.com/brendangregg/FlameGraph.git

安装 perl 环境:

生成火焰图的程序 FlameGraph 是用 perl 写的,所以先要安装执行 perl 语言的环境。

安装 perl 环境:https://www.perl.org/get.html

把执行文件 bin 加入 Path 中

在终端下执行命令:perl -h ,输出了帮助信息,则说明安装成功

golang 性能调优分析工具 pprof (上)

验证 FlameGraph 是否安装成功:

进入到 FlameGraph 安装目录,执行命令,./flamegraph.pl --help

golang 性能调优分析工具 pprof (上)

输出信息说明安装成功

生成火焰图:

重新进入到文件 democpu.pprof 的目录,然后执行命令:

go-torch -b democpu.pprof

上面命令默认生成名为 torch.svg 的文件,用浏览器打开查看:

golang 性能调优分析工具 pprof (上)

自定义输出文件名,后面加 -f 参数:

go-torch -b democpu.pprof -f cpu_flamegraph.svg

golang 性能调优分析工具 pprof (上)

火焰图说明:

火焰图 svg 文件,你可以点击上面的每个方块来查看分析它上面的内容。

火焰图的调用顺序从下到上,每个方块代表一个函数,它上面一层表示这个函数会调用哪些函数,方块的大小代表了占用 CPU 使用时长长短。

go-torch 的命令格式:

go-torch [options] [binary] <profile source>

go-torch 帮助文档:

想了解更多 go-torch 用法,请用 help 命令查看帮助文档,go-torch --help。

或查看 go-torch README 文档 。

四、参考

pprof

README

Profiling Go Programs

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxzwp.html