Skip to content
阅读进度

Perfetto 里怎样判断是 App 卡顿 还是 SurfaceFlinger 卡顿? ​

返回 性能与稳定性 目录

标准回答 ​

我会先从 FrameTimeline 找到未满足预期时序的帧,再把应用 Surface 帧与 Display 帧关联。应用侧检查主线程是否及时进入 doFrame、measure 和 draw 是否过长、RenderThread 和 GPU 是否按时完成,以及是否存在锁或 Binder 等待;系统侧检查 SurfaceFlinger 合成、事务与缓冲区等待、HWC 和呈现时序。如果应用按时产出内容而 Display 帧仍然延后,就进一步检查合成和显示路径;若应用自身晚提交,就回到应用关键路径。

延伸追问 ​

判断 Running 和 Runnable 可以区分自身计算过重与未及时获得 CPU;不同帧类型和轨道必须按 Trace 的实际定义解读。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。