Kvm虚拟化需要CPU硬件支持,目前Intel和AMD均支持虚拟化。下面的命令可以查看CPU是否支持虚拟化。
# 以root用户运行
# egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
如果输出vmx或者svm,则说明当前的CPU支持虚拟化。
一个Kvm虚拟机在宿主机上实际上是一个qemu-kvm进程,与其他Linux进程一样被调度。虚拟机中的每一个虚拟vCPU对应qemu-kvm进程中的一个线程。如下图所示。
在上图的例子中,宿主机有两个物理CPU,并启动了两个Kvm虚拟机VM1和VM2,分别具有两个vCPU和四个vCPU。那么对应地,VM1和VM2分别有两个和四个线程在宿主机的物理CPU调度管理。因此,虚拟机vCPU数量可以超过物理CPU的数量,这种情况叫做 CPU的超配(overcommit)。
KVM的超配特性使得虚拟机可以充分利用宿主机的CPU资源。