2.5.3. NUMA ノードの検出
最適なパフォーマンスを得るには、物理ネットワークアダプター、PMD スレッド、およびインスタンスの固定 CPU がすべて同じ NUMA ノード上にあることを確認してください。詳しくは、「 CPUs and NUMA nodes 」を参照してください。
以下は、NUMA 割り当てを調べるための簡単な演習です。
コンピュートノード上のインスタンスの vhu ポートを調べます。
$ sudo virsh domiflist 1 Interface Type Source Model MAC ------------------------------------------------------- vhu24e6c032-db vhostuser - virtio fa:16:3e:e3:c4:c2そのポートにサービスを提供している PMD スレッドを調べて、NUMA ノードに注意してください。
$ sudo ovs-appctl dpif-netdev/pmd-rxq-show pmd thread numa_id 0 core_id 2: isolated : false port: vhu24e6c032-db queue-id: 0 pmd usage: 0 % port: vhu94ccc316-ea queue-id: 0 pmd usage: 0 %インスタンスの物理的に固定された CPU を見つけます。たとえば、このインスタンスのポートにサービスを提供する PMD は CPU 2 にあり、インスタンスは CPU 34 および 6 によって提供されます。
$ sudo virsh dumpxml 1 | grep cpuset <vcpupin 1 vcpu='0' cpuset='34'/> <emulatorpin cpuset='6'/>各 NUMA ノードのコアを調べます。インスタンス (34,6) を提供する CPU は同じ NUMA ノード (0) 上にあることに注意してください。
$ lscpu | grep ^NUMA NUMA node(s): 2 NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38 NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39
さらに、OVS DPDK によって管理されていないネットワークアダプターには、それらが属する NUMA ノードを示すエントリーがここにあります。
$ sudo cat /sys/class/net/<device name>/device/numa_node
または、OVS DPDK によって管理されている場合でも、PCI アドレスを照会することで、ネットワークアダプターの NUMA ノードを確認できます。
$ sudo lspci -v -s 05:00.1 | grep -i numa
Flags: bus master, fast devsel, latency 0, IRQ 203, NUMA node 0
これらの演習は、PMD、インスタンス、およびネットワークアダプターがすべて NUMA 0 上にあり、パフォーマンスに最適であることを示しています。openvswitch ログ (/var/log/openvswitch にあります) からのクロス NUMA ポーリングの兆候については、次のようなログエントリーを探してください。
dpif_netdev|WARN|There's no available (non-isolated) pmd thread on numa node 0. Queue 0 on port 'dpdk0' will be assigned to the pmd on core 7 (numa node 1). Expect reduced performance.