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

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

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

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

将VM1关机,然后查看进程
每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第1张图片
每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第2张图片

将VM1开机,然后查看进程
每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第3张图片

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

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

当前VM1虚拟机vCPU数为1,查看线程数
每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第4张图片

将VM1关机,然后将vCPU改为2,看线程每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第5张图片
每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第6张图片

示意图
每天5分钟玩转openstack跟学(二)KVM虚拟化原理之CPU虚拟化_第7张图片

  • 在这个例子中,宿主机有两个物理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的时候,需要对虚机的负载情况有所了解,需要测试

你可能感兴趣的:(OpenStack)