10.5. 配置 NUMA 感知 vSwitch
该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
在实施 NUMA 感知的 vSwitch 前,请检查您的硬件配置的以下组件:
- 物理网络的数量。
- PCI 卡的放置。
- 服务器的物理架构。
内存映射的 I/O(MMIO)设备(如 PCIe NIC)与特定的 NUMA 节点关联。当 VM 和 NIC 位于不同的 NUMA 节点上时,性能会显著降低。为提高性能,使 PCIe NIC 放置和实例处理在同一 NUMA 节点上保持一致。
使用此功能来确保共享物理网络的实例位于同一 NUMA 节点上。要优化数据中心硬件的使用,您必须使用多个 physnets。
要配置 NUMA 感知网络以实现最佳服务器利用率,您必须了解 PCIe 插槽和 NUMA 节点的映射。有关您特定硬件的详细信息,请参阅您的供应商文档。如果无法正确规划或实施 NUMA 感知 vSwitch,则可能导致服务器只使用单个 NUMA 节点。
要防止跨 NUMA 配置,请将虚拟机放置在正确的 NUMA 节点上,方法是向 Nova 提供 NIC 的位置。
先决条件
-
您已启用了过滤器
NUMATopologyFilter
。
流程
-
设置一个新的
NeutronPhysnetNUMANodesMapping
参数,将物理网络映射到您与物理网络关联的 NUMA 节点。 如果使用 VxLAN 或 GRE 等隧道,还必须设置
NeutronTunnelNUMANodes
参数。parameter_defaults: NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]} NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>
示例
以下是两个到 NUMA 节点 0 的物理网络的示例:
- 与 NUMA 节点 0 关联的项目网络
一个没有关联性的管理网络
parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0
在本例中,将名为
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
观察示例 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
验证
按照以下步骤测试您的 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 的虚拟机。