第2章 NFV パフォーマンスに関する考慮事項
Red Hat OpenStack Services on OpenShift (RHOSO) のネットワーク機能仮想化 (NFV) ソリューションは、Kernel-based Virtual Machine (KVM) ハイパーバイザーを活用することで、特にスループット、レイテンシー、ジッターに関して、物理的な実装と同等以上のパフォーマンスを実現します。
ゲスト仮想ネットワーク機能 (VNF) でラインレートのパフォーマンスを実現するために、リソースの分割と微調整を強制的に適用するように RHOSO コンピュートノードを設定します。
データプレーン開発キット (DPDK) で高速化された仮想マシンを使用することで、物理 NIC と仮想マシン間の高性能パケットスイッチングを実現できます。Open vSwitch (OVS) には、Data Plane Development Kit (DPDK) のサポートが組み込まれており、vhost-user マルチキューのサポートも含まれているため、スケーラブルなパフォーマンスが実現します。OVS-DPDK は、ゲスト VNF 用のラインレートパフォーマンスを提供します。
Single Root I/O Virtualization (SR-IOV) ネットワークでは、特定ネットワークや仮想マシンのスループット向上など、強化されたパフォーマンスが提供されます。
パフォーマンスチューニングの他の重要な機能には、ヒュージページ、NUMA 調整、ホストの分離、CPU ピニングなどが挙げられます。VNF フレーバーには、パフォーマンス向上のためにヒュージページとエミュレータースレッドの分離が必要です。ホストの分離や CPU ピニングにより、NFV パフォーマンスが向上され、擬似パケットロスが回避されます。
2.1. CPU と NUMA ノード リンクのコピーリンクがクリップボードにコピーされました!
以前は、x86 システムの全メモリーは、システム内のどの CPU からでも同等にアクセスできていました。これにより、システム内で操作を行う CPU、Uniform Memory Access (UMA) を参照する CPU はどれでも、メモリーのアクセス時間が同じでした。
Non-Uniform Memory Access (NUMA) では、システムメモリーは、特定の CPU またはソケットに割り当てられるノードと呼ばれるゾーンに分割されます。CPU のローカルにあるメモリーには、そのシステムのリモートの CPU に接続されているメモリーにアクセスするよりも高速です。通常、NUMA システム上のソケットにはそれぞれローカルのメモリーノードがあり、別の CPU のローカルにあるノードのメモリーや、全 CPU で共有されるバス上のメモリーよりも、コンテンツに早くアクセスできます。
同様に、物理 NIC は Compute ノードのハードウェア上の PCI スロットに配置されます。これらのスロットは、特定の NUMA ノードに関連付けられた特定の CPU ソケットに接続されます。最適なパフォーマンスを得るには、データパス NIC を CPU 設定 (SR-IOV または OVS-DPDK) と同じ NUMA ノードに接続してください。
NUMA を使用しない場合のパフォーマンスへの影響は大きく、一般的に、パフォーマンスの 10 % 以上が影響を受けます。各 CPU ソケットには、仮想化を目的とする個別の CPU として扱われる複数の CPU コアを配置することができます。
2.1.1. NUMA ノードの例 リンクのコピーリンクがクリップボードにコピーされました!
2 ノードシステムを用いることで、NUMA トポロジーと、CPU コアおよびメモリーページがどのように利用可能になるかを示すことができます。
図2.1 例: 2 ノードの NUMA システム
Interconnect 経由で利用可能なリモートのメモリーには、NUMA ノード 0 からの VM1 に NUMA ノード 1 の CPU コアがある場合 のみ、アクセスすることができます。この場合、NUMA ノード 1 のメモリーは、VM1 の 3 番目の CPU コアのローカルとして機能します (例: 上記の図では VM1 は CPU4 が割り当てられています) が、それと同時に、同じ仮想マシンの別の CPU コアに対してはリモートメモリーとして機能します。
2.1.2. NUMA 対応のインスタンス リンクのコピーリンクがクリップボードにコピーされました!
NUMA アーキテクチャーを持つシステム上で NUMA トポロジー認識を使用するように OpenStack 環境を設定することができます。
仮想マシン (VM) でゲストオペレーティングシステムを実行する場合は、NUMA トポロジーが 2 つあります。
- ホストの物理ハードウェアの NUMA トポロジー
- ゲストオペレーティングシステムに公開される仮想ハードウェアの NUMA トポロジー
仮想ハードウェアを物理ハードウェア NUMA トポロジーに合わせて調整することで、ゲストオペレーティングシステムのパフォーマンスを最適化することができます。