如何用火焰图分析程序性能瓶颈

一个经验非常丰富的程序员可能可以静态分析程序的性能瓶颈,但大多数人做不到这些。这个时候我们往往需要借助一些辅助工具来分析程序的性能瓶颈,火焰图就是其中之一。

一张典型的火焰图长这样

本文主要介绍如何生成和分析火焰图。

如何生成火焰图

第一步:使用perf生成采样日志

火焰图是根据perf命令生成的日志文件来生成的,所以首先需要使用perf命令对所需要分析的进程进行采样。

perf record -F 99 -p 1234 -g -- sleep 30
perf script > out.perf

命令解释:

-F 99 表示每秒采样99次
-p 1234 表示采样的进程id是1234
-g表示记录调用栈
--sleep 30 表示采样时长为30s

运行上面两个命令之后,会生成一个out.perf文件

第二步:下载FlameGraph

FlameGraph用于将采样日志转换成svg图片,这个图片就是我们见到的火焰图。

FlameGraph地址:https://github.com/brendangregg/FlameGraph

第三步:生成火焰图

上面我们得到了out.perf文件,下载了FlameGraph之后,解压,里面有一些脚本,我们要用下面的脚本生成out.folded文件

./stackcollapse-perf.pl out.perf > out.folded

然后用out.folded文件生成svg

./flamegraph.pl out.folded > perf.svg

如何分析火焰图

未完待续

参考资料:

https://queue.acm.org/detail.cfm?id=2927301

http://www.brendangregg.com/flamegraphs.html

赞赏

微信赞赏支付宝赞赏

发表评论

您的电子邮箱地址不会被公开。