只有两个内核而不是四个内核才能使虚拟机性能更好?

我们有一个VMWare虚拟机在分配给它的两个核心工作,在IIS中运行一个相当可怕的过程。 在加载过程中,两个内核的CPU使用率都达到最大,所以我们要求系统工程师将物理处理器的另外两个内核呈现给虚拟机。 工程师马上说这不会提高性能,但会使虚拟机的性能变差。 他否认了他的陈述与ESX服务器的容量或资源争夺有关的原因。

那个声明对我来说没有什么意义,我想知道工程师怎么说可能是真的。 实际上,有四个内核提交给虚拟机的情况会导致比同一物理硬件上的两个内核更差的性能? 假设主机服务器上只有一个虚拟机的理想情况,所以没有任何东西与其他操作系统实例共享。

我相信物理服务器有一个四核处理器,最有可能托pipe多个虚拟机。 我真的不知道主机上运行的是什么版本的ESX,也不知道物理处理器configuration是什么,但是从我能够访问的虚拟机内部,我看到了两个3.33 GHz的AMD处理器。

最后,我从来没有去testing工程师的断言,因为(当我们试图让虚拟机升级时),我们能够优化stream程并降低CPU的消耗,并且2)我们最终迁移到不同的虚拟机上另一个有四个内核的ESX服务器。

    我会在这里发言,说你的工程师可能在谈论的是一个具有多个vCPU的VM在调度CPU周期时有明显的缺点。 只要单个核心可用,1个vCPU VM就可以执行指令。 如果虚拟机具有4个vCPU,则在4个核心可用之前,它实际上不能执行任何指令。

    如果你的机器上有相当数量的虚拟机,这肯定会降低你的虚拟机,你的虚拟机将不得不排队等待4个内核的释放。 它也可能会降低其他虚拟机的速度,因为它将同时绑定所有4个内核。

    我不想进入超线程,但以上是我认为你的家伙可能指的是一个简单的解释。 尽pipe他可能没有做出最好的解释。

    每个VMWare的 vSphere最佳实践是使用尽可能less的虚拟CPU。 如果应用程序不是为SMP应用程序构build的,那么如果您将多个vCPU分配给来宾,则可能会产生负面影响。

    即使没有使用某些vCPU,使用它们configuration虚拟机仍然会在ESX上施加一些小的资源要求:*未使用的vCPU仍会消耗定时器中断。 *在多个vCPU之间维护一致的内存视图会占用资源。 *一些较旧的客户机操作系统在未使用的vCPU上执行空闲循环,从而消耗可能用于其他用途的资源(其他虚拟机,VMkernel,控制台等)。 客户调度程序可能会将多个vCPU之间的单线程工作负载迁移,从而导致caching局部性丢失。

    如果主机正在耗尽所有物理CPU周期,则可能会导致其他性能问题,因为主机开始陷入停滞状态,从而导致所有客户开始陷入困境。

    编辑:你的工程师应该至less已经愿意testing。

    在再次阅读您的post时,您说它只有一个四核CPU。如果是这样的话,我可能会和你的工程师一起去,并且说把所有4个物理CPU分配给一个客户是一个主意。 当只有4个物理内核时,主机上pipe理所有4个vCPU的开销会降低整体性能。

    问题是,当主机只有4个核心时,在阵风上增加4个vCPU是你将所有的物理CPU资源分配给一台机器。 让pipe理程序pipe理所有4个vCPU的开销将最终消耗资源,而您实现的收益很可能是最小的

    目前我select的一个经验法则是总是less一个虚拟CPU分配给一个虚拟机,而不是物理上存在于主机上。

    一个这个beeing(befor esxi)的控制台vm总是运行。 对于调度resaons,当虚拟CPU数量同时处于空闲状态时,你只能得到CPU的CPU周期。 否则你的“cpu等待时间”会增加

    所以在主机中的一个quadcore cpu我只能分配最大值。 2点到一个虚拟主机。

    这取决于还有哪些其他内核正在使用。 如果内核空闲,那么是将这些内核添加到您的虚拟机将提高性能(我假设您的虚拟机上运行的应用程序是multithreading,并能够使用所有4核心)。 如果内核繁忙,那么它可能无济于事,至less不会像人们想象的那么多。