Hyper-V 主機 CPU 資源管理
Windows Server 2016 或更新版本中引進的 Hyper-V 主機 CPU 資源控制可讓 Hyper-V 系統管理員更妥善地管理及配置「根」或「管理分割區」與客體 VM 之間的主機伺服器 CPU 資源。 使用這些控制項,系統管理員可以將主機系統的處理器子集獻給根分割區。 這可將 Hyper-V 主機中完成的工作與客體虛擬機器中執行的工作負載隔離,方法是在系統處理器的個別子集上執行它們。
如需 Hyper-V 主機硬體的詳細資訊,請參閱 Windows 10 Hyper-V 系統需求 。
背景
在設定 Hyper-V 主機 CPU 資源的控制項之前,最好先檢閱 Hyper-V 架構的基本概念。 您可以在 Hyper-V 架構 一節中找到 一般摘要。 以下是本文的重要概念:
Hyper-V 會在 Hypervisor 的控制下,建立和管理虛擬機器分割區,其中會配置和共用計算資源。 資料分割提供所有客體虛擬機器之間的強式隔離界限,以及客體 VM 與根分割區之間的強式隔離界限。
根分割區本身是虛擬機器分割區,雖然其具有唯一屬性,而且許可權遠高於客體虛擬機器。 根分割區提供管理服務,可控制所有客體虛擬機器、提供客體虛擬機器的虛擬裝置支援,以及管理客體虛擬機器的所有裝置 I/O。 Microsoft 強烈建議不要在主機分割區中執行任何應用程式工作負載。
根分割區的每個虛擬處理器 (VP) 都會對應到基礎邏輯處理器 (LP) 1:1。 主機 VP 一律會在相同的基礎 LP 上執行 – 沒有根分割區 IP 的移轉。
根據預設,執行主機 IP 的 LP 也可以執行客體 IP。
Hypervisor 可能會排程客體 VP,以在任何可用的邏輯處理器上執行。 雖然 Hypervisor 排程器會小心考慮時態性快取位置、NUMA 拓撲,以及排程客體 VP 時的許多其他因素,但最終可以在任何主機 LP 上排程 VP。
最小根目錄或 「Minroot」 組態
舊版 Hyper-V 的每個分割區有 64 個 VM 的架構上限。 這同時套用至根和客體分割區。 當超過 64 個邏輯處理器的系統出現在高端伺服器上時,Hyper-V 也會演進其主機規模限制,以支援這些較大的系統,一次支援最多 320 個 LP 的主機。 不過,在當時打破每個分割區 64 VP 的限制,提出了數個挑戰,並引進了讓每個分割區支援超過 64 個 VP 的複雜度。 為了解決這個問題,Hyper-V 會將提供給根分割區的 IP 數目限制為 64,即使基礎電腦有更多可用的邏輯處理器也一樣。 Hypervisor 會繼續利用所有可用的 IP 來執行客體 IP,但人為地將根分割區限制在 64。 此設定稱為「最小根目錄」或「minroot」組態。 效能測試確認,即使在具有 64 個以上的 LP 的大型系統上,根目錄不需要超過 64 個根 VM 來提供足夠的支援給大量客體 VM 和客體 VM – 事實上,通常少於 64 個根 VM 通常就足夠,視客體 VM 的數目和大小而定, 正在執行的特定工作負載等等。
這個「minroot」概念今天繼續使用。 事實上,即使 Windows Server 2016 Hyper-V 將主機 LP 的最大架構支援限制增加到 512 個 LP,根分割區仍會限制為最多 320 個 LP。
使用 Minroot 來限制和隔離主機計算資源
Windows Server 2016 Hyper-V 中預設閾值為 320 個 LP,最小根設定只會在非常大型的伺服器系統上使用。 不過,這項功能可由 Hyper-V 主機管理員設定為低得多的閾值,因此利用來大幅限制根分割區可用的主機 CPU 資源數量。 當然,必須謹慎選擇要利用的特定根 IP 數目,以支援配置給主機的 VM 和工作負載的最大需求。 不過,主機 LP 數目的合理值可透過仔細評估和監視生產工作負載來判斷,並在廣泛部署之前在非生產環境中驗證。
啟用和設定 Minroot
minroot 設定是透過 Hypervisor BCD 專案來控制。 若要啟用 minroot,請從具有系統管理員許可權的 Cmd 提示字元:
bcdedit /set hypervisorrootproc n
其中 n 是根 VP 的數目。
系統必須重新開機,而且 OS 開機存留期的新根處理器數目將會保存。 minroot 組態無法在執行時間動態變更。
如果有多個 NUMA 節點,每個節點都會取得 n/NumaNodeCount
處理器。
請注意,使用多個 NUMA 節點時,您必須確定 VM 的拓撲足以讓每個 NUMA 節點上有足夠的可用 LP(也就是沒有根 IP 的 LP)來執行對應的 VM NUMA 節點 VM。
驗證 Minroot 組態
您可以使用工作管理員來驗證主機的 minroot 設定,如下所示。
當 Minroot 處於使用中狀態時,除了系統中的邏輯處理器總數之外,工作管理員還會顯示目前分配給主機的邏輯處理器數目。