VirtualBox 使用的处理器数量超出分配数量

VirtualBox 使用的处理器数量超出分配数量

我有一个 VirtualBox Windows VM,配置为使用 4 个处理器中的 3 个(见屏幕截图),但是当我的计算机最近冻结时(见下面的说明),我使用top并发现 VirtualBox 进程使用了​​ 400% 的 CPU。

这是否意味着它占用了我所有的 4 个处理器?这怎么可能呢?如何防止 VirtualBox 占用我所有的 CPU?

虚拟盒处理器选项卡

硬件加速

编辑

我说的“冻结”是指它几乎没有响应。我可以让光标在很长的延迟后移动(即:移动鼠标一点,然后等待 45 秒),但我没有注意到其他交互。我按Ctrl+ Alt+F1进入控制台,然后运行 ​​top,但这两个操作都出现了明显的延迟。其他键盘操作,例如Alt+F2没有任何效果(或者在我停止等待之前没有任何效果)。

答案1

该分配是 GUEST CPU 的数量,而不是可以使用的 HOST CPU 的数量。虽然它们通常非常相似,但 Virtualbox 会尝试使用尽可能少的 CPU,但它们并不相同。Virtualbox 和任何其他 VM 软件都需要使用部分主机 CPU 来模拟其他设备。(例如视频卡)

鼠标“粘住”这一事实也意味着 VB 使用了大量线程来保持这些模拟的有序性。如果只使用四个线程,内核仍会为您的 GUI 提供良好的共享。

与此一致,我认为你使用错误的工具来限制 virtualbox 使用的 CPU 数量。你对使用 3 或 4 个核心的客户机并不真正感兴趣,你更感兴趣的是让其他任务获得公平的处理器份额。

我建议你研究一下 Linux 内核特性cgroups它允许您将进程分类为组并确保这些组仅占用您允许的 CPU。这样,内核可以配置为在您的 GUI 不需要时为 VirtualBox 提供全部 400% 的 CPU,但当其他所有进程有事要做时,让它们在其中两个 CPU 上获得绝对优先级。

相关内容