在轨迹中记录 CPU 频率

概览

Fuchsia 跟踪可以捕获支持动态电压和频率调节 (DVFS) 的设备上的 CPU 频率变化(在内核中称为“处理速率”)。这些更改会以计数器的形式显示在轨迹数据中。

在分析使用 RPPM(相对性能电源管理)的设备的性能时,这些轨道特别有用,因为频次变化会显著影响执行时长。

捕获轨迹

Zircon 内核会处理 CPU 频率跟踪,这是 kernel:power 类别的组成部分。在开始轨迹时指定此类别:

ffx trace start --categories "kernel:power"

了解 CPU 频率计数器

捕获跟踪记录后,您可以在 Perfetto 中查看和分析 CPU 频率数据:

  1. 在 Perfetto 中打开轨迹文件。
  2. 在轨道列表中,找到内核进程下的 Rate:CPU:N 指标(其中 N 是 CPU 核心指数,例如 Rate:CPU:0)。

“速率”计数器显示的值表示 CPU 的运行频率相对于归一化比例的值:

  • 值 1000 表示 CPU 以最高频率 (100%) 运行。
  • 值越低,表示频率越低(例如,值 524 表示 CPU 以最大频率的大约 52.4% 运行)。

如需计算实际频次,请将此百分比乘以 CPU 的最大频次。例如,如果最大频率为 2.7 GHz,则轨迹值 524 大致相当于 1.4 GHz(2.7 GHz 的 52.4%)。

这些值源自内核的内部处理速率乘数,按 1000 缩放。

了解带宽需求计数器

kernel:power 类别还包括带宽需求计数器,即 Constant BW Demand:CPU:N 计数器(其中 N 是 CPU 核心指数)。

“恒定带宽需求”计数器表示核心的总截止时间利用率(请求的 CPU 带宽)。这是具有特定时间要求的线程所请求的 CPU 时间的比例。

与处理速率类似,这些计数器显示的值是相对于归一化比例的:

  • 值 1000 表示 CPU 核心处于最高利用率 (100%)。
  • 值越低,表示利用率越低(例如,值为 750 表示截止时间线程请求了核心总容量的 75%)。

需求与处理速率之间的关系

这两个计数器通常会一起移动:

  • 恒定带宽需求是需求:它显示了调度线程请求执行的工作量。
  • 处理速率是响应:内核会根据此需求调整 CPU 频率。

当带宽需求增加时,内核通常会提高处理速率(频率),以确保能够满足截止期限。当需求减少时,处理速率可能会降低。