1. 火焰图(Flame Graph)的解读方法,on-CPU 与 off-CPU 火焰图如何定位热点?
火焰图(Flame Graph)的解读方法是什么?on-CPU 与 off-CPU 火焰图如何定位热点?
- 火焰图的结构与阅读方法
- on-CPU 与 off-CPU 火焰图的区别
- 各自定位的热点类型
火焰图是把采样到的调用栈按调用关系堆叠成"火焰"形状的图:横轴代表采样时间占比(宽度越大越耗时),纵轴代表调用栈深度(下层为父函数/调用者,上层为子函数/被调用者),顶部平线代表当时正在执行的函数。阅读方法:沿宽大的"火焰"向顶部定位最耗时的函数路径,即热点。on-CPU 火焰图采样的是正在 CPU 上执行的函数,用于定位 CPU 计算热点(CPU 密集型函数的耗时);off-CPU 火焰图采样的是不在 CPU 上执行(被阻塞/等待)的调用栈,用于定位阻塞热点(锁等待、IO 等待、网络等待、睡眠)。两者互补:on-CPU 找"CPU 在忙什么",off-CPU 找"CPU 在等什么"。
火焰图把海量采样栈可视化,直观定位热点。但 on-CPU 只覆盖 CPU 执行时间,无法看到阻塞等待,因此需结合 off-CPU 分析才能完整覆盖"CPU 忙"与"CPU 等"两类问题。两块火焰图合并(inverted/组合)能给出完整耗时分布。