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 的原始协议缓冲区编码字节。 |
--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
文件系统事件
根据您的设备、操作系统版本或内核,可能存在更多可用的事件。有关更多信息,请参阅 配置协议。
进程统计
进程统计数据源允许您获取有关系统和各个进程的轮询计数器。
通过在 DataSourceConfig 中设置 process_stats_config
和 sys_stats_config
来启用此源。
perfetto
生成的数据包括
根据您的设备、操作系统版本和内核,可能存在更多可用的事件。要了解更多信息,请参阅 sys_stats
和 process_stats
的配置协议。
heapprofd
heapprofd
允许您对原生内存使用的原因进行采样。
通过在 DataSourceConfig 中设置 heapprofd_config
来启用此源。此设置会生成 ProfilePackets
,包括调用堆栈的 Java 帧。
有关如何使用 heapprofd
的更多信息,请访问 perfetto.dev
。
其他来源
根据您的设备、操作系统版本和内核,可能存在更多可用的数据源。要了解更多信息,请参阅 数据源配置协议。
有关 perfetto
的更多信息,请访问 perfetto.dev。