仮想化サーバーは、互いに分離されているが、基になるハードウェア リソースを共有する複数の仮想マシン (VM) をホストします。 プロセッサ、メモリ、および I/O デバイスは仮想化されます。 サーバーを 1 台のマシンに統合すると、仮想化によってリソースの使用量が向上し、エネルギー効率が向上し、サーバーの運用コストとメンテナンス コストが削減されます。 この記事は、プロセッサのパフォーマンスに関する考慮事項を理解し、Hyper-V パフォーマンスを微調整し、改善するのに役立ちます。
仮想マシン統合サービス
仮想マシン (VM) 統合サービスには、Hyper-V 固有の I/O デバイス用の対応ドライバーが含まれています。これにより、エミュレートされたデバイスと比較して、I/O の CPU オーバーヘッドが大幅に削減されます。 サポートされているすべての VM に最新バージョンの VM 統合サービスをインストールします。 このサービスにより、アイドル状態のゲストから使用頻度の高いゲストまで、ゲストの CPU 使用率が減少し、I/O スループットが向上します。 この手順は、Hyper-V を実行しているサーバーのパフォーマンスをチューニングする最初の手順です。 サポートされているゲスト オペレーティング システムの一覧については、 Hyper-V の概要を参照してください。
仮想プロセッサ
ワークロードを評価して、プロビジョニングの過不足を回避するプロセッサ要件を決定します。 評価の結果を使用して、必要な仮想プロセッサの数を構成します。 VM でピーク時の負荷の下で処理リソースを増やす必要がある場合は、仮想プロセッサの数を増やします。 Hyper-V で構成可能なコンポーネントの最大数の詳細については、「 Windows Server での Hyper-V のスケーラビリティの計画」を参照してください。
同時マルチスレッド (SMT) を使用する場合は、2 つの倍数で仮想プロセッサを使用することをお勧めします。 最新の AMD および Intel ベースのシステムでは、SMT が有効になっています。この場合、仮想マシンを偶数の仮想プロセッサに構成することをお勧めします。 SMT の詳細については、「 Hyper-V ハイパーバイザー スケジューラの種類の管理」を参照してください。
バックグラウンド アクティビティ
アイドル状態の VM でバックグラウンド アクティビティを最小限に抑えることで、他の VM が使用する CPU サイクルが解放されます。 Windows ゲストは、通常、アイドル状態のときに CPU の 1% 未満を使用します。 VM のバックグラウンド CPU 使用率を最小限に抑えるためのベスト プラクティスを次に示します。
VM 統合サービスの最新バージョンをインストールします。
[VM 設定] ダイアログ ボックスでエミュレートされたネットワーク アダプターを削除します (Microsoft Hyper-V 固有のアダプターを使用します)。
CD-ROM や COM ポートなどの未使用のデバイスを削除するか、メディアを切断します。
Windows ゲスト オペレーティング システムが使用されていない場合は、サインイン画面に保持し、スクリーン セーバーを無効にします。
既定で有効になっているスケジュールされたタスクとサービスを確認します。
logman.exe query -ets
を実行して、既定でオンになっている Windows イベント トレーシング (ETW) トレース プロバイダーを確認します。サーバー アプリケーションを改善して、定期的なアクティビティ (タイマーなど) を減らします。
ホスト オペレーティング システムとゲスト オペレーティング システムの両方でサーバー マネージャーを閉じます。
VM のサムネイルが常に更新されるため、Hyper-V Manager は実行したままにしないでください。
VM で クライアント バージョン の Windows を構成し、全体的な CPU 使用率を減らすためのベスト プラクティスを次に示します。
SuperFetch や Windows Search などのバックグラウンド サービスを無効にします。
スケジュールされたデフラグなどのスケジュールされたタスクを無効にします。
仮想 NUMA
Windows Server の Hyper-V では、VM のスケール制限が拡張され、大規模なスケールアップ ワークロードの仮想化が可能になります。 大規模な VM を作成する場合、ホスト システム上の複数の NUMA ノードからのメモリが通常使用されます。 この種類の VM 構成では、同じ NUMA ノードから仮想プロセッサとメモリを割り当てないと、ワークロードのパフォーマンスが低下する可能性があります。 ワークロードでは NUMA の最適化を利用できないため、パフォーマンスに悪影響があります。 Hyper-V で構成可能なコンポーネントの最大数の詳細については、「 Windows Server での Hyper-V のスケーラビリティの計画」を参照してください。
Windows Server では、Hyper-V は仮想 NUMA トポロジを VM に提示します。 既定では、この仮想 NUMA トポロジは、基になるホスト コンピューターの NUMA トポロジと一致するように最適化されています。 仮想 NUMA トポロジを VM に公開すると、ゲスト オペレーティング システムとその中で実行されている NUMA 対応アプリケーションは、物理コンピューターで実行する場合と同様に、NUMA パフォーマンスの最適化を利用できます。
ワークロードの観点からは、仮想 NUMA と物理 NUMA の違いはありません。 VM 内では、ワークロードがデータにローカル メモリを割り当て、同じ NUMA ノード内のデータにアクセスすると、基になる物理システムで高速なローカル メモリ アクセスが行われます。 リモート メモリ アクセスによるパフォーマンスの低下が正常に回避されました。 vNUMA の利点を得ることができるのは、NUMA 対応アプリケーションだけです。
Microsoft SQL Server は、NUMA 対応アプリケーションの例です。 詳細については、「 一様でないメモリ アクセスについて」を参照してください。
仮想 NUMA 機能と動的メモリ機能を同時に使用することはできません。 動的メモリが有効になっている VM には、実質的に仮想 NUMA ノードが 1 つしかありません。 また、仮想 NUMA 設定に関係なく、VM に NUMA トポロジは表示されません。
仮想 NUMA の詳細については、「Hyper-V 仮想 NUMA の概要」を参照してください。
関連リンク
Hyper-V の詳細については、次の記事を参照してください。