7.4. OVS-DPDK パラメーターの手動計算
本項では、OVS-DPDK が director の network_environment.yaml heat テンプレート内のパラメーターを使用して CPU とメモリーを設定し、パフォーマンスを最適化する方法について説明します。この情報を使用して、コンピュートノードでのハードウェアサポートを評価すると共に、ハードウェアを分割して OVS-DPDK デプロイメントを最適化する方法を評価します。
上記の方法によらず、derived_parameters.yaml ワークフローを使用してこれらの値を生成する方法の詳細は、「ワークフローと派生パラメーター」を参照してください。
CPU コアを割り当てる際には必ず、同じ物理コア上の CPU シブリングスレッド (あるいは論理 CPU) をペアにしてください。
コンピュートノード上の CPU と NUMA ノードを特定する方法の詳細は、「NUMA ノードのトポロジーについての理解」を参照してください。この情報を使用して、CPU と他のパラメーターをマッピングして、ホスト、ゲストインスタンス、OVS-DPDK プロセスのニーズに対応します。
7.4.1. CPU パラメーター リンクのコピーリンクがクリップボードにコピーされました!
OVS-DPDK では、以下に示す CPU の分割用パラメーターが使用されます。
- OvsPmdCoreList
DPDK Poll Mode Driver (PMD) に使用する CPU コアを提供します。DPDK インターフェースのローカルの NUMA ノードに関連付けられた CPU コアを選択します。OVS の
pmd-cpu-maskの値にOvsPmdCoreListを使用します。OvsPmdCoreListに関する以下の推奨事項を確認してください。- シブリングスレッドをペアにします。
-
OvsDpdkCoreListのコアをすべて除外します。 -
1 番目の物理コア上の両方のスレッドシブリングの論理 CPU を両方の NUMA ノードに割り当てないでください。これらは
OvsDpdkCoreListパラメーターに使用する必要があります。 - パフォーマンスは、この PMD コアリストに割り当てられている物理コアの数によって異なります。DPDK NIC に関連付けられている NUMA ノードで、必要なコアを割り当てます。
- DPDK NIC を持つ NUMA ノードの場合には、パフォーマンス要件に基づいて、必要な物理コア数を決定し、各物理コアの全シブリングスレッド (あるいは論理 CPU) を追加します。
- DPDK NIC を持たない NUMA ノードの場合には、任意の物理コア (ただし NUMA ノードの 1 番目の物理コアを除く) のシブリングスレッド (あるいは論理 CPU) を割り当てます。DPDK NIC がない場合、ゲストインスタンスを正常に作成するために、NUMA ノード上に最小限の DPDK Poll Mode Driver が必要です。
NUMA ノードに DPDK NIC が関連付けられていない場合でも、両方の NUMA ノードで DPDK PMD スレッドを確保する必要があります。
- NovaComputeCpuDedicatedSet
ピニングされたインスタンス CPU のプロセスをスケジューリングできる物理ホスト CPU 番号のコンマ区切りリストまたは範囲。たとえば、
NovaComputeCpuDedicatedSet: [4-12,^8,15]は、コア 4 - 12 の範囲 (ただし 8 を除く) および 15 を確保します。-
OvsPmdCoreListとOvsDpdkCoreListのコアをすべて除外します。 - 残りのコアをすべて追加します。
- シブリングスレッドをペアにします。
-
- NovaComputeCpuSharedSet
-
物理ホスト CPU 番号のコンマ区切りリストまたは範囲。インスタンスエミュレータースレッド用のホスト CPU を決定するのに使用します。このパラメータの値と
OvsDpdkCoreListに設定した値を一致させることを推奨します。 - IsolCpusList
ホストのプロセスから分離される CPU コアのセット。
IsolCpusListは、tuned-profiles-cpu-partitioningコンポーネント用のcpu-partitioning-variable.confファイルのisolated_coresの値として使用されます。IsolCpusListに関する以下の推奨事項を確認してください。-
OvsPmdCoreListおよびNovaComputeCpuDedicatedSetのコア一覧と一致するようにします。 - シブリングスレッドをペアにします。
-
- OvsDpdkCoreList
handler および revalidator スレッドなどの、データパス以外の OVS-DPDK プロセス用の CPU コアを提供します。このパラメーターは、マルチ NUMA ノードハードウェア上でのデータパスの全体的なパフォーマンスには影響は及ぼしません。
OvsDpdkCoreListは OVS のdpdk-lcore-maskの値に使用され、それらのコアはホストと共有されます。OvsDpdkCoreListに関する以下の推奨事項を確認してください。- NUMA ノードに DPDK NIC が関連付けられていない場合でも、各 NUMA ノードの 1 番目の物理コアおよびシブリングスレッドを割り当てます。
-
これらのコアは、
OvsPmdCoreListおよびNovaComputeCpuDedicatedSetのコアの一覧と相互に排他的でなければなりません。
- DerivePciWhitelistEnabled
仮想マシン用に Virtual Function (VF) を確保するには、
NovaPCIPassthroughパラメーターを使用して Nova に渡される VF の一覧を作成します。一覧から除外された VF は、引き続きホスト用に利用することができます。Red Hat では、
DerivePciWhitelistEnabledの値をデフォルトのtrueからfalseに変更してから、NovaPCIPassthroughパラメーターの一覧を手動で設定することを推奨します。一覧内の VF ごとに、アドレス値に解決する正規表現でアドレスパラメーターを反映させます。
手動で一覧を作成するプロセスの例を以下に示します。
eno2という名前のデバイスで NIC の分割が有効な場合は、以下のコマンドで VF の PCI アドレスを一覧表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合、VF 0、4、および 6 が NIC の分割用に
eno2で使用されます。以下の例に示すように、NovaPCIPassthroughを手動で設定して VF 1 - 3、5、および 7 を含めます。したがって、VF 0、4、および 6 は除外します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow