9.5. 配置 NUMA 感知的 vSwitch


重要

该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息

在实现 NUMAaware vSwitch 前,检查硬件配置的以下组件:

  • 物理网络的数量。
  • PCI 卡的放置。
  • 服务器的物理架构。

内存映射的 I/O (MMIO)设备(如 PCIe NIC)与特定 NUMA 节点相关联。当虚拟机和 NIC 位于不同的 NUMA 节点上时,性能会有很大降低。要提高性能,请在同一 NUMA 节点上对齐 PCIe NIC 放置和实例处理。

使用此功能来确保共享物理网络的实例位于同一 NUMA 节点上。要优化数据中心硬件的利用率,必须使用多个 physnet。

警告

要配置 NUMA 感知网络以实现最佳服务器利用率,您必须了解 PCIe 插槽和 NUMA 节点的映射。有关具体硬件的详情,请参考您的厂商文档。如果无法正确计划或实施 NUMA-aware vSwitch,则可能导致服务器只使用单个 NUMA 节点。

为防止跨 NUMA 配置,请将虚拟机放在正确的 NUMA 节点上,方法是向 Nova 提供 NIC 的位置。

先决条件

  • 您已启用过滤器 NUMATopologyFilter

流程

  • 设置一个新的 NeutronPhysnetNUMANodesMapping 参数,将物理网络映射到与物理网络关联的 NUMA 节点。
  • 如果使用隧道,如 VxLAN 或 GRE,还必须设置 NeutronTunnelNUMANodes 参数。

    parameter_defaults:
      NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]}
      NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>
    Copy to Clipboard Toggle word wrap

下面是一个与 NUMA 节点 0 连接的两个物理网络的示例:

  • 与 NUMA 节点 0 关联的项目网络
  • 个管理网络,没有任何关联性

    parameter_defaults:
      NeutronBridgeMappings:
        - tenant:br-link0
      NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]}
      NeutronTunnelNUMANodes: 0
    Copy to Clipboard Toggle word wrap
  • 在以下示例中,将名为 eno2 的设备的 physnet 分配给 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
    Copy to Clipboard Toggle word wrap

    观察以下示例 heat 模板中的 physnet 设置。

    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
    Copy to Clipboard Toggle word wrap

测试 NUMA-aware vSwitch

  • 观察文件 /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf 中的配置

    [neutron_physnet_tenant]
    numa_nodes=1
    [neutron_tunnel]
    numa_nodes=1
    Copy to Clipboard Toggle word wrap
  • 使用 lscpu 命令确认新配置:

    $ lscpu
    Copy to Clipboard Toggle word wrap
  • 启动一个虚拟机,将 NIC 附加到适当的网络

已知限制

  • 如果您没有指定双节点客户机 NUMA 拓扑,则无法启动两个 NIC 连接到不同 NUMA 节点上的 physnets。
  • 如果没有指定双节点客户机 NUMA 拓扑,则无法启动一个连接到不同 NUMA 节点上的隧道网络的 NIC。
  • 如果您没有指定双节点客户机 NUMA 拓扑,则无法启动具有一个 vhost 端口和不同 NUMA 节点上的 VF 的虚拟机。
  • NUMA 感知 vSwitch 参数特定于 overcloud 角色。例如,计算节点 1 和 Compute 节点 2 可以具有不同的 NUMA 拓扑。
  • 如果虚拟机的接口具有 NUMA 关联性,请确保关联性仅针对一个 NUMA 节点。您可以在任何 NUMA 节点上找到任何接口,无需 NUMA 关联性。
  • 为数据平面网络配置 NUMA 关联性,不管理网络。
  • 隧道网络的 NUMA 关联性是适用于所有虚拟机的全局设置。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat