当前位置:   article > 正文

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

android perfetto


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

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
  • 1
  • 2

/system/bin/perfetto 这个下面单独说明
在这里插入图片描述

1.2.3 System Tracing 的系统级应用抓取

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

  • 启用开发者选项(如果尚未启用此选项)
  • 打开开发者选项设置
  • 在调试部分中,选择 System Tracing (系统跟踪)。此时会打开 System Tracing 应用,其中显示了应用菜单。
  • 在应用菜单中,启用 显示 “快捷设置”图块
    在这里插入图片描述
  • 启用录制跟踪记录开关,该图块会变为启用状态,并且系统会显示常驻通知,通知您系统正在录制跟踪记录
  • 完成这些操作后,可通过停用录制跟踪记录开关来停止跟踪
    在这里插入图片描述

使用 ADB 导出报告

adb pull /data/local/traces/ .
  • 1

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
  • 1
  • 2

使用 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
  • 1
  • 2
  • 3
选项说明
--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 | -aAndroid (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
  • 1
选项说明
--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 框架。
在这里插入图片描述

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 {
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3.4 其他来源

可能会有更多可用数据源,具体取决于您的设备、操作系统版本以及内核。如需了解详情,请参阅 数据源配置 proto

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/812834
推荐阅读
相关标签
  

闽ICP备14008679号