VM 上的单个虚拟核心是否可以使用超过 1 个物理核心?

Lum*_*uma 3 virtualization vmware-esxi

我有一台运行双四核 CPU 和超线程的服务器。

我们有一个 Windows 2003 VM,它只有一个内核。

使用 prime95 时,我注意到它的最高频率约为 2.3Ghz(该服务器上的每个核心为 3ghz)。

无论如何,ESXi 是否可以让单个虚拟 CPU 使用多个物理核心?

我知道这很奇怪,但只是一起玩:)

谢谢。

小智 10

就我的理解而言,它既是肯定的,也不是肯定的,但出于您想要的原因,它不是肯定的。您为虚拟机提供的 1 vcpu 配额并不意味着它将始终停留在 cpu #1 的核心 #2 上,但这确实意味着它永远不会使用 >1 个核心。

由于您的服务器上只有一台虚拟机,因此您不会看到工作负载分布在多个内核上,因为 CPU 调度程序从未认为有必要将其移出单个内核。但是,如果您要开始托管更多机器,这些机器看到不同的工作负载,即使它们都被分配了一个 vcpu,那么任何一台机器不一定总是在同一个物理核心上运行。

根据 ESXi 的 CPU 调度程序认为合适的方式,工作可以分布在多个内核上。话虽如此,VMware 仍然无法同时将单个 vcpu 拆分到两个物理内核上。如果负载均衡器认为这样做有益,它所能做的就是将这些 vcpu 迁移到另一个物理内核,即如果一个内核因工作而不堪重负而另一个内核闲置,ESX 会将 vcpu 迁移到该空闲内核。

如果你真的想看看设计是如何工作的,我会从第 6 页开始阅读这篇文章,并在第 10 页的 3.3.1 节中阅读更多内容: http //www.vmware.com/files/pdf/techpaper/VMW_vSphere41_cpu_schedule_ESX .pdf

这不是 VMware 的限制,而是处理器和软件的一般工作方式的限制。您的想法是多 CPU 计算的圣杯,将单线程应用程序的工作负载分布在多个内核上以提高性能。这几乎与超线程完全相反:不是让一个内核完成两个内核的工作以增加并行执行带宽,而是让两个内核以两倍的速度完成一个内核的工作。无论如何,这可能比您想要的更具技术性。

tl;dr:不,但如果你弄清楚你可能不想告诉镇上的每个人如何去做,除非他们提供几美元:)