赞
踩
Perfetto 基于自 Android 9 (P)
以来可用的平台服务,但默认情况下仅在 Android 11 (R)
。 在 Android 9 (P) 和 10 (Q)
上,您需要执行以下操作以确保 在开始之前启用跟踪服务:
# Needed only on Android 9 (P) and 10 (Q) on non-Pixel phones.
adb shell setprop persist.traced.enable 1
命令行工具:
tools/record_android_trace
帮助程序脚本。/system/bin/perfetto
用户界面工具:
浏览器打开 ui.perfetto.dev,然后从左侧菜单中选择“记录新跟踪”。
如果不确定,请首先打开“CPU”选项卡下的“计划详细信息”。(这里生成命令需要的 CONFIG_FILE ,可查看 Recording settings )
确保设备已连接,然后选择“添加 ADB 设备”。一旦您的设备 已成功配对(您可能需要在设备上允许USB调试),选择“开始录制”按钮。
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s \
sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
/system/bin/perfetto
这个下面单独说明
- 启用开发者选项(如果尚未启用此选项)
- 打开开发者选项设置
- 在调试部分中,选择 System Tracing (系统跟踪)。此时会打开 System Tracing 应用,其中显示了应用菜单。
- 在应用菜单中,启用 显示 “快捷设置”图块
- 启用录制跟踪记录开关,该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录
- 完成这些操作后,可通过停用录制跟踪记录开关来停止跟踪
使用 ADB 导出报告
adb pull /data/local/traces/ .
如下命令生成文件格式.perfetto-trace
,导出报告adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace
,源码位置 external/perfetto/
adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s \
sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory
使用 perfetto 工具,您可以通过 Android 调试桥 (adb) 在 Android 设备上收集性能信息。使用 adb shell perfetto … 命令调用 perfetto 工具。 perfetto 从您的设备上收集性能跟踪数据时会使用多种来源,例如:
- 使用 ftrace 收集内核信息
- 使用 atrace 收集服务和应用中的用户空间注释
- 使用 heapprofd 收集服务和应用的本地内存使用情况信息
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
[ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
--out FILE
选项 | 说明 |
---|---|
--time TIME[s|m|h] | -t TIME[s|m|h\] | 指定轨迹的持续时间(以秒、分钟或小时为单位)。例如,–time 1m 指定持续 1 分钟的跟踪记录。默认持续时间为 10 秒。 |
--buffer SIZE[mb|gb] | -b SIZE[mb|gb] | 指定环形缓冲区空间大小,以兆字节 (mb) 或千兆字节 (gb) 为单位。默认参数为 --buffer 32mb。 |
--size SIZE[mb|gb] | -s SIZE[mb|gb] | 指定文件大小上限,以兆字节 (mb) 或千兆字节 (gb) 为单位。默认情况下,perfetto 仅使用内存中的环形缓冲区。 |
--app | -a | Android (atrace) 应用名称 |
事件 | 说明 |
---|---|
ATRACE_CAT | 指定您想为其记录跟踪数据的 atrace 类别。 例如,以下命令会使用 atrace 跟踪窗口管理器:adb shell perfetto --out FILE wm 如需记录其他类别,请参 atrace 类别列表 :adb shell atrace --list_categories |
FTRACE_GROUP/FTRACE_NAME | 指定您想为其记录跟踪数据的 ftrace 事件。例如,以下命令会跟踪 sched/sched_switch 事件:adb shell perfetto --out FILE sched/sched_switch |
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
选项 | 说明 |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE | 指定配置文件的路径。在普通模式下,某些配置可能会在配置协议缓冲区中进行编码。此文件必须符合 AOSP trace_config.proto 中定义的协议缓冲区架构。根据 AOSP data_source_config.proto 中的定义,可以使用 TraceConfig 的 DataSourceConfig 成员来选择和配置数据源。可使用 Perfetto UI 生成 CONFIG_FILE |
--txt | 指示 perfetto 将配置文件解析为 pbtxt。此标志仅用于本地测试,不建议将其用于生产环境。 |
ftrace 数据源允许 perfetto 从内核获取事件。
可以通过在 DataSourceConfig 中设置 ftrace_config
来启用此来源。
可以启用的事件包括:
调度 activity:
文件系统事件:
通过进程统计信息数据源,您可以获取有关系统和各个进程的轮询计数器。
可以通过在 DataSourceConfig 中设置 process_stats_config
和 sys_stats_config
来启用此来源。
perfetto 生成的数据包括:
系统级
每个进程
借助 heapprofd,您可以对使用本地内存的原因进行采样。
可以通过在 DataSourceConfig 中设置 heapprofd_config
来启用此来源。此设置会生成 ProfilePackets
,包括调用堆栈的 Java 框架。
data_sources: { config { name: "android.heapprofd" target_buffer: 0 heapprofd_config { sampling_interval_bytes: 4096 shmem_size_bytes: 8388608 block_client: true } } } data_sources: { config { name: "android.java_hprof" target_buffer: 0 java_hprof_config { } } }
可能会有更多可用数据源,具体取决于您的设备、操作系统版本以及内核。如需了解详情,请参阅 数据源配置 proto。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。