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>
parameter_defaults: NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]} NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
下面是一个与 NUMA 节点 0 连接的两个物理网络的示例:
- 与 NUMA 节点 0 关联的项目网络
个管理网络,没有任何关联性
parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0
parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下示例中,将名为 eno2 的设备的 physnet 分配给 NUMA 编号 0。
ethtool -i eno2 cat /sys/devices/pci0000:16/0000:16:02.0/0000:18:00.1/numa_node
# 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 Copied! Toggle word wrap Toggle overflow 观察以下示例 heat 模板中的 physnet 设置。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
测试 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
[neutron_physnet_tenant] numa_nodes=1 [neutron_tunnel] numa_nodes=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
lscpu
命令确认新配置:lscpu
$ lscpu
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动一个虚拟机,将 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 关联性是适用于所有虚拟机的全局设置。