Perfetto 命令行工具(Android 10 及更高版本)

这篇具有很好参考价值的文章主要介绍了Perfetto 命令行工具(Android 10 及更高版本)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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调试),选择“开始录制”按钮。

Perfetto 命令行工具(Android 10 及更高版本),Android,# 性能,Android,Perfetto
Perfetto 命令行工具(Android 10 及更高版本),Android,# 性能,Android,Perfetto

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 这个下面单独说明
Perfetto 命令行工具(Android 10 及更高版本),Android,# 性能,Android,Perfetto

1.2.3 System Tracing 的系统级应用抓取

捕获设备上的系统跟踪记录

  • 启用开发者选项(如果尚未启用此选项)
  • 打开开发者选项设置
  • 在调试部分中,选择 System Tracing (系统跟踪)。此时会打开 System Tracing 应用,其中显示了应用菜单。
  • 在应用菜单中,启用 显示 “快捷设置”图块
    Perfetto 命令行工具(Android 10 及更高版本),Android,# 性能,Android,Perfetto
  • 启用录制跟踪记录开关,该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录
  • 完成这些操作后,可通过停用录制跟踪记录开关来停止跟踪
    Perfetto 命令行工具(Android 10 及更高版本),Android,# 性能,Android,Perfetto

使用 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 中的定义,可以使用 TraceConfigDataSourceConfig 成员来选择和配置数据源。
可使用 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_configsys_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 框架。
Perfetto 命令行工具(Android 10 及更高版本),Android,# 性能,Android,Perfetto

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包