协同处理器性能控制 (CPPC)

CPPC

ACPI 规范中定义的 CPPC 描述了一种机制,用于操作系统管理连续和抽象性能范围上逻辑处理器的性能。CPPC 公开了一组寄存器来描述抽象性能范围、请求性能级别和测量每个 CPU 的交付性能。

有关 CPPC 的更多详细信息,请参阅以下 ACPI 规范:

http://uefi.org/specifications

一些 CPPC 寄存器通过 sysfs 在以下位置公开:

/sys/devices/system/cpu/cpuX/acpi_cppc/

对于每个 CPU X

$ ls -lR  /sys/devices/system/cpu/cpu0/acpi_cppc/
/sys/devices/system/cpu/cpu0/acpi_cppc/:
total 0
-r--r--r-- 1 root root 65536 Mar  5 19:38 feedback_ctrs
-r--r--r-- 1 root root 65536 Mar  5 19:38 highest_perf
-r--r--r-- 1 root root 65536 Mar  5 19:38 lowest_freq
-r--r--r-- 1 root root 65536 Mar  5 19:38 lowest_nonlinear_perf
-r--r--r-- 1 root root 65536 Mar  5 19:38 lowest_perf
-r--r--r-- 1 root root 65536 Mar  5 19:38 nominal_freq
-r--r--r-- 1 root root 65536 Mar  5 19:38 nominal_perf
-r--r--r-- 1 root root 65536 Mar  5 19:38 reference_perf
-r--r--r-- 1 root root 65536 Mar  5 19:38 wraparound_time
  • highest_perf : 此处理器的最高性能(抽象范围)。

  • nominal_perf : 此处理器的最高持续性能(抽象范围)。

  • lowest_nonlinear_perf : 此处理器的最低性能,具有非线性节能功能(抽象范围)。

  • lowest_perf : 此处理器的最低性能(抽象范围)。

  • lowest_freq : 与 lowest_perf 对应的 CPU 频率(以 MHz 为单位)。

  • nominal_freq : 与 nominal_perf 对应的 CPU 频率(以 MHz 为单位)。上述频率应仅用于报告处理器性能,以频率而不是抽象范围表示。这些值不应用于任何功能决策。

  • feedback_ctrs : 包括参考和交付性能计数器。参考计数器根据处理器的参考性能成比例地增加。交付计数器根据处理器的交付性能成比例地增加。

  • wraparound_time: 反馈计数器环绕的最小时间(秒)。

  • reference_perf : 参考性能计数器累积的性能级别(抽象范围)。

计算平均交付性能

下面描述了通过在时间 T1 和 T2 获取两个不同的反馈计数器快照来计算平均交付性能的步骤。

T1:读取反馈计数器为 fbc_t1

等待或运行一些工作负载

T2:读取反馈计数器为 fbc_t2

delivered_counter_delta = fbc_t2[del] - fbc_t1[del]
reference_counter_delta = fbc_t2[ref] - fbc_t1[ref]

delivered_perf = (reference_perf x delivered_counter_delta) / reference_counter_delta