2.5. 简单 Compute 节点 CPU 分区和文件系统检查


先决条件

在部署的计算节点上运行此命令,并记下 cpu masks 如何映射到 TripleO Heat 模板值:

$ sudo ovs-vsctl get Open_vSwitch . other_config

{dpdk-init="true", dpdk-lcore-mask="300003", dpdk-socket-mem="3072,1024", pmd-cpu-mask="c0000c"}
Copy to Clipboard Toggle word wrap

注意以下几点:

  • DPDK-lcore-mask 映射到 TripleO Heat Templates 中的 OvsDpdkCoreList
  • DPDK-socket-mem 映射到 TripleO Heat Templates 中的 OvsDpdkSocketMemory
  • TripleO Heat Templates 中的 PMD-cpu-mask 映射到 OvsPmdCoreList

    要将这些 CPU 掩码转换为十进制值,可以将其协调回 TripleO Heat 模板和实际系统值 see: 如何将十六进制 CPU 掩码转换为位掩码并识别掩码的 CPU?

2.5.1. 检测 CPU

要检测 CPU for pid 1,请使用以下命令。这些内核不应运行 PMD 或 Nova vCPU:

$ taskset -c -p 1

pid 1's current affinity list: 0,1,20,21
Copy to Clipboard Toggle word wrap

2.5.2. 检测 PMD 线程

要查看 PMD 线程,请使用以下命令:输出应反映 Tripleo 参数 OvsPmdCoreList 的值。OvsDpdkCoreListHostIsolatedCoreslist 的值不应与 Tripleo 参数的值重叠:

$ ps -T -o spid,comm -p $(pidof ovs-vswitchd) |grep '\<pmd' |while read spid name; do echo $name $(taskset -p -c $spid); done

pmd44 pid 679318's current affinity list: 3
pmd45 pid 679319's current affinity list: 23
pmd46 pid 679320's current affinity list: 22
pmd47 pid 679321's current affinity list: 2
Copy to Clipboard Toggle word wrap

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

    $ sudo virsh dumpxml 1 | grep cpuset
    
        <vcpupin 1 vcpu='0' cpuset='34'/>
        <emulatorpin cpuset='6'/>
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap

另外,不受 OVS DPDK 管理的网络适配器在此有一个条目,用于指示它们所属的 NUMA 节点:

$ sudo cat /sys/class/net/<device name>/device/numa_node
Copy to Clipboard Toggle word wrap

另外,您可以通过查询 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
Copy to Clipboard Toggle word wrap

这些练习演示了 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.
Copy to Clipboard Toggle word wrap

2.5.4. 检测隔离 CPU

使用以下命令来显示隔离的 CPU。其输出应当与 TripleO 参数 IsolCpusList 的值相同。

$ cat /etc/tuned/cpu-partitioning-variables.conf | grep -v ^#

isolated_cores=2-19,22-39
Copy to Clipboard Toggle word wrap

2.5.5. 检测分配给 Nova 实例的 CPU

使用以下命令,显示专用于 Nova 实例的 CPU。这个输出应该和没有轮询模式驱动程序(PMD)CPU 的 isolcpus 的值相同:

$ grep ^vcpu_pin_set /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf

vcpu_pin_set=4-19,24-39
Copy to Clipboard Toggle word wrap

2.5.6. 确认 Huge Pages 配置

检查计算节点上的巨页配置。

[root@compute-0 ~]# cat /sys/devices/system/node/node*/meminfo  | grep -i huge
Node 0 AnonHugePages:      4096 kB
Node 0 HugePages_Total:    16
Node 0 HugePages_Free:     11
Node 0 HugePages_Surp:      0
Node 1 AnonHugePages:      8192 kB
Node 1 HugePages_Total:    16
Node 1 HugePages_Free:     15
Node 1 HugePages_Surp:      0
Copy to Clipboard Toggle word wrap

如果没有配置巨页或已耗尽,请参阅 KernelArgs

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat