据我所知,虚拟机(假设Relative Weight
相等)在处理器中的份额是相等的。
当给VM一些处理时间时,VM是看到它使用的单个核还是多个核并不重要,因为处理是来自Hyper-V主机上的一个处理器数组。然而,当我在Hyper中为一个特定的VM将Number of logical processors
设置从1设置到4时,我看到了一个巨大的性能提升。
我当前设置的规范大致如下:
我也经历过类似的事情在过去的超级V设置。
发布于 2013-07-23 18:47:59
据我所知,每个管理程序中的虚拟机都能够使用额外的虚拟CPU来调度额外的并发执行线程。
正是物理机器和虚拟机之间的抽象层使得它无法像你所描述的那样工作。VM不知道物理机器有多少核心。VM不会“看到”物理机器上的物理CPU(或核心)。虚拟机管理程序为VM提供了多少个虚拟CPU,而来宾操作系统使用这些虚拟CPU来调度额外的并发线程.虚拟机管理程序分配给虚拟机的虚拟CPU总数甚至可以超过机器中物理CPU/核心的数量。
换句话说,虚拟机在分配单个vCPU时,会安排它的线程,就好像它只有一个CPU。不管底层物理机器中有多少核心。(尽管值得注意的是,物理机器可能会将一个物理核上的一个VM线程调度为一个线程量,或时间片,然后在下次计划运行时在另一个物理核心上运行它。不过,虚拟机完全不知道其中任何一种情况。它只知道一次只能调度一个线程,一个接一个,因为它只有一个虚拟CPU。)
让我们在这里说清楚我们的条件。您可以将vCPU或虚拟CPU分配给VM,而不是“核心”。核心(我假设您指的是共享单个物理套接字的物理处理单元)不等于vCPU。它们之间有一层抽象。如果一个VM只有一个vCPU分配给它,它只能安排一个线程一次运行。这就是为什么VM在分配给它的2-4个虚拟CPU时运行得更快的原因--因为它现在能够调度多个线程同时运行。
但是,这里肯定存在收益递减的规律,因为过多的虚拟CPU在同步等方面会产生越来越高的开销。
Hyper和VMware虚拟机监控程序如何安排虚拟机线程执行有细微的不同,而且它们对物理资源“超额订阅”的方法也不同,但这是一个很好的一般概念。
发布于 2013-07-23 18:50:12
分配的虚拟CPU数量确实很重要。运行在VM中的软件不知道它在VM中,并且主机能够提供比VM更多的功能。因此,如果您正在运行的软件可以利用多个CPU核,在一个只分配了一个核心的VM中,该软件将只为其任务安排一个核心,并且VM一次只能使用一个主机核。一旦您给VM更多的核心,软件可以调度更多的并行任务,主机的CPU将为VM调度。
小心不要给VM太多,以免引起争用,如果一个VM有比主机更多的虚拟核,VM将与它自己竞争,如果是像vmware这样的调度监控程序,VM根本就无法执行任何东西(当然,过度分配的选项被管理层阻止了)。
https://serverfault.com/questions/525723
复制相似问题