0

我想在移动设备上跟踪我的一种算法的 CPU 和内存利用率。到目前为止,我已经将它作为一个应用程序在 Android 中实现,并使用 Android 分析器作为跟踪文件 (filename.trace) 收集了资源利用率跟踪。我尝试使用该工具perfetto UI,它显示如下跟踪: 在此处输入图像描述

如何从该跟踪文件中提取正在显示在 android studio 中的原始时间序列数据,如下所示?

在此处输入图像描述

4

1 回答 1

0

如果我正确理解您的问题,您想在 Perfetto UI 中查看 CPU 利用率图表吗?

简短的回答是否定的,因为它们是不同的数据。

长答案:Android Studio 分析器在图表中显示的内容有些不同:

  1. 屏幕截图中的图表实际上是 Android Studio 直接从 中采样的 CPU 利用率数据proc/[pid]/stat,而不是来自系统跟踪(或 Perfetto)。这意味着您从 Android Studio 导出的跟踪文件不包含该数据。当您退出 Android Studio 时它会丢失。
  2. 但是,当您捕获系统跟踪时,它还会记录 CPU 使用率数据,如果您在 Android Studio 中点击 CPU Profiler 并选择您捕获的系统跟踪,顶部的 CPU 使用率图表将显示与系统跟踪收集的数据相同的数据. 这您导出的跟踪文件的一部分。
  3. 此外,系统跟踪 CPU 利用率数据适用于所有进程。Android Studio 所做的是它只为您的应用程序进程提取数据(因为 IDE 知道 pid)并计算利用率百分比,如下所示time_spent_in_app_per_50_miliseconds / 50_miliseconds * cpu_core_count
  4. 如果您想从 Android Studio 之外的跟踪文件计算利用率,您可以使用Perfetto TraceProcessor。编写 SQL 查询以获取由您的 pid 过滤的 CPU 调度数据,将它们存储为 50 毫秒的块,并以与 Android Studio 相同的方式计算利用率。然后,您可以在电子表格中将其可视化,但不能在 Perfetto UI 中进行可视化,因为它不支持从 TraceProcessor 数据中绘制图表。
于 2022-02-10T01:01:05.963 回答