perfetto
是一种工具,可让您通过 Android 调试桥 (ADB) 从 Android 设备收集性能信息。使用 adb shell perfetto ...
命令调用 perfetto
工具。perfetto
使用各种来源从您的设备收集性能轨迹,例如
ftrace
用于收集来自内核的信息atrace
用于收集服务和应用的用户空间注解heapprofd
用于收集服务和应用的本机内存使用信息
本页介绍如何调用 perfetto
并对其进行配置以生成所需输出。有关更多信息,请参阅 perfetto
文档。
语法
本节介绍如何使用 ADB 在不同模式下调用 perfetto
并生成跟踪。
数据源选择
perfetto
包括以下两种模式,它们决定了其用于记录跟踪的数据源:
- 精简模式:只能选择数据源的子集,特别是
atrace
和ftrace
。但是,此模式提供与systrace
类似的界面。 - 普通模式:在协议缓冲区中获取其配置,让您可以通过使用不同于
atrace
和ftrace
的数据源来利用perfetto
的更多功能。
一般选项
下表列出了在任一模式下使用 perfetto
时可用的选项:
表 1. 可用的一般 perfetto 工具选项列表。
选项 | 说明 |
---|---|
--background |
|
perfetto 会立即退出命令行界面,并在后台继续记录您的跟踪。 |
--background-wait | -D
|
与 --background 类似,但会等待(最长 30 秒)所有数据源启动后才退出。如果收到成功确认,退出代码为零;否则(错误或超时)为非零。 |
--alert-id
|
触发此跟踪的提醒 ID。 |
--config-id
|
触发配置的 ID。 |
--config-uid
|
注册配置的应用的 UID。 |
--subscription-id
|
触发此跟踪的订阅 ID。 |
--out OUT_FILE |
|
指定输出跟踪文件的所需路径,或 注意: 您必须指定输出文件的完整路径名。通常,文件应写入 |
--upload
|
完成后,将跟踪传递给 proto 跟踪配置中由 IncidentReportConfig 消息指定的软件包。 |
--no-guardrails
|
在测试期间启用 --upload 标志时,禁用防止资源过度使用的保护。 |
--reset-guardrails
|
重置防护栏的持久状态并退出以进行测试。 |
--rsave-for-bugreport
|
如果 bugreport_score > 0 的跟踪正在运行,则将跟踪保存到文件中。完成后输出路径。 |
--query
|
查询服务状态并将其打印为人类可读文本。 |
--query-raw
|
类似于 --query ,但打印 tracing_service_state.proto 的原始 proto 编码字节。 |
--help | -h
|
打印 perfetto 工具的帮助文本。 |
精简模式
在精简模式下使用 perfetto
的一般语法如下:
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]... --out FILE
下表列出了在精简模式下使用 perfetto
时可用的选项:
表 2. 在精简模式下使用时,可用的 perfetto
工具选项列表。
选项 | 说明 |
---|---|
--time TIME[s|m|h] |
|
指定跟踪持续时间,单位为秒、分或小时。例如,--time 1m 指定跟踪持续时间为 1 分钟。默认持续时间为 10 秒。 |
--buffer SIZE[mb|gb] |
|
指定环形缓冲区大小,单位为兆字节 (mb) 或千兆字节 (gb)。默认参数为 --buffer 32mb 。 |
--size SIZE[mb|gb] |
|
指定最大文件大小,单位为兆字节 (mb) 或千兆字节 (gb)。默认情况下,perfetto 仅使用内存中的环形缓冲区。 |
--app | -a
|
Android (atrace) 应用名称 |
这些选项后跟事件指定符列表
表 3. 精简模式的事件指定符列表。
事件 | 说明 |
---|---|
ATRACE_CAT | 指定您要记录跟踪的 atrace 类别。例如,以下命令使用 atrace 跟踪 Window Manager:adb shell perfetto --out FILE wm 要记录其他类别,请参阅此 |
FTRACE_GROUP/FTRACE_NAME | 指定您要记录跟踪的 ftrace 事件。例如,以下命令跟踪 sched/sched_switch 事件:adb shell perfetto --out FILE sched/sched_switch |
普通模式
在普通模式下使用 perfetto
的一般语法如下:
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
下表列出了在普通模式下使用 perfetto
时可用的选项:
表 4. 在普通模式下使用时,可用的 perfetto
工具选项列表。
选项 | 说明 |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
指定配置文件的路径。在普通模式下,某些配置可能编码在配置协议缓冲区中。此文件必须符合 AOSP trace_config.proto 中定义的协议缓冲区架构。使用 |
--txt
|
指示 perfetto 将配置文件解析为 pbtxt 。此标志仅用于本地测试,不建议在生产环境启用。 |
支持的数据源
本节介绍 perfetto
用于生成跟踪的不同来源。
ftrace
ftrace
数据源允许 perfetto
从内核获取事件。
通过在 DataSourceConfig 中设置 ftrace_config
来启用此来源。
可以启用的事件包括:
调度活动:
sched/sched_switch
sched/sched_wakeup
sched/sched_wakeup_new
sched/sched_process_exec
sched/sched_process_exit
sched/sched_process_fork
sched/sched_process_free
sched/sched_process_hang
sched/sched_process_wait
文件系统事件
根据您的设备、操作系统版本或内核,可能会有更多事件可用。有关更多信息,请参阅 配置 proto。
进程统计
进程统计数据源允许您获取有关系统和单个进程的轮询计数器。
通过在 DataSourceConfig 中设置 process_stats_config
和 sys_stats_config
来启用此来源。
perfetto
生成的数据包括:
根据您的设备、操作系统版本和内核,可能会有更多事件可用。要了解更多信息,请参阅 sys_stats
和 process_stats
的配置 proto。
heapprofd
heapprofd
允许您采样本机内存使用原因。
通过在 DataSourceConfig 中设置 heapprofd_config
来启用此来源。此设置会生成 ProfilePackets
,包括调用堆栈的 Java 帧。
有关如何使用 heapprofd
的更多信息,请访问 perfetto.dev
。
其他来源
根据您的设备、操作系统版本和内核,可能会有更多数据源可用。要了解更多信息,请参阅 数据源配置 proto。
有关 perfetto
的更多信息,请访问 perfetto.dev。