1、快速入门
1.1 启动跟踪服务
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
1.2 记录跟踪
命令行工具:
- 使用
tools/record_android_trace
帮助程序脚本。 - 直接使用设备上的命令:
/system/bin/perfetto
用户界面工具:
- 通过 Perfetto UI 中的记录页面。
- 使用设备上的系统跟踪应用
1.2.1 通过 Perfetto UI 记录跟踪
浏览器打开 ui.perfetto.dev,然后从左侧菜单中选择“记录新跟踪”。
如果不确定,请首先打开“CPU”选项卡下的“计划详细信息”。(这里生成命令需要的 CONFIG_FILE ,可查看 Recording settings )
确保设备已连接,然后选择“添加 ADB 设备”。一旦您的设备 已成功配对(您可能需要在设备上允许USB调试),选择“开始录制”按钮。
1.2.2 通过 cmdline 记录跟踪
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
这个下面单独说明
1.2.3 System Tracing 的系统级应用抓取
捕获设备上的系统跟踪记录
- 启用开发者选项(如果尚未启用此选项)
- 打开开发者选项设置
- 在调试部分中,选择 System Tracing (系统跟踪)。此时会打开 System Tracing 应用,其中显示了应用菜单。
- 在应用菜单中,启用 显示 “快捷设置”图块
- 启用录制跟踪记录开关,该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录
- 完成这些操作后,可通过停用录制跟踪记录开关来停止跟踪
使用 ADB 导出报告
adb pull /data/local/traces/ .
2、perfetto 工具
如下命令生成文件格式.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 收集服务和应用的本地内存使用情况信息
2.1 数据源选择
- 轻量模式:只能选择一部分数据源,具体来说就是 atrace 和 ftrace。但此模式可提供类似于 systrace 的接口。
- 普通模式:从协议缓冲区获取其配置,并允许您更充分地利用 perfetto 功能,方法是使用 atrace 和 ftrace 之外的数据源。
2.2 语法参数
2.2.1 轻量模式
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
|
2.2.2 普通模式
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。此标志仅用于本地测试,不建议将其用于生产环境。 |
3、支持的数据源
3.1 ftrace
ftrace 数据源允许 perfetto 从内核获取事件。
可以通过在 DataSourceConfig 中设置 ftrace_config
来启用此来源。
可以启用的事件包括:
-
调度 activity:
- 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
-
文件系统事件:
- ext4
- f2fs
- block
- atrace 事件
3.2 进程统计信息
通过进程统计信息数据源,您可以获取有关系统和各个进程的轮询计数器。
可以通过在 DataSourceConfig 中设置 process_stats_config
和 sys_stats_config
来启用此来源。
perfetto 生成的数据包括:
-
系统级
- /proc/meminfo
- /proc/vmstat
- /proc/stat
-
每个进程
- /proc/<pid>/status
- /proc/<pid>/oom_score_adj
3.3 heapprofd
借助 heapprofd,您可以对使用本地内存的原因进行采样。
可以通过在 DataSourceConfig 中设置 heapprofd_config
来启用此来源。此设置会生成 ProfilePackets
,包括调用堆栈的 Java 框架。
文章来源:https://www.toymoban.com/news/detail-531743.html
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 {
}
}
}
3.4 其他来源
可能会有更多可用数据源,具体取决于您的设备、操作系统版本以及内核。如需了解详情,请参阅 数据源配置 proto。文章来源地址https://www.toymoban.com/news/detail-531743.html
到了这里,关于Perfetto 命令行工具(Android 10 及更高版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!