VirtualBox - 高 VMM 负载(如果 CPU 核心 > 1)

VirtualBox - 高 VMM 负载(如果 CPU 核心 > 1)

我在 VirtualBox VM 上安装了 Lubuntu 22.04 LTS(客户机)。VirtualBox 在 Ubuntu 20.04 LTS(主机)机器上运行。

最初,我为虚拟机分配了 2 个(虚拟)CPU 核心。我注意到,VMM load尽管客户机处于空闲状态,但始终处于高位。会话信息窗口显示guest load和之间存在巨大差异VMM load。虽然guest load约为 0%,但VMM load介于 50-90% 之间。然后我切换了分配的核心数量。有趣的是,只有当我为虚拟机分配 2 个(虚拟)核心或更​​多时,才会出现这种差异,如下图所示。

VirtualBox - 会话信息 - CPU 负载

我对此有几个问题:

  1. 到底是什么VMM load
  2. guest load和有什么区别VMM load
  3. guest load为什么和VMM load(2核或以上)有如此大的差异?
  4. 在评估客户系统的 CPU 负载(即系统是否在极限下工作)时,这两个变量中的哪一个是决定性的?

我找不到满意的答案。我也不知道我的虚拟机是否存在资源/性能问题。尽管表明guest load没有性能问题,但这些VMM load值似乎令人担忧。使用的 RAM 始终在 385 MB 左右(分配给虚拟机的内存共计 2 GB)。

我尝试过的 VirtualBox 版本(及其各自的 Guest Additions):6.1.38、6.1.40 和 7.0.0。全部存在相同问题。

我的 CPU:Intel Xeon E3-1231 v3 @ 3.40 GHz(4 个物理核心,8 个线程)。

编辑: 在进行一些 CPU 压力测试时,我发现了一个有趣的现象:

VirtualBox - 核心 1/2 - 压力测试

  • 1 个分配的虚拟核心:在 CPU 压力测试期间guest load增加但仍保持在~0%。VMM load
  • 2 个分配的虚拟核心:在 CPU 压力测试期间guest load增加,否则减少。VMM load

总之,每次客户系统需要处理能力来处理用户/系统任务时, 就会VMM load停机或保持停机状态。这可能意味着无论 代表什么VMM load,它都不会(或几乎不会)影响用户/系统所需的处理能力。

此外,我观察到,即使(在分配了 2 个或更多虚拟核心的情况下)很高VMM load,主机系统上的 CPU 负载仍然很低。只有当guest load增加时,主机系统上的 CPU 负载才会增加。因此,VMM load表示不消耗或几乎不消耗 CPU 功率的东西。

剩下的唯一问题是,为什么VMM load分配 2 个虚拟核心后会出现高值。可能是核心之间有协调过程?

答案1

我在帖子中找到了开发人员的一些解释 VirtualBox 与 Hyper-V AMD/Intel 性能差异巨大 - 第 2 页

VirtualBox 使用三个纳秒计数器来计算实时时间,它们分别称为 执行停止其它。前两个计数器分别总结了客户操作系统执行和暂停的时间。第三个计数器总结了 VirtualBox 本身正在执行“其他操作”或 VirtualBox 完全不活动(并且客户操作系统未处于暂停状态)的时间。这个“其他操作”很难掌握,因为它隐藏在大多数 VirtualBox 代码中。

在性能监视器中,客人负荷表示增量 执行,以及VMM 负载表示增量其它。由于客户操作系统和主机操作系统的 CPU 负载似乎都没有反映这一点VMM 负载,我不认为这个问题对于 VirtualBox 开发具有高优先级。

然后,VMM 负载被解释为 VirtualBox 正在执行“其他操作”或根本不活动时的一个模糊计数器。据说它与客户机和主机中的 CPU 负载没有任何关系,开发人员认为它并不重要。

我最多能说的是,如果开发人员不认为这很重要,你也应该这样做。

相关内容