perfetto
是一种工具,允许您通过 Android 调试桥 (ADB) 从 Android 设备收集性能信息。使用 adb shell perfetto ...
命令调用 perfetto
工具。perfetto
使用各种来源从您的设备收集性能跟踪,例如
ftrace
用于获取内核信息atrace
用于服务和应用中的用户空间注释heapprofd
用于获取服务和应用的原生内存使用情况信息
此页面介绍如何调用 perfetto
并将其配置为生成所需的输出。有关更多信息,请参阅 perfetto
文档。
语法
本节介绍如何使用 ADB 调用 perfetto
以实现不同的模式并生成跟踪。
数据源选择
perfetto
包括以下两种模式,用于确定它用于记录跟踪的数据源
- **轻量模式**:只能选择一部分数据源,具体来说是
atrace
和ftrace
。但是,此模式提供了类似于systrace
的界面。 - **普通模式**:在协议缓冲区中获取其配置,并允许您通过使用不同于
atrace
和ftrace
的数据源来利用更多perfetto
的功能。
常规选项
下表列出了在任何一种模式下使用 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
时可用的选项
选项 | 说明 |
---|---|
--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) 应用名称 |
这些选项后跟一系列事件说明符
事件 | 说明 |
---|---|
ATRACE_CAT | 指定您要为其记录跟踪的 atrace 类别。例如,以下命令使用 atrace 跟踪窗口管理器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
时可用的选项
选项 | 说明 |
---|---|
--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。