KVM的CPU分配数量能否与物理主机的CPU数量不同?

我已经读过这个问题。 我已经知道,例如,我可以拥有一台具有四个guest虚拟机并具有两个vCPU的四核机器。 因为他们并不都需要100%的CPU使用率,所以调度程序会为我处理这个问题。

我的问题是关于这是如何与故障转移或迁移情况相关的。

如果host1有两个双核CPU,并且给guest1分配了四个vCPU(因此它访问了所有四个物理核心),如果我尝试将其迁移到只有一个双核CPU的host2,会发生什么?

qemu-kvm能模拟比物理更多的vCPU吗? 或者我将不得不closures虚拟机,更改CPU分配,迁移它,然后启动它(所以没有实时迁移)?

非常感谢。

是的,您可以configuration和运行更多的虚拟CPU,而不是可用的物理内核。 这是一个闲置的Windows Server 2008(x86,德语)KVM guest虚拟机,在4核单CPU Intel X3210机器上显示10个CPU:

显示10个CPU的任务管理器

但是,只有当你知道你在做什么时,你才应该这样做:

一方面,这将伴随着定时/同步更多虚拟CPU的开销,而没有额外的执行单元运行负载的好处。 更重要的开销是,当计划立即执行的线程数量高于可用物理CPU数量时,主机必须更频繁地执行上下文切换。 客户操作系统的线程调度程序将对Hypervisor的调度程序工作,导致严重的性能下降。

因此,如果您已经将虚拟机迁移到使用较less数量的pCPU的主机上,则应该使多个vCPU脱机以匹配可用的pCPU数量。 至less在Linux下,可以通过切换/sys/devices/system/cpu/cpu<X>/online来重启。

另一种减less正在运行的系统上的CPU数量的理论方法将涉及使用CPU热插拔,但是对此function的OS支持相当稀疏,并且KVM也不允许在线重新configurationCPU数量。

检查我的最新评论如果迁移发生或者如果你有vcpu的低分配将会发生什么。 KVM和虚拟物理CPU映射我解释