EN

Android Perfetto 系列目录

字数统计: 2k阅读时长: 7 min
2024/03/27
loading

Perfetto 在我的日常工作中已基本替代旧的 Systrace 工作流。Android 官方建议在 Android 10 及以后使用 Perfetto,并将 Systrace 命令行工具列为 legacy。许多新接触 Android 性能优化的小伙伴觉得 Perfetto 的界面和功能复杂,希望我能把之前的 Systrace 文章用 Perfetto 重新呈现,于是有了这个系列。

技术复核:2026-10-14。 下方保留 2024 年开写本系列时的动机,目录已持续扩充。实践主要从 Android 12 起讨论,不代表 Perfetto 最低只支持 Android 12;各篇的源码标签、设备版本和数据源条件需要分别看,不能把所有历史案例当作 Android 17 的实测结果。

我也在星球里写过几条更新 Perfetto 系列的原因(之前一直觉得 Systrace 系列就够了):

  1. 按我在 2024 年写作时的工作观察,Oppo、Vivo 的部分团队已用 Perfetto 抓取和分析 Trace,很多新人首先接触的也是 Perfetto。如果我一直守着旧的 Systrace 系列,就会错过这部分读者。这里不是对各厂商所有团队或当前工具链的统一调查。
  2. 之前的 Systrace 系列引用了较早的代码。本系列会结合新版本继续更新;Android 17(API 37)的公开版本与源码标签可作参照,但具体分析仍以各篇注明的 AOSP 标签、设备实现和 Trace 为准,不把新版本 API 文档直接当作旧设备的实现。
  3. 个人对 Perfetto 的使用也没有很深入,有些高阶功能目前还只是浅尝辄止。可以通过重写 Perfetto 系列来进行这部分内容的强化
  4. Perfetto 是个很强大的工具,他的背后是整个 Android + Linux 系统,所以在写这个系列的时候,应该是以他背后的这个 Android + Linux 为主,而不是仅仅局限于 Perfetto 这个工具。工具只是我们观测 Android + Linux 的方式,理解整个 Android 系统运行的规律,思考其运行的原理,通过工具挖掘问题,通过问题思考本质,这才是对开发者来说有意义的
  5. 很多 Android 系统运行相关的内容,Perfetto 的官方文档还是没有讲,这部分我这边可以作为补足;另外官方文档是英文版本的,中文博客可以补充这方面。
  6. Perfetto 系列写好了,可以拿到 Google Dev Fest 上作为演讲内容~。

Paul Graham 说:要么给大部分人提供有点想要的东西,要么给小部分人提供很想要的东西。Perfetto 属于小部分人很想要的东西,那就开始写吧,欢迎大家多多交流和沟通,发现错误和描述不准确的地方请及时告知我,我会及时修改,以免误人子弟。

我想借这个系列,和大家一起对照 Perfetto 看 App、Framework、Linux 是怎么配合起来运行的。如果读过不少源码和性能文章,还是记不住流程,不妨把代码放回 Trace 的时间线上看看。

Perfetto 系列目录

  1. Android Perfetto 系列目录
  2. Android Perfetto 系列 1:Perfetto 工具简介
  3. Android Perfetto 系列 2:Perfetto Trace 抓取
  4. Android Perfetto 系列 3:熟悉 Perfetto View
  5. Android Perfetto 系列 4:使用命令行在本地打开超大 Trace
  6. Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
  7. Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战
  8. Android Perfetto 系列 7:MainThread 和 RenderThread 解读
  9. Android Perfetto 系列 8:深入理解 Vsync 机制与性能分析
  10. Android Perfetto 系列 9:CPU 信息解读
  11. Android Perfetto 系列 10:Binder 调度与锁竞争
  12. Android Perfetto 系列 11:PerfettoSQL、Trace Processor 与回归检测
  13. Android Perfetto 系列 12:Trace 数据流与丢失排查
  14. Android Perfetto 系列 13:Perfetto SDK、Track Event 与 App 现场 Trace
  15. Android Perfetto 系列 14:heapprofd 与内存 Profiling
  16. Android Perfetto 系列 15:Boot Trace、长时间现场 Trace 与偶发问题抓取
  17. Android Perfetto 系列 16:GPU、Power Counters 与硬件瓶颈分析
  18. Android Perfetto 系列 17:专项场景自动化、问题清单与平台体系
  19. Android Perfetto 系列 18:响应速度实战,从输入事件到首帧反馈
  20. 视频(B站) - Android Perfetto 基础和案例分享
  21. 视频(B站) - Android Perfetto 分享 - 出图类型分享:AOSP、WebView、Flutter + OEM 系统优化分享

