外观
Perfetto Trace 应该按什么顺序看?
标准回答
先标定问题发生区间,再看关键线程在运行、可运行还是等待,随后追 CPU、锁、Binder、IO、渲染和展示链路,验证谁真正拉长了关键路径。
关键机制
- Running:正在占 CPU,可检查重计算;Runnable:想运行但尚未获得 CPU,检查调度和竞争;Sleeping / 等待需结合调用栈与唤醒关系判断。
- 用业务 Trace 标记把请求、数据、布局、首帧等阶段连接起来;再看 FrameTimeline 判断应用和合成端是否错过时机。
- 对比优化前后要使用相同设备、场景、构建、温度与统计口径,关注分位数和长尾,不能只选最快一次。
通俗例子
看到 doFrame 结束很早但屏幕仍晚显示,应继续看 RenderThread、GPU、SurfaceFlinger 与实际展示时刻,不能直接认定主线程已经解决全部问题。
易混淆点
Actual Present Time 对应帧的实际展示信息,要确认所看的是目标窗口和目标帧;任意一条 doFrame 结束都不是“首帧上屏”的充分证据。
参考资料
内容来源
- Android 技术札记 · 原条目
perfetto