1. Async Profiler 的采样原理,基于 perf_event 的 CPU 采样与 wall-clock 采样的差异,火焰图的解读要点如何?
Async Profiler 的采样原理:基于 perf_event 的 CPU 采样与 wall-clock 采样的差异,火焰图的解读要点是什么?
- perf_event CPU 采样
- wall-clock 采样
- 火焰图解读
Async Profiler 采样式剖析的两种模式:1) CPU 采样(基于 perf_event 或 JVMTI):每 N 毫秒采样正在执行 CPU 指令的线程栈,反映 CPU 热点(只统计 CPU 上的时间);2) wall-clock 采样:采样所有线程的完整栈(无论 CPU 与否),反映线程时间去向(包括 I/O 等待、锁、sleep)。差异:CPU 采样只看 CPU 时间(等待不可见),wall 采样看全部时间(含等待)。火焰图解读要点:x 轴宽度表示采样占比,y 轴栈深;顶部宽 = 热点函数;CPU 火焰图看 CPU 热点,wall 火焰图看等待/阻塞;结合事件类型(cpu/alloc/lock/wall)解读问题类型。理解采样差异与火焰图解读是 async-profiler 使用核心。
CPU 采样看 CPU 热点,wall 采样看包括等待的全部时间。火焰图顶部宽度是热点信号,结合事件类型解读。