KVM CPU 分配数量与物理主机 CPU 数量可以不同吗?

KVM CPU 分配数量与物理主机 CPU 数量可以不同吗?

我读过了问题。我已经知道,例如,我可以有一台四核机器,其中有四个客户机,每个客户机有两个 vCPU。由于它们并不总是需要 100% 的 CPU 使用率,因此调度程序会帮我处理这个问题。

我的问题是这与故障转移或迁移情况有何关系;

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

qemu-kvm 能否模拟比物理 CPU 更多的 vCPU?还是我必须关闭虚拟机、更改 CPU 分配、迁移虚拟机,然后重新启动虚拟机(因此无法进行实时迁移)?

非常感谢。

答案1

是的,您可以配置和运行比可用物理核心更多的虚拟 CPU。这是一台空闲的 Windows Server 2008(x86,德语)KVM 客户机,在 4 核单 CPU Intel X3210 机器上显示 10 个 CPU:

任务管理器显示 10 个 CPU

但只有当您清楚自己在做什么时,您才应该这样做:

首先,这将伴随着计时/同步更多虚拟 CPU 的开销,而没有额外的执行单元来运行负载。更大的开销是,每当计划立即执行的线程数高于可用的物理 CPU 数时,您的主机就必须比必要的更频繁地执行上下文切换。客户操作系统的线程调度程序将与虚拟机管理程序的调度程序相冲突,从而导致严重的性能下降。

因此,如果您将虚拟机迁移到 pCPU 数量较少的主机,则应离线一定数量的 vCPU 以匹配可用的 pCPU 数量。至少在 Linux 中,可以通过切换来完成此操作而无需重新启动/sys/devices/system/cpu/cpu<X>/online

减少正在运行的系统上的 CPU 数量的另一种理论上的方法是使用 CPU 热插拔,但操作系统对此功能的支持相当稀少,并且 KVM 也不允许在线重新配置 CPU 数量。

答案2

检查我的最后一条评论,如果发生迁移或者 vcpu 分配不足,会发生什么。KVM 和虚拟到物理 CPU 映射我解释

相关内容