使用perf生成Flame Graph(火焰圖)


  使用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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM