2、红帽性能调优——火焰图使用perf生成火焰图

火焰图就像是给一个软件系统拍的 X 光照片,可以很自然地把时间和空间两个维度上的信息融合在一张图上,以非常直观的形式展现出来,从而反映系统在性能方面的很多定量的统计规律。

最经典的火焰图是统计某一个软件的所有代码路径在 CPU 上面的时间分布。

通过看火焰图,也可以大致推出性能问题的所在,即使从未阅读过它的一行源码。这是一件非常了不起的事情。因为大部分程序其实是编写良好的,也就是说它往往在软件构造的时候就使用了抽象层次,比如通过函数。这些函数的名称通常会包含语义上的信息,并在火焰图上面直接显示出来。通过这些函数名,我们可以大致推测出对应的函数,乃至对应的某一条代码路径,大致是做什么事情的,从而推断出这个程序所存在的性能问题。

使用火焰图

if [ $# -ne 1 ];then

echo "Usage: $0 seconds"

exit 1

fi

perf record -a -g -o perf.data &

PID=`ps aux| grep "perf record"| grep -v grep| awk '{print $2}'`

if [ -n "$PID" ]; then

sleep $1

kill -s INT $PID

fi

# wait until perf exite

sleep 1

perf script -i perf.data &> perf.unfold

perl stackcollapse-perf.pl perf.unfold &> perf.folded

perl flamegraph.pl perf.folded >perf.svg

关于perf使用查看如下:

《红帽性能调优——perf使用》

参考:

http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html

CentOS下载地址

http://isoredirect.centos.org/centos/7.3.1611/isos/x86_64/

flamegraph下载地址

https://github.com/brendangregg/FlameGraph

你可能感兴趣的:(2、红帽性能调优——火焰图使用perf生成火焰图)