参考文献

Flame Graph

火焰图的类型

  • On-CPU火焰图: CPU占用高的问题
  • Off-CPU火焰图: I/O,网络阻塞,锁竞争,死锁导致的性能下降
  • 内存火焰图: 申请,释放内存多,内存泄漏
  • Hot/Cold火焰图: 结合On-CPUOff-CPU火焰图
  • 其他火焰图: JVM,浏览器

如何读火焰图

  • X轴
    • 由多个方块组成,每个方块表示一个函数
    • 函数在X轴占据的宽度越宽,表示它被采样到的次数越多,可以简单的粗暴的近似理解为执行时间
  • Y轴
    • 表示函数调用栈,调用栈越深,火焰越高
    • 顶部是CPU正在执行的函数,下方是它的父函数

火焰图生成的步骤

采集堆栈

  • perf
  • SystemTap
  • sample-bt

折叠堆栈

生成火焰图