VMware采用的帮派调度是否有严重的缺陷?


15

我读了一些TechNet文章以及这一个关于道路VMware和超V做CPU调度之间的差异。

我想知道是否可以得到一些客观的信息。VMware使用的帮派调度似乎是一个巨大的缺点,但我不想只喝苦力。它会严重影响性能吗?还是VMware最新的Hyper visor迭代解决了此问题?

编辑:当我说劣势时,我的意思是相对于Hyper V的“免费处理器调度”,但是KVM做到了。我正在阅读的材料并没有说“免费处理器调度”存在任何问题,而这些问题可以通过帮派调度来避免。


3
Gang调度对于从未针对可能以不同速度和/或时间运行的虚拟处理器进行测试的旧代码而言,性能更好。
布莱恩(Brian)

Answers:


22

就像将血腥玛丽高呼入昏暗的浴室镜子一样,让我们​​看看是否可以让杰克·奥辛(Jake Oshins)露面...

帮派调度也称为协同调度。我认为VMware更喜欢术语“协同调度”而不是“帮派调度”。

在3.x之前的ESX版本中,VMware使用“严格”协同调度,这具有同步方面的缺点。在ESX 3.x及更高版本中,VMware切换为“宽松”的协同调度。

轻松的协同调度取代了ESX 3.x中的严格协同调度,并且在后续发行版中进行了改进,以实现更好的CPU利用率并支持广泛的多处理器虚拟机。与严格的协同调度算法相比,宽松的协同调度具有一些独特的属性。最重要的是,在严格的协同调度算法中,滞后的vCPU的存在会导致整个虚拟机协同停止。在宽松的协同调度算法中,领先的vCPU根据与最慢的同级vCPU的偏斜来决定是否应自行停止。如果偏差大于阈值,则领先的vCPU会自行停止。请注意,落后的vCPU的进度远远低于最快的同级vCPU,而领先的vCPU比最慢的同级vCPU进步得多。通过跟踪最慢的同级vCPU,现在每个vCPU都可以独立做出自己的调度决策。像共同停止一样,共同开始决定也是单独做出的。一旦最慢的同级vCPU开始运行,共同停止的vCPU就可以共同启动,并且可以根据pCPU的可用性进行调度。通过不需要将一组vCPU一起调度,可以解决严格的联合调度算法中的CPU碎片问题。在4- vCPU虚拟机的上一个示例中,即使只有一个空闲的pCPU可用,虚拟机也可以前进。这显着提高了CPU利用率。通过跟踪最慢的同级vCPU,现在每个vCPU都可以独立做出自己的调度决策。像共同停止一样,共同开始决定也是单独做出的。一旦最慢的同级vCPU开始运行,共同停止的vCPU就可以共同启动,并且可以根据pCPU的可用性进行调度。通过不需要将一组vCPU一起调度,可以解决严格的联合调度算法中的CPU碎片问题。在4- vCPU虚拟机的上一个示例中,即使只有一个空闲的pCPU可用,虚拟机也可以前进。这显着提高了CPU利用率。通过跟踪最慢的同级vCPU,现在每个vCPU都可以独立做出自己的调度决策。像共同停止一样,共同开始决定也是单独做出的。一旦最慢的同级vCPU开始运行,共同停止的vCPU就可以共同启动,并且可以根据pCPU的可用性进行调度。通过不需要将一组vCPU一起调度,可以解决严格的联合调度算法中的CPU碎片问题。在4- vCPU虚拟机的上一个示例中,即使只有一个空闲的pCPU可用,虚拟机也可以前进。这显着提高了CPU利用率。一旦最慢的同级vCPU开始运行,共同停止的vCPU就可以共同启动,并且可以根据pCPU的可用性进行调度。通过不需要将一组vCPU一起调度,可以解决严格的联合调度算法中的CPU碎片问题。在4- vCPU虚拟机的上一个示例中,即使只有一个空闲的pCPU可用,虚拟机也可以前进。这显着提高了CPU利用率。一旦最慢的同级vCPU开始运行,共同停止的vCPU就可以共同启动,并且可以根据pCPU的可用性进行调度。通过不需要将一组vCPU一起调度,可以解决严格的联合调度算法中的CPU碎片问题。在4- vCPU虚拟机的上一个示例中,即使只有一个空闲的pCPU可用,虚拟机也可以前进。这显着提高了CPU利用率。即使只有一个空闲的pCPU,虚拟机也可以向前推进。这显着提高了CPU利用率。即使只有一个空闲的pCPU,虚拟机也可以向前推进。这显着提高了CPU利用率。

