
在配備 2 個 Xeon(R) Gold 6246R(32 個實體核心,64 個日誌,帶有 HT)的 HPE DL380 G10 伺服器上,在 BIOS 中使用以下設定:
系統配置 > BIOS/平台配置 (RBSU) > 效能選項 > 進階效能調整選項 > NUMA 群組大小優化
我們可以選擇以下 2 個選項:
- 簇狀— 沿著 NUMA 邊界最佳化組,提供更好的效能。
- 平坦的- 使未最佳化的應用程式能夠利用跨多個群組的處理器來利用更多邏輯處理器。
「叢集」選項將強制 Windows 僅報告 1 個 NUMA 節點,但報告 2 個處理器組,每個處理器組 32 個核心。另一側的「Flat」選項顯示 2 個 NUMA 節點和僅 1 個具有 64 個邏輯核心的處理器群組。
當然,我已經對 NUMA 和處理器組了解很多,所以我真的不會要求任何有關我的用例的最佳設定的建議。相反,問題是:當只有一個 NUMA 節點時,為什麼 Windows 決定使用 2 個處理器組有意義,反之亦然?另外,我從未找到任何有關 Windows (Server 2019) 將 64 個核心分為 2 組的文檔,這是預期的行為嗎?
答案1
您找到的文章可以追溯到2008 年。 。
2014 年底推出了更靈活的解決方案。 惠普諮詢說明 關於 HP Gen9 伺服器,日期自 2015 年 4 月 24 日起:
在 Gen9 伺服器的系統 ROM 修訂版 1.30 (12/24/2014) 及更高版本中,新的基於 ROM 的設定實用程式“NUMA 群組大小優化”新增了允許使用者更改向作業系統報告處理器的行為。如果有 64 個或更少的邏輯處理器(「Flat」),此選項將允許作業系統將所有邏輯處理器放入一個群組中。
「集群」選項為每個 CPU 的核心建立一個處理器組。 Flat 選項旨在讓應用程式使用所有電腦核心,因為在 Windows 中預設應用程式僅限於單一群組,因此只能看到和使用其一組。
關於您的問題:
當只有一個 NUMA 節點時,為什麼 Windows 決定使用 2 個處理器群組是有意義的,反之亦然?
這是由「集群」選項決定的,這對於應用程式及其所有進程和線程在附近的記憶體上執行所有進程和線程以提高效能是有意義的。
如果您的情況下應用程式需要超過 32 個內核,則應使用「扁平」選項,以使所有內核均可使用。
我從未找到任何文件表明 Windows (Server 2019) 將 64 個核心分為 2 組,這是預期的行為嗎?
是的,這是預期的行為。它沒有很好的記錄,但是有關於這種行為的參考,例如 交換效能:HP NUMA BIOS 設定。