在 Windows 8.1 下的 VirtualBox 中运行 Ubuntu 不会 100% 使用 CPU

在 Windows 8.1 下的 VirtualBox 中运行 Ubuntu 不会 100% 使用 CPU

我在 Windows 8.1 64 位下使用 VirtualBox 4.3.10 运行 Ubuntu 14.10 64 位。我有一台 Intel Core i5-2410M CPU,有 2 个物理核心,启用了超线程和虚拟化。

我已经设置了此处提到的所有内容其他帖子

  • 系统版本设置为Ubuntu 64位
  • 已启用 I/O APIC
  • VM 的 CPU 数量设置为 2(允许的最大值)
  • 已启用 VT-x/AMD-V
  • 执行上限为 100%

当我在 Ubuntu 中运行 CPU 密集型任务时,根据 Ubuntu 任务管理器,它的 CPU 使用率为 100%,但在 Windows 下只有~70%。

Ubuntu(来宾):

Ubuntu CPU 使用率

Windows(主机):

Windows CPU 使用率

这不是最大值,如果我在 Windows 上运行 CPU 密集型任务,它会达到 100%:

在此处输入图片描述

Ubuntu 仅看到 2 个 CPU,每个核心 1 个线程(正在运行lscpu):

lscpu 输出

我怎样才能让虚拟 Ubuntu 使用我所有的 CPU 能力?

答案1

有几件事让事情看起来就像原来那样。如果我错了,请纠正我:

  • 超线程在双核 CPU 上显示为两个附加核心,但不会充当真正的核心。H T最多可为您带来 30% 的性能提升,在实际应用中可带来 10% 的性能提升。Windows 主机上的满载永远不会在任务管理器中显示每个逻辑 CPU 上的 100% 负载。任务管理器还可能隐藏内核空间负载并仅显示用户空间负载。
  • 您已呈现两个逻辑 CPU到您的 VM,这将占 Windows 主机上总系统负载的 50%。
  • 假设客户机上的 100% 负载等于每个逻辑 CPU 上的 100% 负载,则会导致总负载的 50%在 Windows 主机上,其他程序也在运行,总计约 68%

我已经研究虚拟化、Windows 和 Linux 一段时间了(甚至专业地),超线程总是会引起这样的问题。问题是出现的新逻辑核心似乎没有与正确核心相同的功能(解释不清)...另一个例子是相反的,消息是新 CPU 的速度要快得多,以至于总系统负载只有大约 50%,而实际负载是 100%。

答案2

VirtualBox 应该在 Ubuntu“机器”设置下有一个设置,在某个地方有 CPU 设置,您可以在其中更改允许的最大 CPU 使用率百分比(以及核心数和一些功能)。它可能设置为最大 70%,如果需要,可以将其更改为更高的值。

此外,您的真实 CPU 可能是英特尔的“奇怪”CPU 之一,它只有 2 个真实内核,但通过超线程“假装”有 4 个“假”内核。您的 Windows CPU 使用率是否在所有内核上都达到 100%?我以前拥有的旧超线程 CPU 在一个“假”内核上最多只能达到 100%,因为只有一个真实 CPU 内核,所以它永远无法在 2 个“假”内核上达到 100%。但也许从那时起超线程和 Windows 已经发生了变化……

[通常会听到“为什么我的 CPU 已经满负荷了?”这是一个不同的方向 ;-]

相关内容