Android perfetto - Perfetto 新手入门指南

Perfetto 是一个开源的性能分析工具,旨在帮助开发者了解复杂系统的行为并排查性能和功能问题。它提供高效、低开销的系统和应用层追踪功能,可以记录系统运行时的详细信息,并进行后续的离线分析。

对于 Perfetto 新手,这份入门指南将帮助你快速理解 Perfetto 的基本概念和使用步骤。

1、什么是 Perfetto?

Perfetto 是一个性能分析框架,包括以下几个关键部分:

  • 高性能 tracing 守护进程:用于从同一台机器上的多个进程捕获追踪信息,合并成统一的 trace 文件,供离线分析;
  • 低开销用户态 tracing SDK:用于在应用程序中直接记录执行时间和状态变化,适合 C/C++ 等编程语言;
  • 系统级 OS probes:捕获 Android 和 Linux 系统层面的信息,例如线程调度、CPU 频率、内存使用等;
  • 浏览器可视化 UI:用于查看和分析 trace 数据,提供基于时间线的直观展示;
  • SQL 分析库:用于编程化地分析 trace 数据,支持复杂的 SQL 查询;

Perfetto 主要用于捕获性能瓶颈、系统行为和应用程序执行过程中的重要事件,帮助开发者进行性能调优和故障排查。

2、安装 Perfetto

2.1、安装 Perfetto 工具

Perfetto 是一个跨平台的工具,支持 Android、Linux 和 Chrome 等平台。可以选择以下方式安装 Perfetto:

  • Android Studio:对于 Android 开发者,Perfetto 可以通过 Android Studio 的 Profiler 进行集成;

  • 从源码构建:也可以从 Perfetto 的 GitHub 仓库下载并编译源码;

  • 通过 AOSP (Android Open Source Project) :如果用的是 Android 设备,可以通过 AOSP 的 Perfetto 服务进行集成;

2.2、安装 Perfetto UI

Perfetto 的 UI 是完全本地的、基于浏览器的工具。只需要打开浏览器并加载 trace 文件,无需安装额外的工具。可以访问以下链接:

3、创建并记录 Perfetto Trace

3.1、启动 Trace 记录

Perfetto 支持多种方法来启动 trace 记录。常用的方式是使用命令行工具trace或者通过SDK 直接在应用程序中插入 tracing 代码。

使用命令行工具录制 trace:

# 启动 Perfetto 记录一个简单的 trace perfetto --trace-config=config_file --output=trace_file

config_file是配置文件,指定了你想记录的追踪数据类型(如线程调度、CPU 事件等)。trace_file 是保存的输出文件。

3.2设置 Trace 配置

Perfetto 通过配置文件来定义要记录的数据。配置文件包含了跟踪项(如线程、CPU、内存)和其他设置。可以根据需要灵活配置,选择特定的事件进行跟踪。

css 复制代码
duration_ms: 10000

buffers {
  size_kb: 65536
  fill_policy: RING_BUFFER
}

data_sources {
  config {
    name: "linux.ftrace"
    target_buffer: 0
    ftrace_config {
      ftrace_events: "sched_switch"
      ftrace_events: "sched_wakeup"
    }
  }
}

4分析和可视化 Trace 数据

4.1使用 Perfetto UI 查看 Trace 数据

Perfetto 提供了一个基于浏览器的界面,用于可视化 trace 文件中的数据。打开浏览器并加载 trace 文件,可以看到系统的时间轴、事件流和调用图。

步骤
  1. 打开 Perfetto UI:Perfetto UI
  2. 上传或加载录制的 trace 文件。
  3. 查看时间线、事件、调用栈等信息。

Perfetto UI 可以:

  • 直观地查看系统的事件流。
  • 放大、缩小时间轴,查看详细的每个事件。
  • 根据不同的维度(线程、CPU、事件等)对数据进行过滤。

4.2使用 SQL 分析 Trace 数据

Perfetto 还提供了强大的 SQL 分析库(Trace Processor),可以通过 SQL 查询对 trace 数据进行深度分析。

示例 SQL 查询

-- 获取所有线程的活动时间 SELECT utid, SUM(dur) FROM slice GROUP BY utid;

如何使用 Trace Processor
  1. 在命令行中启动trace_processor

    trace_processor trace_file

  2. 进入查询模式,开始执行 SQL 查询,分析 trace 数据。

什么是PerfettoSQL可以参考 Android perfetto - PerfettoSQL是什么?

5常见使用场景

Perfetto 可以用于以下场景:

  • 性能瓶颈排查:定位 CPU 消耗高、内存泄漏、I/O 阻塞等问题。
  • 卡顿(Jank)分析:通过 trace 数据分析应用卡顿的根本原因(线程阻塞、GC、UI 线程问题等)。
  • 多线程分析:分析线程调度、竞争条件、线程锁等多线程性能问题。
  • 系统级分析:通过操作系统级别的探针,获取调度信息、内存使用情况等。

6学习资源

  • Perfetto 文档Perfetto 官方文档
  • Perfetto GitHub 仓库Perfetto GitHub
  • Perfetto UIPerfetto UI
  • 教程与示例:可以参考 Perfetto GitHub 上的示例,学习如何在不同平台和语言中使用 Perfetto 进行追踪。

7总结

Perfetto 是一个强大的性能分析工具,它通过高效的 tracing 功能帮助开发者深入理解应用和系统的行为,解决复杂的性能问题。通过掌握 Perfetto 的使用方法,我们可以高效地记录、分析和优化应用程序的性能。

8、参考

相关推荐
写代码的Eleven2 小时前
Rk3576 Andorid 14修改默认的通知音量,通话音量,闹钟音量等系统音量大小
android·framework
_李小白3 小时前
【Android FrameWork】延伸阅读:CursorWindow的作用
android
介一安全3 小时前
【Frida Android】实战篇14:非标准算法场景 Hook 教程
android·网络安全·逆向·安全性测试·frida
郝学胜-神的一滴4 小时前
深入理解OpenGL VBO:原理、封装与性能优化
c++·程序人生·性能优化·图形渲染
福大大架构师每日一题4 小时前
ollama v0.13.2 最新更新详解:Qwen3-Next首发与性能优化
性能优化·ollama
小虎牙0074 小时前
关于Android Compose架构的思考
android·前端·mvvm
2501_915909064 小时前
手机崩溃日志导出的工程化体系,从系统级诊断到应用行为分析的多工具协同方法
android·ios·智能手机·小程序·uni-app·iphone·webview
木风小助理4 小时前
MySQL内存监控深度解析与故障排查实践
android·adb
灰鲸广告联盟5 小时前
APP广告变现定制化解决方案,助力收益提升与用户体验平衡
android·flutter·搜索引擎·ux