共用方式為


動態處理器相容性模式

適用於:Windows Server 2025

適用於:Azure Stack HCI 版本 22H2

動態處理器相容性模式會更新,以利用叢集環境中的新處理器功能。 處理器相容性的運作方式是判斷叢集中每個個別節點支援的處理器功能,以及計算所有處理器的通用分母。 虛擬機 (VM) 已設定為使用叢集中所有伺服器可用的功能數目上限。 相較於預設為最小、固定處理器功能集的舊版處理器相容性,這可改善效能。

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

處理器相容性模式可讓您移動即時 VM(即時移轉),或移動在不同進程功能集合的節點之間儲存的 VM。 不過,即使啟用處理器相容性,您也無法在不同的處理器製造商的主機之間移動 VM。 例如,您無法將執行中的 VM 或儲存的狀態 VM 從具有 Intel 處理器的主機移至具有 AMD 處理器的主機。 如果您必須以這種方式移動 VM,請先關閉 VM,然後在新的主機上重新啟動 VM。

重要

只有具有最新組態版本 (10.0) 的 Hyper-V VM 受益於動態設定。 具有較舊版本的 VM 不會受益於動態設定,也不會繼續使用 舊版的固定處理器功能

我們建議針對在 Azure Stack HCI 上執行的 VM 啟用處理器相容性模式。 這可提供最高層級的功能,以及何時移轉至新硬體,移動 VM 並不需要停機。

注意

如果您打算停止並重新啟動 VM,就不需要使用處理器相容性模式。 每當 VM 重新啟動時,客體作業系統就會列舉新主計算機上可用的處理器相容性。

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

處理器製造商通常會在其處理器中引進優化和功能。 這些功能通常會使用特定工作的特殊硬體來改善效能或安全性。 例如,許多媒體應用程式會使用處理器功能來加速向量計算。 應用程式執行時很少需要這些功能;它們可提升效能。

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

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

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

處理器相容性模式的新功能

過去,所有新的處理器指令集都會隱藏,這表示客體作業系統和應用程式軟體無法使用處理器指令集增強功能來協助應用程式和 VM 保持高效能。

為了克服這項限制,處理器相容性模式現在會在能夠進行第二層位址轉譯的處理器上提供增強的動態功能。 這項新功能會計算叢集中節點所支援的 CPU 功能的通用分母,並更新 VM 上現有的處理器相容性模式,以使用此動態計算的功能集,而不是舊的硬式編碼功能集。

新的處理器相容性模式可藉由在叢集中的所有伺服器上呈現通用功能集,確保跨虛擬化主機的 VM 可用的處理器功能集相符。 每個 VM 都會接收叢集中所有伺服器中存在的處理器指令集數目上限。 此程式會自動發生,而且一律會在叢集上啟用和複寫,因此沒有啟用或停用進程的命令。

使用處理器相容性模式

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

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

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

  • 涉及 VM 停止和重新啟動的 VM 移動不需要處理器相容性模式。

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

注意

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

在叢集之間移轉執行中的 VM

假設每個叢集中的所有伺服器都執行相同的硬體,就可以在叢集之間即時移轉執行中的 VM。 有三個常見案例。

  • 即時將 VM 從具有新處理器的叢集移轉至具有相同處理器的叢集。 VM 功能會傳輸到目的地叢集。 此案例不需要啟用處理器相容性模式;不過,將它保持啟用並不會造成任何問題。

  • 即時將 VM 從具有較舊處理器的叢集移轉至具有較新處理器的叢集。 VM 功能會傳輸到目的地叢集。 在此案例中,如果 VM 重新啟動,則會接收目的地叢集的最新計算功能。

  • 即時將 VM 從具有較新處理器的叢集移轉至具有較舊處理器的叢集。 您必須將 VM 處理器設定為使用 MinimumFeatureSet PowerShell 中的 參數,或在 Windows Admin Center 中選取 [虛擬機>>設定處理器] 底下的 [與相同 CPU 製造商相容] 的其他CompatibilityForMigrationMode主機。 此設定會將 VM 指派給伺服器上提供的最小處理器功能。 一旦相容性移至 整個叢集的 [兼容] 且 VM 重新啟動,就會收到目的地叢集的最新計算功能。

使用處理器相容性模式的後果

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

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

如果您擔心處理器相容性模式的效能影響,最好比較 VM 工作負載效能與已啟用處理器相容性模式,並停用它。

設定 VM 以使用處理器相容性模式

本節說明如何設定 VM 以使用處理器相容性模式。 在相同的叢集中,可以執行具有和沒有相容性模式的 VM。

重要

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

使用 Windows Admin Center 啟用處理器相容性模式

若要使用 Windows Admin Center 啟用處理器相容性模式:

  1. 聯機到您的叢集,然後在 [ 工具] 窗格中,選取 [ 虛擬機]。

  2. 在 [清查] 下,選取您要啟用處理器相容性模式的 VM,展開 [電源] 功能表,然後選取 [關機]。

  3. 選取 [設定],然後選取 [處理器],然後核取 [處理器兼容性] 方塊。

啟用處理器相容性之複選框的螢幕快照。

  1. 如果您想要將 VM 的 CPU 功能設定為叢集中所有伺服器所支援的最大層級,請選取 [跨叢集相容] [建議]。 這樣可最大化 VM 效能,同時保留將執行中的 VM 移至叢集中其他伺服器的能力。 我們建議針對在 Azure Stack HCI 21H2 叢集上執行的所有 VM 啟用此功能。 如果停用,則必須重新啟動 VM,才能移至具有不同層級支援 CPU 指令的主機,這與不同世代 CPU 通用。

    或者,如果您想要將 VM 的 CPU 功能設定為最小值,以確保只要 VM 有相同的 CPU 製造商,就可以將執行中的 VM 移至叢集外部的其他 Hyper-V 主機,請選取 [與其他具有相同 CPU 製造商的相容]。

    注意

    和動態處理器相容性模式一樣, 叢集 上的相容是 Azure Stack HCI 21H2 的專屬,任何其他操作系統都不支援。

  2. 選取 [ 儲存處理器設定 ],然後重新啟動 VM。

本節說明如何使用 Hyper-V 管理員或 PowerShell,將 VM 設定為使用處理器相容性模式。 在相同的叢集中,可以執行具有和沒有相容性模式的 VM。

重要

您必須先關閉 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 啟用處理器相容性模式

若要啟用處理器相容性模式,請執行下列 Cmdlet:

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

建議將 VM 的 CPU 功能設定為叢集中所有伺服器所支援的最大層級。 這樣可最大化 VM 效能,同時保留將執行中的 VM 移至叢集中其他伺服器的能力。

若要讓 VM 能夠使用叢集節點的一般功能,請執行下列 Cmdlet:

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

或者,您可以將 VM 的 CPU 功能設定為最小值,確保如果 VM 具有相同的 CPU 製造商,可以將執行中的 VM 移至叢集外部的其他 Hyper-V 主機。

若要讓 VM 使用預設的最小功能跨叢集移轉,請執行下列 Cmdlet:

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

使用 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。