欢迎大家在 关于我 页面了解微信群交流方式,讨论你最想看到的 Perfetto 内容。The Performance 知识星球已于 2026 年停止运营,不再接受新成员。

Systrace 系列

Systrace 是旧工具链,但旧系列里的 Framework 流程、线程状态、Binder 等待、Vsync、SurfaceFlinger 和 CPU 调度仍有参考价值,具体实现要结合文章标注的版本。Android 10 起,系统追踪工具默认保存 Perfetto 格式;.perfetto-trace 是常用扩展名,底层是 protobuf Trace,并不是把文件改名就能转换格式。Perfetto UI 和 Trace Processor 负责展示、解析和 SQL 分析。旧 HTML/ctrace 的支持范围与转换方式,应以 官方系统追踪说明为准。

android.os.Trace、NDK ATrace 和系统内部 ATRACE 埋点仍受 Perfetto 支持,ftrace 也仍是内核事件来源。不过数据源需要在 TraceConfig 中启用,实际可见内容还受系统版本、权限和设备实现影响。Trace 中没有某条事件,不能直接解释为该行为没有发生;也可能未启用、未被支持或在采集过程中丢失。

如果你是从 Systrace 系列跳过来,可以按下面的对应关系阅读:

Systrace 主题 现在优先阅读的 Perfetto 内容
工具简介、抓取方式、界面操作 Perfetto 1:工具简介、Perfetto 2:Trace 抓取、Perfetto 3:熟悉 Perfetto View
Why 60 fps、高刷新率 Perfetto 6:为什么是 120Hz?
Choreographer、主线程、RenderThread、流畅性实战 Perfetto 5:Choreographer 渲染流程、Perfetto 7:MainThread 和 RenderThread
Vsync、SurfaceFlinger、Triple Buffer Perfetto 8:Vsync 机制与性能分析
CPU 频率、线程 Running/Runnable/Sleep Perfetto 9:CPU 信息解读
Binder、锁竞争、SystemServer 等待 Perfetto 10:Binder 调度与锁竞争
Trace Processor、SQL、批量回归 Perfetto 11:PerfettoSQL、Trace Processor 与回归检测
App 埋点、Track Event、现场包 Perfetto 13:Perfetto SDK、Track Event 与 App 现场 Trace
Boot trace、长时间现场 Trace Perfetto 15:Boot Trace、长时间现场 Trace 与偶发问题抓取
输入响应、首帧反馈 Perfetto 18:响应速度实战,从输入事件到首帧反馈
  1. Systrace 简介
  2. Systrace 基础知识 - Systrace 预备知识
  3. Systrace 基础知识 - Why 60 fps ?
  4. Systrace 基础知识 - SystemServer 解读
  5. Systrace 基础知识 - Input 解读
  6. Systrace 基础知识 - Vsync 产生与工作机制解读
  7. Systrace 基础知识 - Vsync-App :基于 Choreographer 的渲染机制详解
  8. Systrace 基础知识 - MainThread 和 RenderThread 解读
  9. Systrace 基础知识 - Binder 和锁竞争解读
  10. Systrace 基础知识 - Triple Buffer 解读
  11. Systrace 基础知识 - CPU Info 解读
  12. Systrace 基础知识 - SurfaceFlinger 解读
  13. Systrace 流畅性实战 1 :了解卡顿原理
  14. Systrace 流畅性实战 2 :案例分析: MIUI 桌面滑动卡顿分析
  15. Systrace 流畅性实战 3 :卡顿分析过程中的一些疑问
  16. Systrace 响应速度实战 1 :了解响应速度原理
  17. Systrace 响应速度实战 2 :响应速度实战分析-以启动速度为例
  18. Systrace 响应速度实战 3 :响应速度延伸知识
  19. Systrace 线程 CPU 运行状态分析技巧 - Runnable 篇
  20. Systrace 线程 CPU 运行状态分析技巧 - Running 篇
  21. Systrace 线程 CPU 运行状态分析技巧 - Sleep 和 Uninterruptible Sleep 篇

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. The Performance 历史介绍:知识星球已停止运营,不再接受新成员。

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

CATALOG
  1. 1. Perfetto 系列目录
  2. 2. Systrace 系列
  3. 3. 关于我 && 博客