答案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,它认为自己知道的一切可能都是错误的。