keanuyaoo
  使用SystemTap脚本制作火焰图,内存较少时,分配存储采样的数组可能失败,需要编写脚本,还要安装kernel的debuginfo包。使用perf的话,相对来说要简单一些。不过在有kernel的debuginfo包的时候,采样显示的信息要更丰富一些。
  为了使用perf制作火焰图方便,我编写了下面的脚本,贴上来备忘,也方便需要的人。
  脚本如下:
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_flame_graph.sh。根据上面的Usage可以看出在执行的时候,只需要指定采样的时间,单位为秒。
  下面是我在测试机上制作的火焰图:

  我这里制作的火焰图没有指定具体的进程或线程,如果只想关注某个具体的进程,可以在pref record命令后面加上命令或者通过-p选项指定进程ID。更多的参数和选项参见man perf-record。

 

posted on 2013-09-10 21:02  风言枫语  阅读(3007)  评论(0编辑  收藏  举报

分类:

技术点:

相关文章:

  • 2021-09-05
  • 2021-11-17
  • 2021-08-14
  • 2021-10-16
  • 2021-12-05
  • 2021-12-15
  • 2021-11-17
  • 2018-03-08
猜你喜欢
  • 2021-07-24
  • 2022-01-03
  • 2018-12-24
  • 2021-08-13
  • 2021-10-28
  • 2021-10-16
  • 2022-01-11
相关资源
相似解决方案