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

本文主要介绍如何生成和分析火焰图。
如何生成火焰图
第一步:使用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
赞赏微信赞赏
支付宝赞赏