第5章 NFV のパフォーマンスの考慮事項
ネットワーク機能仮想化 (NFV) ソリューションが有用であるためには、VF が物理実装のパフォーマンス以上である必要があります。Red Hat の仮想化技術は、OpenStack およびクラウドのデプロイメントで一般的に使用されている高フォーマンスの Kernel-based Virtual Machine (KVM) ハイパーバイザーをベースにしています。
5.1. CPU と NUMA ノード
以前は、x86 システムの全メモリーは、システム内のどの CPU からでも同等にアクセスできていました。これにより、システム内で操作を行う CPU、Uniform Memory Access (UMA) を参照する CPU はどれでも、メモリーのアクセス時間が同じでした。
Non-Uniform Memory Access (NUMA) では、システムメモリーは、特定の CPU またはソケットに割り当てられるノードと呼ばれるゾーンに分割されます。CPU のローカルにあるメモリーには、そのシステムのリモートの CPU に接続されているメモリーにアクセスするよりも高速です。通常、NUMA システム上のソケットにはそれぞれローカルのメモリーノードがあり、別の CPU のローカルにあるノードのメモリーや、全 CPU で共有されるバス上のメモリーよりも、コンテンツに早くアクセスできます。
同様に、物理 NIC はコンピュートノードのハードウェア上の PCI スロットに配置されます。これらのスロットは、特定の NUMA ノードに関連付けられる特定の CPU ソケットに接続されます。パフォーマンスを最適化するには、CPU の設定 (SR-IOV または OVS-DPDK) と同じ NUMA ノードにデータパス NIC を接続します。
NUMA を使用しない場合のパフォーマンスへの影響は大きく、一般的に、パフォーマンス の10 % 以上が影響を受けます。各 CPU ソケットには、仮想化を目的とする個別の CPU として扱われる複数の CPU コアを配置することができます。
OpenStack Compute は、インスタンスの起動時にスマートなスケジューリングや配置の意思決定を行います。管理者はこれらの機能を活用すると、NFV や高性能コンピューティング(Warehouse)などの特化されたワークロードを対象にするために、カスタマイズされたパフォーマンスフレーバーを構築することができます。
NUMA についての予備知識は、「What is NUMA and how does it work on Linux ?」のアーティクルに記載されています。