5.3. 解决方案
确保分配给虚拟机的 vCPU 只处理客户机的任务。
检查集群是否使用 heat 以下模板参数进行了部署:
-
IsolcpusList: 从调度中删除 CPU -
NovaVcpuPinSet:为固定分配 CPU -
NovaComputeCpuSharedSet: 为仿真程序线程固定分配 CPU
-
例如:
parameter_defaults:
ComputeOvsDpdkParameters:
KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on isolcpus=2-19,22-39"
IsolCpusList: "2-19,22-39"
NovaVcpuPinSet: ['4-19,24-39']
NovaReservedHostMemory: 4096
OvsDpdkSocketMemory: "3072,1024"
OvsDpdkMemoryChannels: "4"
OvsDpdkCoreList: "0,20,1,21"
OvsPmdCoreList: "2,22,3,23"
NovaComputeCpuSharedSet: [0,20,1,21]
- 确保虚拟机已部署了利用固定 CPU 和仿真器池集的类别。
例如:
openstack flavor create --ram <size_mb> --disk <size_gb> -\
-vcpus <vcpus> --property dpdk=true \
--property hw:mem_page_size=1G \
--property hw:cpu_policy=dedicated \
--property hw:emulator_threads_policy=share <flavor>
- 确保这些设置按预期运行。如需更多信息,请参阅 简单 Compute 节点 CPU 分区和文件系统检查。
如果您将完全专用 CPU 资源分配给实例,并仍然观察网络数据包丢失,请确保实例经过正确调整并启用了 DPDK。