我正在configuration需要运行大约12个内核的软件,但是我正在vSphere虚拟机上运行它,这意味着至多可以configuration8个(虚拟)内核[1]。 将要运行的物理机器有24个可用内核,并且只托pipe一个其他虚拟机。 该虚拟机有8个核心分配。
由于我的机器有8个核心,另一个机器有8个核心,这意味着8个核心似乎完全闲置。 这似乎是错误的。
我猜测VMWare已经做了一些巧妙的事 – 即使我的机器只能分配8个内核,实际上,如果后端有24个内核的话,我保证会得到8个内核,但是,如果没有其他机器正在使用它们,可以使用其中的24个。
我一直在阅读关于在vSphere中共同分享的内容,但是这有点过头了。
有人可以解释这是如何工作的?
编辑:这是我已经给出的有关8 CPU的限制的解释,但我需要确认它。
vSphere使用dynamic处理器负载均衡,允许来宾中的每个分配的核心访问主机上的所有核心。 虽然客户操作系统只能看到8个物理处理器,但每个处理器都可以访问24个内核池。 这与大型机的工作方式非常相似。
这暗示了8核的行为更像24核心,但现在看来这只是错误的。 是吗?
参考文献:
这意味着在虚拟机中永远不会有超过8个线程并行执行。 但是,通过ESX资源分配的魔力,你可以给这些线程很大的马力。 您不限于实际CPU的最大速率,ESX的CPU负载平衡方法将允许运行速度超过此速度,只要您使用它执行的操作可能会出现这种轻微的乱序执行。
这是通过利用CPU资源的队列结构来完成的。 根据需要将工作分派给多个处理器。 单个vCPU可以在系统上的任何物理CPU上执行(或者如果在NUMA系统中,则可以在本地节点中的CPU上执行)。 实现超过物理CPU性能的vCPU性能是通过将工作从单个vCPU并行或至less非常靠近地分派到多个物理CPU来完成的。
当需要重新组合由多个CPU返回的工作来模拟单个vCPU时,它看起来像虚拟机一样工作得非常快。 ESX按照正确的顺序重新组合多个工作单元。
当然,并不是所有的工作量都适合这一点。 提交大量相互松散相关的迭代工作的工作也许是最好的例子。 与早期指令有很多紧密依赖关系的作业(例如encryptionalgorithm的recursion调用)将无法大幅扩展。
vSphere 4.0具有8个vCPU的硬性限制。 这就是它将会使用的,这是一个相当合理的限制。 vSphere更多地被devise为处理主机上的许多访客虚拟机,而不仅仅是一对。 你可能想看看是否可以聚集3-6个虚拟机,而不是只做2个虚拟机。
这与他们许可软件的方式有关。 你有这么多的权力是免费的。 如果你想要比这更多,你必须付钱。 http://www.vmware.com/download/eula/multicore.html