协同处理器性能控制 (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