我正在尝试在ESXi上的VM中运行应用程序。该应用程序运行高度延迟敏感的线程。它以紧密的轮询模式运行,几乎总是以CPU的99.9%运行,这是预期的。
VM和服务器的详细信息:
Number of vCPUs allocated to the VM: 36
Number of sockets: 2
Number of cores per socket: 10
Total number of logical CPUs on the server: 40
Hyper threading : Enabeld
ESXi version: 6.50
如果VM上没有其他任何内容,则没有问题。但是如果我在VM上运行其他CPU消耗应用程序,我之前谈到的线程开始获得较少的CPU周期。我已经通过添加一些计算rdtsc()
在KVM上,可以通过以下方式解决:
virsh vcpupin <domain> ...
ESX CPU调度程序如何工作?有没有办法将vCPU映射到ESXi上的物理cpu?
当我在主机上监视esxtop
时,我发现占用99.9%CPU的线程并不总是在同一个核心上运行。它不断在不同的核心周围移动。有几次,我发现它与其他CPU密集型应用程序共享物理核心。