我有一台运行具有超线程的双四核 CPU 的服务器。
我们有一个 Windows 2003 VM,它有一个核心。
当使用 prime95 时,我注意到它的最高速度约为 2.3Ghz(该服务器上每个核心为 3ghz)。
ESXi 是否可以让单个虚拟 CPU 使用多个物理核心?
我知道这很奇怪,但只是玩玩而已:)
谢谢。
答案1
据我所知,答案既是肯定的,也是否定的,但原因并非如此。您为虚拟机提供的 1 vcpu 配额并不意味着它将始终停留在 cpu #1 的 core #2 上,但确实意味着它永远不会使用超过 1 个 core。
由于您的服务器上只有一个虚拟机,因此您看不到工作负载分布在多个核心上,因为 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:不,但是如果你弄清楚了,你可能不想告诉镇上的每个人如何去做,除非他们提供几块钱:)
答案2
不可以。它不是能够以某种方式改变处理器架构的灵丹妙药。