接上一节,进一步介绍如何用火焰图来观察资源消耗的状况,首先执行perf record生成分析数据:
sudo perf record -F max --call-graph fp -- ./testPerf
复制火焰图源代码:
git clone https://github.com/brendangregg/FlameGraph.git
设置FlameGraph文件夹全局可见:
export PATH=$PATH:/home/s/shenzhou/FlameGraph
生成折叠后的调用栈:
sudo perf script -i perf.data &> perf.unfold
生成火焰图:
sudo stackcollapse-perf.pl perf.unfold &> perf.folded
生成svg图:
sudo flamegraph.pl perf.folded &> perf.svg
当然上面的操作也可以通过管道来实现:
sudo perf script | stackcollapse-perf.pl | flamegraph.pl > perf.svg
最终的火焰图如图:
可以看到,整个堆栈的调用关系以及耗时都很清楚地能看到。