14. 用於在 Intel 硬體上進行排程的硬體反饋介面

14.1. 概述

Intel 在 Intel 64 和 IA-32 架構軟體開發人員手冊 (Intel SDM) 第 3 卷第 14.6 節 [1] 中描述了硬體反饋介面 (HFI)。

HFI 為作業系統提供系統中每個 CPU 的效能和能效能力資料。 Linux 可以使用來自 HFI 的資訊來影響任務放置決策。

14.2. 硬體反饋介面

硬體反饋介面向作業系統提供有關係統中每個 CPU 的效能和能效的資訊。 每個功能都以無量綱量給出,範圍為 [0-255]。 較高的值表示較高的能力。 能效和效能在單獨的功能中報告。 儘管在某些系統上這兩個指標可能相關,但在 Intel SDM 中它們被指定為獨立功能。

這些功能可能會因系統執行狀況的變化或外部因素的作用而在執行時發生變化。 這些功能更新的速率特定於每個處理器型號。 在某些型號上,功能在啟動時設定,並且永遠不會更改。 在其他型號上,功能可能每幾十毫秒更改一次。 例如,可以使用遠端機制來降低散熱設計功耗。 這種變化可以反映在 HFI 中。 同樣,如果由於過熱需要節流系統,則 HFI 可能會反映特定 CPU 上的效能降低。

核心或使用者空間策略守護程式可以使用這些功能來修改任務放置決策。 例如,如果給定邏輯處理器的效能或能量功能變為零,則表明硬體建議作業系統不要出於效能或能效原因在該處理器上排程任何任務。

14.3. Linux 的實現細節

處理熱事件中斷的基礎結構有兩個部分。 在 CPU 本地 APIC 的本地向量表中,存在一個用於熱監視器暫存器的暫存器。 此暫存器控制在熱監視器生成中斷時如何將中斷傳遞到 CPU。 更多詳細資訊可以在 Intel SDM 第 3 卷第 10.5 節 [1] 中找到。

熱監視器可以生成每個 CPU 或每個封裝的中斷。 HFI 生成封裝級中斷。 此監視器透過一組特定於機器的暫存器進行配置和初始化。 具體來說,HFI 中斷和狀態分別透過 IA32_PACKAGE_THERM_INTERRUPT 和 IA32_PACKAGE_THERM_STATUS 暫存器中的指定位進行控制。 每個封裝都存在一個 HFI 表。 更多詳細資訊可以在 Intel SDM 第 3 卷第 14.9 節 [1] 中找到。

硬體在更新 HFI 表後發出 HFI 中斷,並準備好供作業系統使用。 CPU 透過本地 APIC 的本地向量表中的熱條目接收此類中斷。

在處理此類中斷時,HFI 驅動程式解析更新後的表,並使用熱通知框架將更新中繼到使用者空間。 鑑於每秒可能有許多 HFI 更新,因此中繼到使用者空間的更新以 CONFIG_HZ jiffies 的速率受到限制。

14.4. 參考文獻