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 のライブ マイグレーション、保存と復元、運用チェックポイントが含まれます。

異なる CPU 製造元のプロセッサを使用する仮想化ホスト間で、VM のライブ マイグレーションや保存と復元を行うことはできません。 たとえば、実行中の VM または VM の保存された状態を、Intel プロセッサを搭載したホストから AMD プロセッサを搭載したホストに移動することはできません。 このような場合に VM を移動する必要がある場合、最初に VM をシャットダウンしてから、新しいホストで再起動する必要があります。

異なる世代のプロセッサを使用する可能性がある仮想化ホスト間で VM を再起動せずに移動する場合は、プロセッサ互換モードを有効にする必要があります。 たとえば、異なるプロセッサ機能セットを使用するクラスター ノード間で VM のライブ マイグレーションを確実に行うことができるようにするには、プロセッサ互換モードを有効にします。 また、プロセッサ互換モードを使用して、ソース ホストとは異なるプロセッサ機能セットを持つホスト コンピューターに VM を保存し、復元することもできます。

プロセッサ互換性モードが必要な理由

命令セット アーキテクチャ (ISA) 拡張機能は、プロセッサ製造元によって導入される最適化と機能です。 これらの機能は、多くの場合、特定のタスクに特化されたハードウェアを使用して、パフォーマンスやセキュリティを向上させます。 たとえば、多くのメディア アプリケーションでは、プロセッサ機能を使用してベクター計算を高速化しています。 これらの機能は、アプリケーションの実行にはほとんど必要ありません。パフォーマンスを向上させるだけです。

プロセッサで使用できる機能セットは、その作成、モデル、および経過期間によって異なります。 オペレーティング システムとアプリケーション ソフトウェアは、通常、最初に起動されるときに、システムのプロセッサ機能セットと機能を列挙します。 ソフトウェアでは、使用可能なプロセッサ機能が有効期間中に変更されることは想定されていません。プロセッサ機能は静的であるため、物理コンピューター上で実行している場合、これが発生する可能性はありません。

しかし、VM モビリティ機能により、実行中の VM を新しい仮想化ホストに移行できます。 VM 内のソフトウェアが特定のプロセッサ機能を検出して使用を開始し、その機能を備えていない新しい仮想化ホストに移動された場合、ソフトウェアは失敗する可能性があります。 これにより、VM のクラッシュが発生する可能性があります。

これらのエラーを回避するために、HYPER-V では、VM のライブ マイグレーションまたは保存と復元の操作が開始されるたびに "プレフライト" のチェックが実行されます。 これらのチェックでは、ソース ホスト上の VM で使用可能な一連のプロセッサ機能を、ターゲット ホストで使用可能な一連の機能と比較します。 これらの機能セットが一致しない場合、移行または復元操作は取り消されます。

プロセッサ互換モードのしくみ

プロセッサ互換モードを使用すると、限られたプロセッサ機能セットのみを VM に提供することによって、仮想化ホストの異なるセット間で、VM で利用できるプロセッサ機能セットを確実に一致させることができます。 プロセッサ互換モードでは、新しいプロセッサ命令セット (通常は過去 10 年間に導入されたプロセッサ命令セット) は非表示になります。 ただし、これらの機能を非表示にすることは、ゲスト オペレーティング システムおよびアプリケーション ソフトウェアがこれらのプロセッサ命令セットの機能強化を利用できないことを意味します。

プロセッサ互換モードで非表示になる機能の完全な一覧については、「ハイパーバイザーのトップレベル機能の仕様」のセクション 5.2.11 を参照してください。

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

プロセッサ互換モードの使用による影響

プロセッサ互換モードの全体的なパフォーマンス効果を定量化することは困難です。 パフォーマンスの低下は、主に VM で実行されているワークロードによって異なります。 一部のワークロードは影響を受けませんが、他のワークロードでは顕著な違いが見られます。 最も影響を受けるのは、ハードウェアの最適化に大きく依存するソフトウェア (暗号化、圧縮、集中浮動小数点計算など) です。

次の例では、プロセッサ互換モードを使用して AES 暗号化がどのような影響を受けるかをはじめ、さまざまな影響について説明します。 プロセッサ互換モードによるパフォーマンスへの影響が懸念される場合は、プロセッサ互換モードを有効にした場合と無効にした場合の VM ワークロードのパフォーマンスを比較することをお勧めします。

