1. Perfetto 工具概述与核心价值
Perfetto 是 Android 平台新一代的系统级性能分析工具套件,它取代了传统的 systrace 工具链,提供了更强大的数据采集、分析和可视化能力。作为 Android 开发者或性能优化工程师,掌握 Perfetto 的使用已经成为必备技能。我在过去两年的移动端性能调优工作中,Perfetto 几乎参与了 90% 的性能问题定位过程。
这个工具的核心优势在于其统一的数据采集架构和灵活的扩展性。它不仅可以捕获系统级的 CPU、内存、I/O 等基础指标,还能通过自定义的 Tracepoint 和用户空间插桩(Userspace instrumentation)收集应用层的详细性能数据。与 systrace 相比,Perfetto 的数据采样精度更高(支持纳秒级时间戳),数据吞吐量更大(适合长时间录制),而且提供了更现代化的 Web UI 分析界面。
2. Perfetto 典型使用场景与数据采集
2.1 性能问题诊断全流程
在实际工作中,我通常按照以下流程使用 Perfetto:
-
问题复现阶段:通过 ADB 命令启动 Perfetto 数据采集
bash复制
adb shell perfetto --txt -c /data/misc/perfetto-configs/cpu_high_freq.cfg -o /data/misc/perfetto-traces/trace.perfetto-trace这个命令会按照配置文件(cpu_high_freq.cfg)的要求,采集 CPU 频率相关的性能数据。配置文件的内容决定了采集的数据类型和采样频率。
-
数据分析阶段:将采集的 trace 文件导出到本地后,使用 Perfetto UI(https://ui.perfetto.dev)进行分析。这个基于 Web 的工具提供了:
- 时间轴视图:展示所有线程、CPU 核心的活动状态
- 计数器视图:显示 CPU 频率、内存使用量等指标的曲线变化
- 切片视图:展示特定操作的耗时分布
-
问题定位阶段:通过分析各线程的调度延迟、CPU 频率变化、锁竞争等情况,结合业务代码定位性能瓶颈。
2.2 关键数据采集配置
Perfetto 的强大之处在于其灵活的数据采集配置。以下是我常用的几种配置模板:
CPU 调度分析配置(cpu_sched.cfg):
text复制buffers: {
size_kb: 8960
fill_policy: DISCARD
}
data_sources: {
config: {
name: "linux.ftrace"
ftrace_config: {
ftrace_events: "sched/sched_switch"
ftrace_events: "sched/sched_wakeup"
buffer_size_kb: 5120
