是否有针对VM公开的CPU内核数量的最佳设置?


23

VirtualBox和其他可能的VM软件允许用户指定暴露给VM的CPU数量。在我的特殊情况下,我有一个双核CPU,Windows 7 64位本机运行,而Ubuntu 9.04 64位作为VM。

帮助文件建议不要将此设置设置为高于可用物理内核的数量。这是有道理的。那么,最好分配1个或2个CPU内核吗?这是否完全取决于本机CPU负载?

Answers:


6

这完全取决于客户机O​​S的操作。以我的个人经验,VM正在运行一个程序(构建服务器,trac服务器,SVN等),因此没有理由将其设置为一个以上。

可能的情况是,如果某个大学的最终用户正在使用来宾操作系统作为临时用途(即TA),然后将其设置为大于一。


因此,换句话说:对于一个临时系统,您可能还需要最大化CPU内核配额;但是对于“正常”或典型用途,请将其设置为一个核心(以免过多干扰主机OS的性能)?
sblair

18

该答案中的信息不再正确。在严格的协同计划时代,这是正确的,但现在不再如此。

为了繁荣起见,我保留了以下答案,但请不要依靠它来实现现代虚拟机管理程序的准确性。


你应该从来没有分配所有的内核为vCPU的虚拟机。

如果VM请求任何 CPU时间,则VMWare 必须分配所有 vCPU或分配任何vCPU。

这意味着,在4核系统上,如果您分配了全部4个核,则只能为主机或来宾分配处理器时间,而不是同时分配处理器时间。

这将绝对破坏两种环境下的性能。

随意分配奇数个内核(例如3)。感觉很奇怪,但这是完全合法的选择。

通常,我分配的vCPU永远不会超过(n / 2)个(在您的情况下为2个)-但是我通常在具有12到32个内核的服务器上分配内核,您可以在其中分配大量vCPU而不会产生重大影响。


这是迄今为止任何程度的权威性答复。感谢您分享您的经验。
G-Wiz 2012年

5
-1:与我的经验不一致。VM是可以与主机上任何其他进程相同的方式调度其CPU时间的进程。您可以调整主机上VM进程的优先级,系统将适当地平衡负载。
bwDraco

2
)假设您有一个16核服务器。一个示例配置是4个VM,每个VM配置8个内核。尽管这似乎是太多的虚拟核心,但它允许单个VM在较重的工作负载上更好地扩展。如果组合利用率超过了物理核心的数量,则主机将相应地平衡负载。这样,虚拟化可以通过充分利用主机硬件来提高吞吐量并降低成本。
bwDraco

@DragonLord-这个问题已有2年以上的历史了,这个问题已经接近4年了,可能是基于过时的信息。我指的是ESX中的“严格协同调度”,但是我不记得这些信息有多旧,并且我还没有跟上最近几年CPU调度的变化。
马克·亨德森

1
只是想在此处说明一下,如果将CPU的数量设置为奇数,则在Ubuntu 14.04和16.04上都存在启动问题以及崩溃。我一直无法弄清楚为什么,因为我只是决定将其保持为偶数以避免出现问题。
多里安

3

来宾CPU所具有的内核数量不会像您希望的那样影响性能。它仅调整来宾CPU“看到”的内核数量。

根据仿真器的设置方式,它实际上可能是虚拟机性能的一半,什么也不做,或者仅影响来宾OS /应用程序拆分线程调度的方式。

最好将其保留为默认值。如果您在主机PC上遇到性能问题,则只需使用Windows Task Manager调整进程优先级即可。


3

正如Nate所说,只要您的VM主要用于运行单线程进程,就没有理由分配多个内核。

但是,如果您打算以可以从更多内核中受益的方式使用它(多线程程序,许多并行程序等),那么情况就更复杂了。以前,我认为为VM使用CPU的一半是个好主意。事实证明,这并不总是最佳的。

确保运行的唯一方法是运行基准测试。我不知道为什么,但是在我的Core2 Quad系统(具有VT-x支持,嵌套分页等)中,实际上使用4个内核中的1个会更好而不是使用2个或更多内核!我只是在VM的启动时间以及编译基准测试中看到了这一点。

与其他硬件结果不同。我也有一个带有8核的i7,并且性能似乎随着那里的核数而更好地扩展(愉快地使用4)。

我的提示:首先对新硬件进行基准测试。


1

我相信操作系统的调度程序,只是将VM设置为物理核心的数量,除非您知道自己一直希望主机在VM中忙碌时拥有一个可能处于空闲状态的核心。


1

这取决于您要在虚拟机以及物理机上执行的操作。如果您需要在将主机操作系统用于其他活动时使用虚拟机,则最好为VM使用两个处理器核心,以便在VM处于满负荷状态时主机还剩下两个处理器核心。另一方面,如果您主要在VM上工作,则可以使用所有处理器核心。

但是,除非可以要求来宾同时使用所有四个内核,否则您可以在继续在主机OS上工作的同时安全地使用所有这些内核。请记住,当VM进程在主机操作系统上运行时,您始终可以调整它的优先级,并且系统将相应地平衡负载。


这是基于我对VirtualBox的经验。因为我不熟悉VMware产品,所以我可能是错的。如果是这样,我将删除此答案。
bwDraco

0

是的,我还要说这取决于。但是我会说我喜欢做什么。在工作中,我有一个四核CPU。因此,对于我的虚拟映像(win7),我分配了两个CPU。这样,我可以同时使用主机和虚拟机,它们各自具有相等的CPU资源。

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.