例: AES 暗号化

プロセッサ互換モードの影響を受ける操作の 1 つの例は、AES 暗号化 (一般的な形式の暗号化) です。 多くの新しい Intel および AMD プロセッサには、ハードウェアを使用して AES を加速する ISA 拡張機能が含まれています。 Intel では、この最適化によってパフォーマンスが 2 から 3 倍向上し、一部の実装では 10 倍の向上が実現されると主張しています (詳細については、「Intel Advanced Encryption Standard Instructions」 (Intel Advanced Encryption Standard の命令) を参照してください)。

大量のデータを暗号化または暗号化解除するアプリケーションは、このプロセッサ機能の恩恵を受けるので、プロセッサ互換モードを有効にしてこの機能をオフにすると、これらの特定の操作のパフォーマンスに影響します。

プロセッサ互換モード

Hyper-V でプロセッサ互換モードを使用する場合、理解しておく必要がある重要な概念があります。

  • 実行中の VM は、同じ製造元のプロセッサを使用する仮想化ホスト間でのみ移行できます。

  • プロセッサ互換性モードを有効または無効にする前に、VM をシャットダウンする必要があります。

  • VM の停止と再起動を伴う VM の移動には、プロセッサ互換モードは必要ありません。

  • VM が再起動されるたびに、ゲスト オペレーティング システムでは、新しいホスト コンピューターで使用できるプロセッサ機能が列挙されます。

注意

Microsoft は、Windows Server では、VM 移行シナリオの前にのみプロセッサ互換モードを有効にし、移行が完了したらオフに設定することをお勧めします。

Hyper-V マネージャーを使用してプロセッサ互換モードを有効にする

Hyper-V マネージャーを使用して VM のプロセッサ互換モードを有効にするには、次の手順を行います。

  1. VM をシャット ダウンします。

  2. [スタート] ボタンをクリックし、[管理ツール] をポイントして [Hyper-V マネージャー] をクリックします。

  3. Hyper-V を実行しているサーバーと目的の VM を選択します。

  4. VM が実行されている場合、プロセッサ互換モードの設定を有効にするには、VM をシャットダウンする必要があります。

  5. [アクション] ウィンドウで、[設定][プロセッサ] の順にクリックします。

  6. [プロセッサ] を展開し、[互換性] をクリックします。

  7. [プロセッサが異なる物理コンピューターへ移行する] をオンにし、[OK] をクリックします。

  8. VM を再起動します。

Hyper-V マネージャーを使用してプロセッサ互換モードを無効にする

Hyper-V マネージャーを使用して VM のプロセッサ互換モードを無効にするには、次の手順を行います。

  1. VM をシャット ダウンします。

  2. [スタート] ボタンをクリックし、[管理ツール] をポイントして [Hyper-V マネージャー] をクリックします。

  3. Hyper-V を実行しているサーバーと目的の VM を選択します。

  4. VM が実行されている場合、プロセッサ互換モードの設定を無効にするには、VM をシャットダウンする必要があります。

  5. [アクション] ウィンドウで、[設定][プロセッサ] の順にクリックします。

  6. [プロセッサ] を展開し、[互換性] をクリックします。

  7. [プロセッサが異なる物理コンピューターへ移行する] チェックボックスをオフにし、[OK] をクリックします。

  8. VM を再起動します。

PowerShell を使用してプロセッサ互換性モードを有効にする

PowerShell を使用して VM のプロセッサ互換性モードを有効にするには、VM をシャットダウンし、Set-VMProcessor コマンドレットを実行して、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 ではこれらを使用しないでください。使用すると、エラー メッセージが表示されます。 Windows Server で使用できる CompatibilityForMigrationModeMinimumFeatureSetのみで、これが既定値です。 Azure Stack HCI の動的 CPU 互換モードについては、こちらを参照してください。

PowerShell を使用してプロセッサ互換モードを無効にする

PowerShell を使用して VM のプロセッサ互換性モードを無効にするには、VM をシャットダウンし、Set-VMProcessor コマンドレットを実行して、CompatibilityForMigrationEnabled$false に設定します。

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

次に、VM を再起動します。

次のステップ

次の用語も参照: