4.10. ハイパフォーマンス仮想マシン、テンプレート、およびプールの設定
仮想マシンをハイパフォーマンスに設定して、ベアメタルに可能な限り近いパフォーマンスメトリックで実行できます。ハイパフォーマンスの最適化を選択すると、仮想マシンは、最大限の効率が得られるように、自動設定および、推奨の手動設定を使用して指定されます。
ハイパフォーマンスオプションには、管理ポータルでのみ利用できます。Edit または New 仮想マシン、テンプレート、またはプールウィンドウの Optimized for ドロップダウンリストから High Performance を選択します。このオプションは、VM ポータルでは利用できません。
ハイパフォーマンスのオプションは、Red Hat Virtualization 4.2 以降でサポートされます。これは、以前のバージョンでは利用できません。
仮想マシン
実行中の仮想マシンの最適化モードをハイパフォーマンスに変更した場合には、設定の変更内容によっては仮想マシンを再起動する必要があります。
新規または既存の仮想マシンの最適化モードをハイパフォーマンスに変更するには、最初にクラスターと固定されたホスト設定を手動で変更する必要がある場合があります。
パフォーマンスを向上させると、柔軟性の低下といったトレードオフがあるため、ハイパフォーマンス仮想マシンには特定の制限があります。
- 推奨の設定に従って、CPU スレッド、I/O スレッド、エミュレータースレッド、または NUMA ノードにピニングが設定されている場合に、クラスターホストのサブセットのみをハイパフォーマンス仮想マシンに割り当てることができます。
- 多くのデバイスは自動的に無効になり、仮想マシンのユーザービリティーが制限されます。
テンプレートおよびプール
ハイパフォーマンスのテンプレートとプールは、仮想マシンと同じ方法で作成および編集されます。ハイパフォーマンステンプレートまたはプールを使用して新しい仮想マシンを作成する場合に、これらの仮想マシンはこのプロパティーと設定を継承します。ただし、特定の設定は継承されず、手動で設定する必要があります。
- CPU ピニング
- 仮想 NUMA および NUMA ピニングトポロジー
- I/O およびエミュレータースレッドピニングトポロジー
- パススルーホスト CPU
4.10.1. ハイパフォーマンス仮想マシン、テンプレート、またはプールの作成
ハイパフォーマンス仮想マシン、テンプレート、またはプールを作成するには、以下を実行します。
New または Edit ウィンドウで、Optimized for ドロップダウンメニューから High Performance を選択します。
このオプションを選択すると、この仮想マシンに対して特定の設定変更が自動的に実行されます。これは、さまざまなタブをクリックして表示できます。元の設定に戻すか、上書きすることができます。(詳細は、ハイパフォーマンスの自動設定 を参照してください。) 設定を変更すると、最新の値が保存されます。
手動設定を行っていない場合は、推奨の手動設定の説明が含まれる、High Performance Virtual Machine/Pool Settings 画面が表示されます。
一部の手動設定を行った場合は、High Performance Virtual Machine/Pool Settings 画面に、設定がまだの内容が表示されます。
推奨されるすべての手動設定を行った場合には、High Performance Virtual Machine/Pool Settings 画面は表示されません。
High Performance Virtual Machine/Pool Settings 画面が表示された場合は、 をクリックして New または Edit ウィンドウに戻り、手動設定を実行します。詳細は、推奨される手動設定 を参照してください。
または、
をクリックして、推奨事項を無視します。その結果、パフォーマンスのレベルが低下する可能性があります。最適化の種類は、仮想マシン、プール、またはテンプレートの詳細ビューの General タブで確認できます。
特定の設定は、ハイパフォーマンス設定をオーバーライドできます。たとえば、Optimized for ドロップダウンメニューから High Performance を選択して手動設定を実行する前に仮想マシンのインスタンスタイプを選択した場合には、ハイパフォーマンス設定には、インスタンスタイプの設定の影響はありません。ただし、ハイパフォーマンスの設定後にインスタンスタイプを選択する場合は、さまざまなタブで最終設定を確認して、ハイパフォーマンス設定がインスタンスタイプによって上書きされていないことを確認する必要があります。
通常、最後に保存された設定が優先されます。
インスタンスタイプのサポートは非推奨となり、今後のリリースで廃止される予定です。
4.10.1.1. ハイパフォーマンスの自動設定
以下の表は、自動設定の概要を示しています。Enabled (Y/N) 列には、有効または無効になった設定が表示されます。Applies to 列には、関連するリソースが表示されます。
- VM - 仮想マシン
- T - テンプレート
- P: プール
- C - クラスター
設定 | 有効 (Y/N) | 適用先 |
---|---|---|
Headless Mode (Console タブ) |
|
|
USB Enabled (Console タブ) |
|
|
Smartcard Enabled (Console タブ) |
|
|
Soundcard Enabled (Console タブ) |
|
|
Enable VirtIO serial console (Console タブ) |
|
|
Allow manual migration only (Host タブ) |
|
|
Pass-Through Host CPU (Host タブ) |
|
|
Highly Available [1] (High Availability タブ) |
|
|
No-Watchdog (High Availability タブ) |
|
|
Memory Balloon Device (Resource Allocation タブ) |
|
|
I/O Threads Enabled [2] (Resource Allocation タブ) |
|
|
Paravirtualized Random Number Generator PCI (virtio-rng) device (Random Generator タブ) |
|
|
I/O およびエミュレータースレッドピニングトポロジー |
|
|
CPU cache layer 3 |
|
|
-
Highly Available
は自動的に有効化されていません。手動で選択した場合は、ピニングされたホストに対してのみ、高可用性を有効にする必要があります。 - I/O スレッドの数 = 1
4.10.1.2. I/O およびエミュレータースレッドピニングトポロジー (自動設定)
I/O およびエミュレータースレッドピニングトポロジーは、Red Hat Virtualization 4.2 の新しい設定オプションです。仮想マシンに対して I/O スレッド、NUMA ノード、および NUMA ピニングを有効にして設定する必要があります。そうしないと、エンジンログに警告が表示されます。
トポロジーのピニング
- 各 NUMA ノードの最初の 2 つの CPU はピニングされます。
すべての vCPU がホストの 1 つの NUMA ノードに適合する場合は、以下を実行します。
- 最初の 2 つの vCPU は、自動的に予約/ピニングされます。
- 残りの vCPU は、手動の vCPU ピンニングに使用できます
仮想マシンが複数の NUMA ノードにまたがる場合は、以下を実行します。
- 最も多くのピンを持つ NUMA ノードの最初の 2 つの CPU が予約/ピニングされています。
- 残りのピニングされた NUMA ノードは、vCPU ピニング専用です。
プールは、I/O およびエミュレータースレッドピニングをサポートしていません。
ホスト CPU が vCPU と I/O およびエミュレータースレッドの両方にピニングされている場合、ログに警告が表示され、この状況を回避するために CPU ピニングトポロジーの変更を検討するように求められます。
4.10.1.3. ハイパフォーマンスアイコン
以下のアイコンは、
Icon | 説明 |
---|---|
| ハイパフォーマンス仮想マシン |
| Next Run 設定を使用したハイパフォーマンス仮想マシン |
| ステートレスなハイパフォーマンス仮想マシン |
| Next Run 設定を使用したステートレスなハイパフォーマンス仮想マシン |
| ハイパフォーマンスプールの仮想マシン |
| Next Run 設定を使用したハイパフォーマンスプールの仮想マシン |
4.10.2. 推奨される手動設定
推奨される手動設定は、新規 ウィンドウまたは 編集ウィンドウのいずれかで設定できます。
推奨設定を指定しない場合には、リソースの保存時に、High Performance Virtual Machine/Pool Settings 画面に推奨設定が表示されます。
推奨される手動設定は以下のとおりです。
4.10.2.1. ハイパフォーマンスの手動設定
以下の表は、推奨される手動設定をまとめています。Enabled (Y/N) 列には、有効または無効になった設定が表示されるはずです。Applies to 列には、関連するリソースが表示されます。
- VM - 仮想マシン
- T - テンプレート
- P: プール
- C - クラスター
設定 | 有効 (Y/N) | 適用先 |
---|---|---|
NUMA Node Count (Host タブ) |
|
|
Tune Mode (NUMA Pinning 画面) |
|
|
NUMA Pinning (Host タブ) |
|
|
CPU Pinning topology (Resource Allocation タブ) |
|
|
hugepages (Custom Properties タブ) |
|
|
KSM (Optimization タブ) |
|
|
4.10.2.2. CPU のピニング
vCPU を特定のホストの物理 CPU にピニングします。
- Host タブで、Specific Host(s) のラジオボタンを選択します。
Resource Allocation タブで、CPU Pinning Topology に入り、設定がピニングされたホストの設定に適合していることを確認します。このフィールドの構文に関する詳細は、仮想マシンのリソース割り当て設定に関する説明 を参照してください。
このフィールドは自動的に入力されて、自動 NUMA ピニングがアクティブになると CPU トポロジーが更新されます。
仮想マシンの設定がホストの設定と互換性があることを確認します。
- 仮想マシンのソケット数は、ホストのソケット数よりも多い数を指定できません。
- 仮想ソケットあたりの仮想マシンのコア数は、ホストのコア数よりも多い数を指定できません。
- ホストと仮想マシンのキャッシュの使用量が同じ想定の場合に、CPU 使用率の高いワークロードのパフォーマンスが一番良くなります。最高のパフォーマンスを実現するには、コアあたりの仮想マシンのスレッド数がホストのスレッド数を超えないようにしてください。
CPU のピニングには、次の要件があります。
- ホストが NUMA 対応の場合には、仮想マシンはホストの NUMA 設定に適合している必要があるため、ホストの NUMA 設定 (メモリーと CPU) を考慮する必要があります。
- I/O およびエミュレータースレッドピニングトポロジー を考慮する必要があります。
- CPU のピニングは、仮想マシンとプールにのみ設定でき、テンプレートには設定できません。したがって、ハイパフォーマンステンプレートに基づいている場合でも、ハイパフォーマンス仮想マシンまたはプールを作成するときは常に、CPU ピニングを手動で設定する必要があります。
4.10.2.3. NUMA ピニングポリシーの設定
NUMA ピニングポリシーを設定するには、少なくとも NUMA ノードが 2 つある NUMA 対応のピニングホストが必要です。
NUMA ピニングポリシーを手動で設定するには、以下を実行します。
- をクリックします。
- NUMA Topology ウィンドウで、必要に応じて右側のボックスの仮想 NUMA ノードをクリックして、左側のホストの物理 NUMA ノードにドラッグします。
-
各 NUMA ノードの Tune Mode ドロップダウンリストから、Strict、Preferred、または Interleave を選択します。選択したモードが Preferred の場合、NUMA ノード数 を
1
に設定する必要があります。 - をクリックします。
NUMA ピニングポリシーを自動的に設定するには、以下を実行します。
-
Resource Allocation タブの CPU Allocation で、CPU Pinning Policy ドロップダウンリストから
Resize and Pin NUMA
のピニングを選択します。 - をクリックします。
宣言された仮想 NUMA ノードの数と NUMA ピニングポリシーは、次のことを考慮に入れる必要があります。
- ホストの NUMA 設定 (メモリーおよび CPU)
- ホストデバイスが宣言される NUMA ノード
- CPU ピニングトポロジー
- IO およびエミュレータースレッドピニングトポロジー
- Huge Page サイズ
- NUMA のピニングは、仮想マシンにのみ設定でき、プールやテンプレートには設定できません。テンプレートに基づいてハイパフォーマンス仮想マシンを作成する場合は、NUMA ピニングを手動で設定する必要があります。
4.10.2.4. Huge Page の設定
仮想マシンの実行開始時に、Huge page が事前に割り当てられます (動的割り当てはデフォルトで無効になっています)。
Huge page を設定します。
- Custom Properties タブで、カスタムプロパティーリストから hugepages を選択します。このリストには、デフォルトで Please select a key… と表示されます。
Huge Page のサイズ (KB) を入力します。
Huge Page サイズは、ピニングされたホストでサポートされる最大サイズに設定する必要があります。X86_64 に推奨されるサイズは 1 GiB です。
Huge Page のサイズには、以下の要件があります。
- 仮想マシンの Huge Page サイズは、ピニングされたホストの Huge Page サイズと同じである必要があります。
- 仮想マシンのメモリーサイズは、ピニングされたホストの空き Huge Page に選択したサイズに収まる必要があります。
- NUMA ノードサイズは、Huge Page の選択したサイズの倍数である必要があります。
Huge Page の動的割り当てを有効にするには、以下を実行します。
- スケジューラーの HugePages フィルターを無効にします。
/etc/vdsm/vdsm.conf
のperformance
セクションで、以下を設定します。use_dynamic_hugepages = true
動的と静的の Huge page の比較
次の表に、動的および静的な Huge page のメリットとデメリットについて簡単にまとめます。
設定 | メリット | デメリット | 推奨事項 |
---|---|---|---|
動的 Huge page |
| 断片化が原因で割り当てに失敗する | 2MB の Huge page を使用する |
静的 Huge page | 結果が予測可能である |
|
以下の制限が適用されます。
- メモリーのホットプラグ/アンプラグが無効である
- ホストのメモリーリソースが制限されている
4.10.2.5. KSM の無効化
クラスターの Kernel Same-page Merging (KSM) を無効にします。
-
をクリックし、クラスターを選択します。 - をクリックします。
- Optimization タブで、Enable KSM チェックボックスをオフにします。