上面的摘录来自VMware自己的文档

因此,VMware不再使用严格的帮派计划。我认为直接来自供应商的文档更具权威性。

唯一可以给您带来困难数字的就是基准,它完全取决于CPU正在运行的代码种类。但是我可以告诉你,如果VMware处于这种劣势,那么他们将在虚拟化市场中仍然没有很大的份额。


很高兴我问。我在基于MS的文档/文章中对它的解释方式似乎有点像营销策略。
red888 2014年

8
与2008年发布的Hyper-V(至少在CPU调度方面)相比,2006年之前的ESX版本处于劣势。如果对此感到震惊,则应撤销其极客卡。
克里斯S

因此,如果我在16核VM中安装单线程(duh!)MSDOS,则该VM的每个CPU周期都不会锁定主机上的16个内核,而只能锁定一个pCPU?这而不是CPU的速度是帮派调度的主要缺点。
dyasny 2014年

“帮派调度比联合调度更严格”- 链接 -在此,帮派调度不称为联合调度。考虑到我很困惑!
罗宾

16

好吧,瑞安,你决定了我的一天。我没有像以前那样阅读此论坛,但是我碰巧签到了。

Red888,您应该预先知道我是一名在Microsoft Hyper-V上工作的软件架构师。我认为大多数阅读此书的人都完全有能力点击此书下面的我的姓名链接,并发现它,甚至是谷歌搜索我,但是对于此答案,可以完全确定阅读此书的人对我的观点毫无疑问是有用的。

通常,如果虚拟机管理程序没有任何方法可以影响VM中运行的OS的行为,则帮派调度非常有用。当然,这就是VMware以这种方式开始的原因。他们不拥有任何操作系统,因此他们的目标是使现有操作系统正常运行。如果我是他们,这就是我应该开始的地方。

Gang调度和VMware可能会说我是对的,这在如何使用计算机中的物理处理器方面留下了很多限制。系统管理程序通常暂时无法找到合适的资源。因此,多年来,他们已经修改了算法,寻找可以更好地进行调度的方法。

微软(可能还有其他几家公司)以不同的观点开始。我们拥有Windows。虚拟化时,我们将使Windows表现良好。因此,帮派调度将不再必要。我们甚至不费心去建立一个帮派调度程序。

有趣的是,在Microsoft,我们更关心Windows与其他操作系统相比是否运行良好,而不是Hyper-V看上去比VMware,KVM,Xen,Oracle,Unisys等更好。因此,我们发布了Windows的界面用于与管理程序合作。如果您好奇的话,这是一个链接,尽管我不建议您在睡前阅读它:

http://www.bing.com/search?q=Hypervisor+顶层+功能+规格+ 3.0a%3A + Windows + Server + 2012&src = IE-SearchBox&FORM = IESR02

因此,任何管理程序供应商都可以公开将触发Windows合作行为的内容。其中有几个。老实说,我不知道VMware是否具有,是否具有或是否会公开这一点。您必须问他们,或者是一个非常关注他们的人。如果他们这样做了,如果他们没有修改调度程序以进一步放松,我会感到非常惊讶。当然,最后的陈述纯粹是猜测。

因此,我的底线答案是,我怀疑您是否应该在2014年根据管理程序调度程序的工作方式做出购买决定。我怀疑他们现在都还不错。几年前,情况可能并非如此。

您应该在各种系统上尝试工作负载,并查看它们如何工作。我敢打赌,您的最终性能取决于存储和网络是否满足您的需求。


这是信息。我只是在阅读有关这些内容的信息,并通过学术好奇心问这个问题
red888 2014年

4
哇,我的血腥玛丽工作了!:D总是很高兴看到您停下来。
瑞安·里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.