CPU 来自 perfetto trace 的利用率曲线
CPU utilisation curve from perfetto trace
我想在移动设备上跟踪我的一种算法的 CPU 和内存利用率。到目前为止,我已经在 Android 中将其作为应用程序实施,并使用 Android 分析器作为跟踪文件 (filename.trace) 收集资源利用率跟踪。我尝试使用工具 perfetto UI 显示如下跟踪:
如何从这个跟踪文件中提取显示在 android 工作室中的原始时间序列数据,如下所示?
如果我对你的问题的理解正确,你想查看 Perfetto UI 中的 CPU 利用率图表吗?
简短的回答是否定的,因为它们是不同的数据。
长答案:Android Studio 分析器在图表中显示的内容有些不同:
- 您屏幕截图中的图表实际上是 CPU 由 Android Studio 直接从
proc/[pid]/stat
采样的利用率数据,而不是来自系统跟踪(或 Perfetto)。这意味着您从 Android Studio 导出的跟踪文件不包含该数据。当您退出 Android Studio 时它会丢失。
- 但是,当您捕获系统跟踪时,它还会记录 CPU 利用率数据,如果您在 Android Studio 和 select 系统中单击 CPU Profiler跟踪您捕获的数据,顶部的 CPU 使用情况图表将显示与系统跟踪收集的相同数据。 是您导出的跟踪文件的部分。
- 此外,系统跟踪 CPU 利用率数据适用于所有进程。 Android Studio 所做的是它只提取您的应用程序进程的数据(因为 IDE 知道 pid)并按如下方式计算利用率百分比:
time_spent_in_app_per_50_miliseconds / 50_miliseconds * cpu_core_count
.
- 如果您想从 Android Studio 之外的跟踪文件计算利用率,您可以使用 Perfetto TraceProcessor。编写 SQL 查询以获取由您的 pid 过滤的 CPU 调度数据,将它们存储到 50 毫秒的块中,并以与 Android Studio 相同的方式计算利用率。然后您可以在电子表格中将其可视化,但不能在 Perfetto UI 中显示,因为它不支持从 TraceProcessor 数据绘制图表。
我想在移动设备上跟踪我的一种算法的 CPU 和内存利用率。到目前为止,我已经在 Android 中将其作为应用程序实施,并使用 Android 分析器作为跟踪文件 (filename.trace) 收集资源利用率跟踪。我尝试使用工具 perfetto UI 显示如下跟踪:
如何从这个跟踪文件中提取显示在 android 工作室中的原始时间序列数据,如下所示?
如果我对你的问题的理解正确,你想查看 Perfetto UI 中的 CPU 利用率图表吗?
简短的回答是否定的,因为它们是不同的数据。
长答案:Android Studio 分析器在图表中显示的内容有些不同:
- 您屏幕截图中的图表实际上是 CPU 由 Android Studio 直接从
proc/[pid]/stat
采样的利用率数据,而不是来自系统跟踪(或 Perfetto)。这意味着您从 Android Studio 导出的跟踪文件不包含该数据。当您退出 Android Studio 时它会丢失。 - 但是,当您捕获系统跟踪时,它还会记录 CPU 利用率数据,如果您在 Android Studio 和 select 系统中单击 CPU Profiler跟踪您捕获的数据,顶部的 CPU 使用情况图表将显示与系统跟踪收集的相同数据。 是您导出的跟踪文件的部分。
- 此外,系统跟踪 CPU 利用率数据适用于所有进程。 Android Studio 所做的是它只提取您的应用程序进程的数据(因为 IDE 知道 pid)并按如下方式计算利用率百分比:
time_spent_in_app_per_50_miliseconds / 50_miliseconds * cpu_core_count
. - 如果您想从 Android Studio 之外的跟踪文件计算利用率,您可以使用 Perfetto TraceProcessor。编写 SQL 查询以获取由您的 pid 过滤的 CPU 调度数据,将它们存储到 50 毫秒的块中,并以与 Android Studio 相同的方式计算利用率。然后您可以在电子表格中将其可视化,但不能在 Perfetto UI 中显示,因为它不支持从 TraceProcessor 数据绘制图表。