Cha*_*son 44 windows-7 virtualbox ubuntu cpu-cores
我有一个带有 VirtualBox 的 2.8 四核 i7。我可以选择为一台来宾机器分配最多 4 个内核,但我只做过两个。为来宾分配更多内核的优点/缺点是什么?顺便说一句,在运行两个来宾操作系统(Win 7 和 Ubuntu)时,我仍然可以在 Ultra 设置上一直玩星际争霸 2,BFBC2(我的压力测试人员)也是如此。i7 如何应对内核间的不均匀负载?
Sky*_*eam 66
您分配给 VM 的“虚拟”内核可用于客户端操作系统内的多处理。如果您只为 VM 分配一个核心,那么来宾操作系统就没有机会在多个核心之间分配负载。因此,让我们假设一些实际场景:
在这种情况下,来宾操作系统将只能使用一个内核。因此,如果您运行的多线程应用程序可以在多个内核上很好地扩展,它仍将仅在一个内核上运行。因此,来宾操作系统上的所有线程都必须共享一个物理内核。
在此设置中运行完全加载 CPU 的来宾操作系统将产生约 25% 的主机操作系统 CPU 负载(主机上加载的 4 个内核中的一个)。
当然,您仍然可以在主机操作系统中运行消耗 CPU 的任务,并利用剩余的 3 个内核。
在这种情况下,您可以在来宾 VM 中运行扩展良好的多线程应用程序,这可以充分利用所有 4 个虚拟 CPU。VirtualBox 将使用 4 个物理内核来处理 VM 内调度的任务,因此您的主机 CPU 负载可能会达到 100% 的最大使用率。
这个问题的答案很大程度上取决于你想做什么。在某些情况下,将所有内核分配给一个 VM 或什至运行多个 VM 可能很有用,每个 VM 都分配了全部 CPU 数量。在这种情况下,VM 可以充分利用主机的整个处理能力。如果分配给 VM 的 CPU 多于实际实际存在的 CPU,则 VM 将受到不同 VM 上的负载的影响。为了防止这种情况,您可以将一些核心专用于特定的 VM。例如,在 4 核节点上运行 2 个虚拟机,每个虚拟机分配有 2 个 CPU 可以帮助每个虚拟机获得 2 个专用 CPU(假设主机操作系统没有施加负载,这也占用了部分处理能力)。
同样,这取决于软件运行。如果您运行一个空闲的 VM(根本没有运行 CPU 密集型程序),则该 VM 施加的负载将接近 0%。您甚至可以并行运行 10 个虚拟机,并且如果所有虚拟机都空闲,主机 CPU 负载仍然接近 0%。
好吧,CPU 负载分配在很大程度上取决于称为调度程序的特定于操作系统的内置组件。对于 Windows XP,调度程序尝试循环加载所有 CPU 内核。因此,在四核 CPU 上以满负载运行单线程任务将在每个内核上产生约 25% 的负载。
不幸的是,这已被证明对现代 CPU 电源管理不利。对于现代系统,如果在第二个核心甚至参与之前,一个核心已加载到 100%,那甚至是一个优势。原因是只要没有足够的负载来充分使用一个核心,其他核心就可以保持深度睡眠模式,以节省能源并减少散热。
对于某些 CPU,如 Intel Core i 系列和较新的 AMD(Bulldozer),这更有趣,因为如果只使用核心的一个子集,未使用的将被关闭。这降低了 CPU 的功耗。两者(英特尔和 AMD)都开始使用热量和功耗预算,然后对活跃的内核进行超频。因此,这可以为单线程应用程序(不能分布到多个内核以并行处理任务)提供动力。然而,当所有内核都处于活动状态时,大多数这些“增强”技术对处理能力的影响很小,因为“所有内核都处于活动状态”的情况正是 CPU 的设计目的。
所以答案是你的 i7 核能很好地处理单核上的不均匀负载,甚至可能为单线程应用程序提供性能提升。然而,这种提升在几个百分点的范围内,而实际上可以在多个 CPU 内核之间分配负载的多线程应用程序在最佳情况下可以通过因子提升(双核为 x2,四核为 4 倍......) . 因此,与单线程结合时钟提升相比,多线程在组合 CPU 功率方面始终提供更多功率。
归档时间: |
|
查看次数: |
52899 次 |
最近记录: |