kvm guest 可以获得比其现有更多的 CPU 吗?

kvm guest 可以获得比其现有更多的 CPU 吗?

当我在 KVM 中运行具有单个虚拟 CPU 的虚拟机时,如果主机中没有其他虚拟机在运行,那么虚拟机是否可能获得比整个 CPU 更多的 CPU 周期?换句话说,虚拟机可以获得比它拥有的更多的 CPU 吗?我的虚拟机没有 CPU 带宽限制。

由于 Linux 调度程序 (CFS) 是工作节约型的,如果我理解正确的话,如果有工作要做,调度程序就会一直处于忙碌状态。在本例中,我的虚拟机中有一些线程。

如果虚拟机确实有多个 CPU 为其服务,那么虚拟机如何报告其 CPU 利用率?>100%,或者只是 100%。虚拟机的 /proc/cpuinfo 中的 CPU 数量是多少?

我认为这是一个有趣的问题,或者可能是一个愚蠢的问题。如果没有答案,我打算做一些实验。

提前致谢。Zhen

答案1

测试结果表明,即使 Linux 调度程序节省工作量,客户机也无法获得超出其需求的 CPU。

我使用一个微基准测试做了一些简单的实验,该测试基本上是让 CPU 旋转。主机是运行 KVM 的双核机器,带有一个客户虚拟机。

我在客户虚拟机中同时运行多个基准测试应用程序,以查看它是否可以获取比其应得的更多的 CPU。结果如下:

  • 当虚拟机配置了 1 个虚拟 CPU 时,sar 会报告虚拟机中的 CPU 利用率约为 100%,并且~50%在主机中。主机中的 top 命令显示 2 个 KVM 线程。

  • 当虚拟机配置了 2 个虚拟 CPU 时,sar 报告虚拟机的 CPU 利用率约为 100%,并且~100%在主机中。主机中的 top 命令显示 3 个 KVM 线程。

所以我的理论是 KVM 会为每个虚拟 CPU 分配一个线程,而额外的线程用于一些管理活动。因此具有单个虚拟 CPU 的虚拟机无法同时在主机的多个 CPU 上提供服务。

事实证明这是一个愚蠢的问题:)

相关内容