2.5.3. 检测 NUMA 节点


为了获得最佳性能,请确保实例的物理网络适配器、PMD 线程和固定 CPU 都在同一个 NUMA 节点上。如需更多信息,请参阅: CPU 和 NUMA 节点

以下是检查 NUMA 分配的简单练习。

  1. 检查计算节点上实例的 vhu 端口:

    $ sudo virsh domiflist 1
    
    Interface  Type       Source     Model       MAC
    -------------------------------------------------------
    vhu24e6c032-db vhostuser  -          virtio      fa:16:3e:e3:c4:c2
  2. 检查为该端口提供服务并记录 NUMA 节点的 PMD 线程:

    $ 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 %
  3. 查找实例的物理固定 cpu。例如,注意此实例的端口位于 cpu 2 上,并且实例由 cpus 34 和 6 服务。

    $ sudo virsh dumpxml 1 | grep cpuset
    
        <vcpupin 1 vcpu='0' cpuset='34'/>
        <emulatorpin cpuset='6'/>
  4. 检查每个 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

另外,您可以通过查询 PCI 地址(即使由 OVS DPDK 管理的)来查看网络适配器的 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.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.