協作式處理器效能控制 (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: 將 feedback_ctrs 讀取為 fbc_t1
等待或執行某些工作負載
T2: 將 feedback_ctrs 讀取為 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