火焰图是个比较方便查看程序资源占用的图形,由于其外表看起来像一团火焰,故命名为火焰图,其形状如下图所示:


注意:图案中的颜色是随机的,无参考意义,而是通过观看水平条的宽度来区分占用资源的操作的,条越宽,说明占用的资源越多,越需要关注或优化

火焰图的说明,可参考地址:http://www.brendangregg.com/flamegraphs.html

在此整理下在linux下安装并使用火焰图的步骤:

1、火焰图依赖perf-map-agent,故首先需要安装配置该工具包:

git clone https://github.com/jvm-profiling-tools/perf-map-agent 
cd perf-map-agent
yum install cmake 
yum install gcc 
yum install gcc-c++ 
cmake . 
make 
2、安装完perf-map-agent后,即可下载火焰图的主程序了:

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

3、下载完火焰图的主程序后,即可通过命令生成火焰图了:

perf record -F 49 -a -g -- sleep 30; ./jmaps
perf script > out.stacks01
cat out.stacks01 | ./stackcollapse-perf.pl | grep -v cpu_idle | ./flamegraph.pl --color=java --hash > out.stacks01.svg


perf record -F 99 -p 181 -g -- sleep 60  #监控pid为181的进程60s
perf script > out.perf
./stackcollapse-perf.pl out.perf > out.folded
./flamegraph.pl out.folded > kernel.svg #生成火焰图文件kernel.svg文件
4、使用浏览器打开生成的svg图形,即可查看抽取的60s的程序运行的火焰图

Logo

更多推荐