11.5. NUMA 対応 vSwitch の設定
この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト用途にのみご利用いただく機能です。実稼働環境にはデプロイしないでください。テクノロジープレビュー機能の詳細は、対象範囲の詳細 を参照してください。
NUMA 対応 vSwitch を実装するには、ご自分のハードウェア設定の以下のコンポーネントを確認してください。
- 物理ネットワークの数
- PCI カードの配置
- サーバーの物理アーキテクチャー
PCIe NIC 等のメモリーマップト I/O (MMIO) デバイスは、特定の NUMA ノードに関連付けられます。仮想マシンと NIC が異なる NUMA ノードにあると、パフォーマンスが大幅に低下します。パフォーマンスを向上させるためには、PCIe NIC の配置とインスタンスの処理を同じ NUMA ノードに一致させます。
この機能を使用して、物理ネットワークを共有するインスタンスが同じ NUMA ノードに配置されるようにします。データセンターのハードウェア使用率を最適化するには、複数の物理ネットワークを使用する必要があります。
サーバー使用率を最適化するために NUMA 対応ネットワークを設定するには、PCIe スロットと NUMA ノードのマッピングを把握する必要があります。お使いの特定ハードウェアの詳細情報は、ベンダーのドキュメントを参照してください。NUMA 対応 vSwitch の正しいプランニングまたは実装に失敗する場合は、サーバーが 1 つの NUMA ノードだけを使用するように設定することができます。
複数 NUMA にまたがる設定を防ぐためには、NIC の場所を Nova に提供して、仮想マシンを正しい NUMA ノードに配置します。
前提条件
-
フィルター
NUMATopologyFilter
を有効にしている。
手順
-
新たに
NeutronPhysnetNUMANodesMapping
パラメーターを設定して、物理ネットワークと物理ネットワークに関連付ける NUMA ノードをマッピングします。 VxLAN や GRE 等のトンネルを使用する場合には、
NeutronTunnelNUMANodes
パラメーターも設定する必要があります。parameter_defaults: NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]} NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>
例
2 つの物理ネットワークを NUMA ノード 0 にトンネリングする例を以下に示します。
- NUMA ノード 0 に関連付けられた 1 つのプロジェクトネットワーク
アフィニティーが設定されていない 1 つの管理ネットワーク
parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0
この例では、
eno2
という名前のデバイスの物理ネットワークを NUMA 番号 0 に割り当てます。# ethtool -i eno2 bus-info: 0000:18:00.1 # cat /sys/devices/pci0000:16/0000:16:02.0/0000:18:00.1/numa_node 0
heat テンプレートのサンプルで物理ネットワークの設定を確認します。
NeutronBridgeMappings: 'physnet1:br-physnet1' NeutronPhysnetNUMANodesMapping: {physnet1: [0] } - type: ovs_user_bridge name: br-physnet1 mtu: 9000 members: - type: ovs_dpdk_port name: dpdk2 members: - type: interface name: eno2
検証
NUMA 対応 vSwitch をテストするには、以下の手順に従います。
/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf
ファイルの設定を確認します。[neutron_physnet_tenant] numa_nodes=1 [neutron_tunnel] numa_nodes=1
lscpu
コマンドで新たな設定を確認します。$ lscpu
- NIC が適切なネットワークに接続された仮想マシンを起動します。