为VirtualBox分配更多“核心”有什么真正的好处吗?


40

我有一个带有VirtualBox的2.8四核i7。我可以选择为客户机分配最多4个内核,但我只做了两个。为客户分配更多核心有哪些优点/缺点?顺便说一句,我仍然可以在运行两个客户操作系统(Win 7和Ubuntu)的同时在Ultra设置上玩星际争霸2,同样适用于BFBC2(我的压力测试员)。 i7如何对核心的不均匀负载做出反应?

Answers:


62

您分配给VM的“虚拟”核心可用于客户端操作系统内的多处理。如果仅为VM分配一个核心,则guest虚拟机操作系统不可能跨多个核心分配负载。那么让我们假设一些实际场景:

主机有4个CPU,guest分配1个CPU

  • 主机运行4个物理核心
  • VM中的客户端OS分配了1个核心

在这种情况下,客户操作系统将只能使用一个核心。因此,如果您运行的多线程应用程序在多个核心上可以很好地扩展,它仍然只能在一个核心上运行。因此,来宾操作系统上的所有线程必须共享一个物理核心。

在此设置中运行客户操作系统以完全加载CPU将产生~25%的主机操作系统CPU负载(主机上加载4个核心中的一个)。

当然,您仍然可以在主机操作系统中运行耗费CPU的任务,并使用剩余的3个核心。

主机有4个CPU,来宾分配了4个CPU

  • 主机运行4个物理核心
  • VM中的客户端OS分配了4个核心

在这种情况下,您可以在来宾VM中运行良好扩展的多线程应用程序,这可以充分利用所有4个虚拟CPU。 VirtualBox将使用4个物理内核来处理VM中安排的任务,因此主机CPU负载最多可达到100%的使用率。

那你应该选择什么样的设置呢?

这个问题的答案很大程度上取决于你想做什么。在某些情况下,将所有核心分配给VM或甚至运行多个VM(每个VM分配了全部CPU)可能很有用。在这种情况下,VM可以充分利用主机的整个处理能力。如果为VM分配的CPU数量多于实际存在的CPU数量,则VM将受到不同VM上的负载的影响。为了防止这种情况,您可能会将某些内核专用于特定的VM。例如,在4核心节点上运行2个具有2个CPU的VM可以帮助每个VM获得2个专用CPU(假设主机操作系统没有施加负载也占用了部分处理能力)。

它是否会对我的主机产生负面影响,将所有内核分配给VM?

这又取决于软件运行。如果运行空闲的VM(根本不运行CPU密集型程序),则此VM施加的负载将接近0%。如果所有VM都处于空闲状态,您甚至可以并行运行10个VM,并且仍然会遇到接近0%的主机CPU负载。

CPU在不均匀负载下的表现如何?

那么,CPU负载分配在很大程度上取决于特定于操作系统的内置组件,称为调度程序。对于Windows XP,调度程序尝试循环加载所有CPU内核。因此,在四核CPU上运行满负荷的单线程任务会在每个核心上产生~25%的负载。
不幸的是,这已被证明对现代CPU电源管理不利。对于现代系统来说,如果在第二个核心甚至涉及之前将一个核心加载到100%,这甚至是一个优势。原因在于,只要没有足够的负载来完全耗尽一个核心,其他核心就可以保持深度睡眠模式以节省能量并减少散热。

对于某些CPU,如英特尔酷睿i系列和较新的AMD(推土机),这更加有趣,因为如果仅使用核心的子集,则关闭未使用的核心。这降低了CPU的功耗。两者(英特尔和AMD)都开始使用热量和功耗预算,然后对活跃的核心进行超频。因此,这可以提供单线程应用程序(不能分布到多个内核以并行处理任务)。但是,当所有内核都处于活动状态时,大多数这些“增强”技术对处理能力的影响很小,因为“所有内核处于活动状态”的情况正是CPU所针对的情况。但是,当您关闭某些内核时,其余内核可以超频运行而不会导致芯片运行更热(或消耗更多功率),而不是所有内核都处于活动状态。

所以答案是你的核心i7可以很好地处理单核上的不均衡负载,甚至可以为单线程应用程序提供性能提升。然而,这种提升在几个百分点的范围内,而实际上可以在多个CPU内核之间分配负载的多线程应用程序可以通过因素(双核x2,四核四核......)得到提升。因此,与单线程结合时钟提升相比,多线程总是在组合CPU功率方面提供更多功率。


1
哇,这真的有助于我理解多核行为,而不仅仅是它如何影响vms。
Dan Allen

2
我的Ubuntu 12.04 LTS客户端在我的Macbook Air w / 2 ghz i7 Dual core上运行速度非常慢。我将客户端的设置提高到两个cpus,现在它开始燃烧。我忽略了不理想设置的警告信息。
Mike Graf

这是非常复杂的,因为VirtualBox不使用Core它使用处理器,每个人都有1个处理器可能2 ..即使它是四核或八核,除非他们称为Cores处理器?
SSpoke

0

我没有深入研究VB站点上的手册,但我认为将内核分配给来宾计算机将允许来宾操作系统看到多个内核,从而允许可以利用这些额外内核的应用程序增加速度/功率/效率,与主机操作系统相同。

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.