Hyper-V 中的處理器相容性模式

適用于:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2、Hyper-V Server 2019、Hyper-V Server 2016、Hyper-V Server 2012 R2

Hyper-V 提供處理器相容性模式,這是 Windows Server 2008 R2 中首次推出的功能。 處理器相容性模式可讓您在使用不同處理器世代的虛擬化主機之間移動執行中的虛擬機器(VM)或儲存狀態。 此功能的運作方式是停用許多會影響 VM 效能的新式處理器功能。 本檔提供 Hyper-V 處理器相容性模式的詳細資料。

使用處理器相容性模式的時機

處理器相容性模式適用于未涉及重新開機 VM 的任何 VM 行動案例。 其中包括 VM 即時移轉、儲存和還原,以及生產檢查點。

VM 無法即時移轉或儲存並還原到使用不同 CPU 製造商處理器的虛擬化主機。 例如,您無法將執行中的 VM 或 VM 儲存狀態從具有 Intel 處理器的主機移至具有 AMD 處理器的主機。 如果您在此情況下必須移動 VM,則必須先關閉 VM,然後在新的主機上重新開機。

如果您打算在不重新開機 VM 的情況下移動 VM,在可能使用不同的處理器世代的虛擬化主機之間,您應該啟用處理器相容性模式。 例如,您會啟用處理器相容性模式,以確保您可以在使用不同處理器功能集的叢集節點之間即時移轉 VM。 您也可以使用處理器相容性模式來儲存 VM,並將它還原到主機電腦上,其處理器功能集與來源主機不同。

為什麼需要處理器相容性模式

指令集架構 (ISA) 延伸模組是處理器製造商所引進的優化和功能。 這些功能通常會使用特定工作的特殊硬體來改善效能或安全性。 例如,許多媒體應用程式會使用處理器功能來加速向量計算。 應用程式執行時很少需要這些功能;它們只會提升效能。

處理器上可用的功能集會根據其製造、型號和年齡而有所不同。 作業系統和應用程式軟體通常會在第一次啟動時列舉系統的處理器功能集和功能。 軟體不會預期可用的處理器功能在其存留期內會變更,而且在實體電腦上執行時,這種情況永遠不會發生,因為處理器功能是靜態的。

不過,VM 行動功能可讓執行中的 VM 移轉至新的虛擬化主機。 如果 VM 中的軟體偵測到並使用特定處理器功能啟動,且會移至缺少該功能的新虛擬化主機,則軟體可能會失敗。 這可能會導致 VM 當機。

為了避免這些失敗,每當起始 VM 即時移轉或儲存/還原作業時,Hyper-V 就會執行「正式發行前小眾測試」檢查。 這些檢查會比較來源主機上 VM 可用的處理器功能集,與目標主機上可用的一組功能。 如果這些功能集不相符,則會取消移轉或還原作業。

處理器相容性模式的運作方式

處理器相容性模式可確保一組不同虛擬化主機的 VM 可以使用的處理器功能集,只要向 VM 提供一組有限的處理器功能,即可比對。 處理器相容性模式會隱藏較新的處理器指令集,通常是在過去 10 年內引進的指令集。 不過,隱藏這些功能表示客體作業系統和應用程式軟體無法利用這些處理器指令集增強功能。

如需針對處理器相容性模式隱藏的功能完整清單,請參閱 Hypervisor 最上層功能規格 中的 5.2.11 節。

Processor compatibility mode hides newer processor instructions sets for smooth VM migrations between host servers

使用處理器相容性模式的影響

很難量化處理器相容性模式的整體效能效果。 效能遺失主要取決於 VM 中執行的工作負載。 某些工作負載不會受到影響,而其他工作負載則會顯示明顯的差異。 高度依賴硬體優化的軟體(例如加密、壓縮或密集的浮點計算)將受到最大影響。

下列範例說明如何使用處理器相容性模式影響 AES 加密,以及更多。 如果您擔心處理器相容性模式的效能影響,最好比較 VM 工作負載效能與已啟用處理器相容性模式,並停用。

