google/perfetto

开发工具

为 Android、Chromium 和原生 C++ 系统做全链路追踪与性能分析,并用 SQL 查询多 GB 的 trace。

6,711
917
C++
Apache-2.0
创建于 6 年前

如果你要回答的是“跨进程、跨系统边界为什么慢”,而不只是某个函数内部为什么慢,Perfetto 值得花时间。它首先是追踪系统,其次才是查看器。

解决什么问题

一次启动慢或掉帧,往往同时牵涉你的应用、框架、调度器和内核。只用进程内的打点或单个 profiler,只能看到时间线上的一小段,想把卡顿和线程唤醒、内存事件对上,就得手工拼接多份输出。Perfetto 把多个进程和操作系统级探针采进同一个 trace 文件,再让你在共享时间线上查看。最终得到的是一份统一产物:应用打点、调度状态和 CPU 计数使用同一时钟,可以直接对照。

有什么不同

它的实现方式是一组彼此配合的部件,而不是单个二进制:把多进程数据汇总的 tracing 守护进程、用于用户态到用户态打点的 C++17 SDK、采集调度与 CPU 频率、内存和调用栈的操作系统探针、浏览器 UI,以及跑在 trace 上的 SQL 引擎。实际收益是分析可以写成程序:trace 载入后,用 SQL 计算自定义指标,而不必在时间线上反复点选。UI 还能打开其他工具的 trace,包括 Linux perf、macOS Instruments 和 Chrome JSON trace,所以即使采集来自别处,也能拿它当统一查看器。代价是概念门槛:Perfetto 默认读者愿意先理解 tracing 这件事,README 专门让新手先读入门介绍,再进入上手路径。它是一个套件,针对具体问题挑对部件本身就是工作的一部分。

谁值得试

适合:追查启动慢、卡顿、动画异常、低内存被杀或 ANR 的 Android 应用与平台开发者;想要带时间线的 ftrace 前端的 Linux 内核开发者;在 Linux、macOS 或 Windows 上给自己的 C/C++ 代码打点的开发者。不适合:只想对单个函数做即插即用的性能分析,或希望不配置就得到一张火焰图的人,因为这里的价值来自跨系统事件关联。如果只是想快速打开一份现有的 Chrome 或 perf trace,UI 是整套里最轻的部分,其余组件可以暂时不管。

使用条件与边界

tracing 守护进程和操作系统探针在 Android 和 Linux 上最完整,深度系统级视图取决于你的目标平台;C++ SDK 的文档覆盖 Linux、macOS 和 Windows。UI 完全在浏览器本地运行,无需安装,查看 trace 的门槛较低。SQL 分析层很强,但需要先熟悉它的表结构,自动化指标才能真正省事。该项目是 Android 和 Chromium 的默认追踪系统,这说明它在这两类环境中有生产使用,但不代表它能直接套用到你的具体场景。

HotRepo 点评

HotRepo 只有一条日榜记录:2026-10-28 该仓库为 6,711 stars,当日 +5。单一快照不构成可比的日榜历史,无法据此判断关注度是否持续。仓库创建于 2019-12-10,时间跨度本身不是问题。采用前先确认目标平台被文档中的探针和 SDK 路径覆盖,并从按角色划分的上手指南开始,而不是假定整套组件对所有平台一视同仁。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 2026年10月28日,以项目官方文档为准。

Hacker News 讨论