VirtualBox - VM 显示其使用了 3% 的 CPU,但主机显示 VM 使用了 30%

VirtualBox - VM 显示其使用了 3% 的 CPU,但主机显示 VM 使用了 30%

我的物理服务器有 2 核 3.5 GHz 的 Intel Celeron(暂时,很快我会用 Intel Core i7 替换它)。目前,它只有 1 个正在运行的 VM。Ubuntu Server 18.04 安装在主机上,Ubuntu Server 22.04 安装在虚拟机上。为虚拟机分配了一个核心。为什么主机显示虚拟机使用了 30% 的 CPU,而虚拟机显示它只使用了 3% 的 CPU?

在此处输入图片描述

我的系统设置: 在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

我注意到VM的启动时间和Host的启动时间相差近三个小时,但它们几乎是在同一时间启动的。

答案1

虚拟机管理程序必须做很多事情来帮助您的客户机运行。虚拟机模拟了需要驱动的硬件,即使 vCPU 处于空闲状态也是如此。这对于所有虚拟 I/O 和存储设备尤其重要。所有这些“非生产性”工作被称为高架。虚拟机不是免费的。

我有一台运行邮件服务器的虚拟机 (QEMU、KVM)。即使 4 个客户 vCPU 的空闲率为 98%(因此利用率 <2%),虚拟机管理程序的主机进程的利用率也徘徊在 8 个 CPU 核心的约 12% 左右。

很难用数字来表示开销,因为不同的工作负载具有不同的特点。


这是否意味着当虚拟机尝试使用 100% 的 CPU 时,它实际上只会使用 60-70% 的 CPU?

是的,但略有不同。客户机只能访问不到 100% 的主机 CPU,因为虚拟机管理程序和其他主机程序仍需运行。里面对于客户机来说,它仍然会显示为 100% 繁忙 — — 仅仅是因为它无法在 CPU 上运行任何其他程序。

它有点像这样(HV 是虚拟机管理程序,OS 是主机操作系统):

 ┌────────────────────────┐
 │Host CPU                │
 ├──┬──┬──────────────────┤
 │OS│HV│VM CPU            │
 └──┴──┴──────────────────┘

答案2

VM 没有 CPU,因此其数量完全是虚拟的。VM 中的 CPU 被实现为在 VirtualBox 进程中运行的线程,并且线程由主机操作系统调度,以便从主机 CPU 获得其时间片。

因此,虚拟机报告的 CPU 使用率不如主机报告的那么重要。还要注意,虚拟机实际上并不了解主机 CPU,只了解其虚拟 CPU,它认为自己知道的一切可能都是错误的。

相关内容