範例:AES 加密

受處理器相容性模式影響的作業範例之一是 AES 加密(一種常見的加密形式)。 許多新的 Intel 和 AMD 處理器都包含使用硬體加速 AES 的 ISA 擴充功能。 Intel 聲稱這項優化可提供 2-3 折的效能提升,有些實作提供 10 倍的增益。 (如需詳細資訊,請參閱 Intel 進階加密標準指示 。)

加密或解密大量資料的應用程式受益于此處理器功能,因此啟用處理器相容性模式將其關閉會影響這些特定作業的效能。

使用處理器相容性模式

在 Hyper-V 中使用處理器相容性模式時,需要瞭解的重要概念:

  • 執行中的 VM 只能在使用來自相同製造商之處理器的虛擬化主機之間移轉。

  • 您必須先關閉 VM,才能啟用或停用處理器相容性模式。

  • VM 移動不需要處理器相容性模式,這些動作牽涉到 VM 的停止和重新開機。

  • 每當 VM 重新開機時,客體作業系統就會列舉新主機電腦上可用的處理器功能。

注意

在 Windows Server 中,Microsoft 建議只在 VM 移轉案例之前開啟處理器相容性模式,然後在移轉完成時將其關閉。

使用 Hyper-V 管理員啟用處理器相容性模式

若要使用 Hyper-V 管理員啟用 VM 的處理器相容性模式:

  1. 關閉 VM。

  2. 按一下 [開始] ,指向 [系統管理工具] ,然後按一下 [Hyper-V 管理員]

  3. 選取執行 Hyper-V 的伺服器和所需的 VM。

  4. 如果 VM 正在執行,您必須關閉 VM 以啟用處理器相容性模式設定。

  5. 在 [動作] 窗格中,按一下 [設定 ],然後按一下 [ 處理器 ]。

  6. 展開 [處理器 ],然後按一下 [ 相容性 ]。

  7. 選取 [ 移轉至具有不同處理器 的實體電腦],然後按一下 [ 確定 ]。

  8. 重新啟動 VM。

使用 Hyper-V 管理員停用處理器相容性模式

若要使用 Hyper-V 管理員停用 VM 的處理器相容性模式:

  1. 關閉 VM。

  2. 按一下 [開始] ,指向 [系統管理工具] ,然後按一下 [Hyper-V 管理員]

  3. 選取執行 Hyper-V 的伺服器和所需的 VM。

  4. 如果 VM 正在執行,您必須關閉 VM,才能停用處理器相容性模式設定。

  5. 在 [動作] 窗格中,按一下 [設定 ],然後按一下 [ 處理器 ]。

  6. 展開 [處理器 ],然後按一下 [ 相容性 ]。

  7. 取消選取 [ 移轉至具有不同處理器 的實體電腦] 核取方塊,然後按一下 [ 確定 ]。

  8. 重新啟動 VM。

使用 PowerShell 啟用處理器相容性模式

若要使用 PowerShell 啟用 VM 的處理器相容性模式,請關閉 VM 並執行 Set-VMProcessor Cmdlet,並將 設定 CompatibilityForMigrationEnabled $true

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $true

然後重新開機 VM。

警告

您可能會看到用於 Azure Stack HCI 的其他參數 Set-VMProcessor 。 請勿嘗試將這些專案與 Windows Server 搭配使用,否則會收到錯誤訊息。 預設且僅適用于 CompatibilityForMigrationMode Windows Server。 MinimumFeatureSet 瞭解 Azure Stack HCI 中的動態 CPU 相容性模式。

使用 PowerShell 停用處理器相容性模式

若要使用 PowerShell 停用 VM 的處理器相容性模式,請關閉 VM 並執行 Set-VMProcessor Cmdlet,並將 設定 CompatibilityForMigrationEnabled $false

get-vm -name <name of VM> -ComputerName <target cluster or host> | Set-VMProcessor -CompatibilityForMigrationEnabled $false

然後重新開機 VM。

下一步

請參閱: