CPU 来自 perfetto trace 的利用率曲线

CPU utilisation curve from perfetto trace

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

如何从这个跟踪文件中提取显示在 android 工作室中的原始时间序列数据,如下所示?

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

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

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

  1. 您屏幕截图中的图表实际上是 CPU 由 Android Studio 直接从 proc/[pid]/stat 采样的利用率数据,而不是来自系统跟踪(或 Perfetto)。这意味着您从 Android Studio 导出的跟踪文件不包含该数据。当您退出 Android Studio 时它会丢失。
  2. 但是,当您捕获系统跟踪时,它还会记录 CPU 利用率数据,如果您在 Android Studio 和 select 系统中单击 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 数据绘制图表。