每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化

    技术2025-12-09  12

    CPU虚拟化功能是通过qemu-kvm和qemu-system提供,他们是KVM和QEMU的核心包

    一个KVM虚机在宿主机中其实是一个qemu-kvm进程,与其他Linux进程一样被调度

    一个KVM虚拟机就是宿主机上的一个进程

    将VM1关机,然后查看进程

    将VM1开机,然后查看进程

    虚机中的每一个虚拟vCPU则对应qemu-kvm进程中的一个线程

    KVM中一个VCPU就是宿主机KVM对应进程中的一个线程

    当前VM1虚拟机vCPU数为1,查看线程数

    将VM1关机,然后将vCPU改为2,看线程

    示意图

    在这个例子中,宿主机有两个物理CPU,上面起了两个虚机VM1和VM2,所以当前宿主机上有两个qemu-kvm进程,假设VM1对应进程为qemu-kvm1,另一个为qemu-kvm2。VM1有2个vCPU,所以qemu-kvm1进程上应该有2个vCPU线程VM2有4个vCPU。所以qemu-kvm2进程上应该有4个vCPU线程这里也演示了另一个知识点,即虚机的vCPU总数可以超过物理CPU数量,这个叫CPU overcommit(超配)KVM允许overcommit,这个特性使得虚机能够充分利用宿主机的CPU资源,但前提是在同一时刻,不是所有的虚机都满负荷运行当然,如果每个虚机都很忙,反而会影响整体性能,所以在使用overcommit的时候,需要对虚机的负载情况有所了解,需要测试
    Processed: 0.009, SQL: 9