9.4. 配置一个 NUMA 感知的 vSwitch (技术预览)
该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
在实现 NUMAaware vSwitch 前,检查硬件配置的以下组件:
- 物理网络的数量。
- PCI 卡的放置。
- 服务器的物理架构。
内存映射的 I/O (MMIO)设备(如 PCIe NIC)与特定 NUMA 节点相关联。当虚拟机和 NIC 位于不同的 NUMA 节点上时,性能会有很大降低。要提高性能,请在同一 NUMA 节点上对齐 PCIe NIC 放置和实例处理。
使用此功能来确保共享物理网络的实例位于同一 NUMA 节点上。要优化数据中心硬件,您可以使用多种网络、不同的网络类型或绑定来利用加载共享虚拟机。
要正确架构 NUMA 节点负载共享和网络访问,您必须了解 PCIe 插槽和 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: 0parameter_defaults: NeutronBridgeMappings: - tenant:br-link0 NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]} NeutronTunnelNUMANodes: 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
测试
观察文件 /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=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
lscpu命令确认新配置:lscpu
$ lscpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动一个虚拟机,将 NIC 附加到适当的网络