鼎鼎小筑

火焰图实践

2018/03/25 Share

说明

  1. 环境:CentOS 6.9
  2. 主要工具:FlameGraph
  3. 目的:检测某进程中各函数的CPU的消耗情况

步骤

  1. 安装FlameGraph

    1
    $ git clone git@github.com:brendangregg/FlameGraph.git
  2. 查找将要分析的进程pid

    1
    比如:$ ps -ef|grep service_name
  3. 使用Linux自带的性能分析工具perf捕获CPU堆栈调用数据(Capture stacks)

    1
    2
    3
    4
    # 以100次/每秒的频率读取pid=2917的进程的CPU调用堆栈数据,并输出结果到perf.data中
    $ perf record -F 100 -p 2917 -g -- sleep 120
    # 读取并展示perf.data中的调用栈追踪数据,并输出到out.perf中
    $ perf script > out.perf
  4. 使用FlameGraph提供的工具stackcollapse-perf.pl,将out.perf中的数据转换为可识别的单行数据(Fold stacks)

    1
    $ ./stackcollapse-perf.pl out.perf > out.folded
  5. 使用FlameGraph提供的工具flamegraph.pl,将out.folded中的数据渲染为svg文件

    1
    $ ./flamegraph.pl out.folded > out.svg
  1. svg文件用浏览器打开即可看到效果
CATALOG
  1. 1. 说明
  2. 2. 步骤