Skip to content
阅读进度

Perfetto Trace 应该按什么顺序看? ​

返回 性能与稳定性 目录

标准回答 ​

先标定问题发生区间,再看关键线程在运行、可运行还是等待,随后追 CPU、锁、Binder、IO、渲染和展示链路,验证谁真正拉长了关键路径。

关键机制 ​

  • Running:正在占 CPU,可检查重计算;Runnable:想运行但尚未获得 CPU,检查调度和竞争;Sleeping / 等待需结合调用栈与唤醒关系判断。
  • 用业务 Trace 标记把请求、数据、布局、首帧等阶段连接起来;再看 FrameTimeline 判断应用和合成端是否错过时机。
  • 对比优化前后要使用相同设备、场景、构建、温度与统计口径,关注分位数和长尾,不能只选最快一次。

通俗例子 ​

看到 doFrame 结束很早但屏幕仍晚显示,应继续看 RenderThread、GPU、SurfaceFlinger 与实际展示时刻,不能直接认定主线程已经解决全部问题。

易混淆点 ​

Actual Present Time 对应帧的实际展示信息,要确认所看的是目标窗口和目标帧;任意一条 doFrame 结束都不是“首帧上屏”的充分证据。

参考资料 ​

内容来源 ​

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