为什么增加Hyper-V托管VM的“逻辑处理器数量”会增加VM的性能?

Modified on: Fri, 20 Sep 2019 14:40:03 +0800

据我了解,虚拟机(假设Relative Weight相等)获得了相同的处理器份额。

当VM被给予一些处理时间时,VM是否看到单个核心使用它或多个核心并不重要,因为处理来自Hyper-V主机上的处理器阵列,无论如何。但是,当我在Hyper-V中为特定VM设置Number of logical processors设置从1到4时,我看到了巨大的性能提升。

我当前设置的规格大约是:

  • Hyper-V主机有32 GB RAM,24个逻辑处理器(错误字?),几TB空间。

  • 虚拟机分配6 GB RAM,1或4个核心,几百GB空间并运行2008 R2。

我在过去的Hyper-V设置上遇到了类似的事情。

最佳答案

我所知道的每个虚拟机管理程序中的虚拟机都可以使用其他虚拟CPU来安排额外的并发执行线程。

正是物理机和虚拟机之间的抽象层使得以您描述的方式工作。 VM不知道物理机有多少核心。 VM不会“看到”物理计算机上的物理CPU(或核心)。虚拟机管理程序为VM提供了多少个虚拟CPU,客户操作系统使用这些虚拟CPU来调度其他并发线程...虚拟机管理程序向虚拟机发出的虚拟CPU总数甚至可以超过物理CPU的数量/机器中的核心。

换句话说,虚拟机在分配单个vCPU时,将其线程调度为只有一个CPU。底层物理机中有多少核心并不重要。 (虽然值得注意的是,物理机可以在一个物理核心上为一个线程量子或时间片安排一个VM线程,然后在下次计划运行时在另一个物理核心上运行它。虚拟机具有不知道是不是发生了这种情况。它只知道它一次只能安排一个线程,一个接一个,因为它只有一个虚拟CPU。)

让我们在这里明确我们的条款。您将vCPU或虚拟CPU分配给VM,而不是“核心”。核心(我假设您的意思是指共享单个物理插槽的物理处理单元)不等于vCPU。它们之间有一层抽象。如果VM仅为其分配了1个vCPU,则它一次只能安排一个线程运行。这就是为什么你的VM运行速度更快,分配了2-4个虚拟CPU - 因为它现在能够安排多个线程同时运行。

然而,肯定存在一个收益递减规律,因为过多的虚拟CPU在同步等事情上会产生越来越高的开销成本。

Hyper-V和VMware虚拟机管理程序如何安排虚拟机线程执行之间存在细微差别,它们在物理资源“超额订购”方面存在差异,但这是一个很好的一般概念。

作者:,Ryan Ries

相关问答

添加新评论