我读过这的问题。我已经知道,例如,我可以有一个四核机器,每个四位客人都有两个vCPU。由于它们并不总是要求100%的CPU使用率,所以调度程序会为我处理这个问题。
我的问题是,这与失败或移民的情况有什么关系;
如果host1有两个双核CPU,并且我为guest1分配了四个vCPU(所以它访问了所有四个物理核),那么如果我尝试将它迁移到只有一个双核CPU的host2上会发生什么呢?
qemu能够模拟比物理更多的vCPU吗?或者,我是否需要关闭虚拟机,更改CPU分配,迁移它,然后重新启动它(所以没有实时迁移)?
非常感谢。
发布于 2012-10-05 15:29:12
是的,您可以配置和运行比可用物理内核更多的虚拟CPU。这是一个空闲的Windows 2008 (x86,德语) KVM来宾,显示了一个4核单CPU英特尔X3210机器上的10个CPU:

但只有当你知道自己在做什么时,你才应该这样做:
首先,这将伴随着计时/同步更多虚拟CPU的开销,而不需要有额外的执行单元来运行负载。更重要的开销是,当计划立即执行的线程数量高于可用的物理CPU数量时,主机将不得不更频繁地执行上下文切换。来宾操作系统的线程调度程序将与Hypervisor的调度程序相反,从而导致严重的性能下降。
因此,如果您已经将VM迁移到一个pCPU数量较少的主机上,那么您应该离线使用一些vCPU,以匹配可用的pCPU数量。至少在Linux下,不需要通过切换/sys/devices/system/cpu/cpu/online就可以重新启动。
另一种减少运行系统上CPU数量的理论方法将涉及使用CPU热插拔,但操作系统对此特性的支持相当稀疏,而且KVM也不允许在线重新配置CPU数量。
发布于 2016-12-10 00:00:38
检查我最后的注释,如果迁移发生,或者如果vcpu分配不足,会发生什么。KVM和虚拟CPU到物理CPU映射我解释
https://serverfault.com/questions/435231
复制相似问题