使用工具:perf,FlameGraph
perf
内置于linux内核源码树中的性能剖析工具。
工作原理:对监控事件进行采样。
BrenDan Gregg的个人网站上使用perf工具的案例:
http://brendangregg.com/perf.html
FlameGraph
用于生成svg格式的火焰图,通过浏览器打开直观地展示热点代码路径。
下载链接:https://github.com/brendangregg/FlameGraph
操作流程:
$ perf record -e cycles -g –call-graph dwarf –p pid –o perf.data
ctrl+c结束执行(执行时间越长采样数据也越大,可能导致后面分析存在问题。),在当前目录下会生成进程ID为pid的采样数据perf.data。
执行完成后可以先用perf report命令查看下,确认下有没有错误。
$ perf report -g -i perf.data
$ perf script -i perf.data &> perf.unfold
对perf.data进行解析,执行完成后在当前目录下生成一个名为perf.unfold
的文件。
$ ./FlameGraph-master/stackcollapse-perf.pl perf.unfold &> perf.folded
折叠perf.unfold中的符号,生成文件perf.folded。
$ ./flamegraph.pl perf.folded > perf.svg
生成svg火焰图,svg火焰图可以通过浏览器打开,用于确认热点执行路径。