(KVM连载)4.1.3 CPU过载使用(overcommit)

KVM允许客户机过载使用(over-commit)物理资源,即给客户机分配的CPU和内存数量多于物理上实际存在的资源。

物理资源的过载使用能带来一些资源充分利用方面的好处。试想在一台强大的硬件服务器中运行着Web服务器、图片存储服务器、后台数据统计服务器等作为虚拟客户机,但是它们并非在同一时刻都会负载很高,如Web服务器和图片服务器在白天工作时间负载较重,而后台数据统计服务器则主要在晚上工作,所以如果对物理资源进行合理的过载使用,给这几个客户机分配的系统资源总数多余实际拥有的物理资源,就可能在白天和夜晚都充分利用物理硬件资源,而且由于几个客户机不会同时对物理资源造成很大的压力,它们各自的服务质量(QoS)也是能得到保障的。

CPU的过载使用,是让一个或多个客户机使用vCPU的总数量超过实际拥有的物理CPU数量,QEMU会启动更多的线程来为客户机提供服务,这些线程也是被Linux内核调度运行在物理CPU硬件上。

关于CPU的过载使用,最推荐的做法是对多个单CPU的客户机使用over-commit,比如:在拥有4个逻辑CPU的宿主机中,同时运行多于4个(如8个、16个)客户机,其中每个客户机都被分配一个vCPU。这时,如果每个宿主机的负载不很大的情况下,宿主机Linux对每个客户机的调度是非常有效的,这样的过载使用并不会带来客户机中的性能损失。

关于CPU的过载使用,最不推荐的做法是让某一个客户机的vCPU数量超过物理系统上存在CPU数量。比如,在拥有4个逻辑CPU的宿主机中,同时运行一个或多个客户机,其中每个客户机的vCPU数量多于4个(如16个)。这样的使用方法会带来比较明显的性能下降,其性能反而不如将客户机分配2个(或4个)vCPU,而且如果客户机中负载过重时,可能会让整个系统运行不稳定。不过,在并非100%满负载的情况下,一个(或多个)有4个vCPU的客户机运行在拥有4个逻辑CPU的宿主机中并不会带来明显的性能损失。

总的来说,KVM允许CPU的过载使用,但是并不推荐在实际的生产环境(特别是负载较重的环境)中过载使用CPU。在生产环境中过载使用CPU,有必要在部署前进行严格的性能和稳定性测试。

master

Stay hungry, stay foolish.

5 Comments

  1. 博主你好! 我今天在安装了一个xp的客户机,有个问题想请问你,客户机窗口里面有两个光标,一个是箭头,一个是一个小黑方块,鼠标从linux桌面移进客户机窗口就变成黑方块了,这两个光标之前有个相对距离,所以很不方便。这个小黑方块移出客户机窗口之后,那个箭头光标就不动了。博主遇到过这个问题吗?

  2. 博主你好,请问KVM虚拟化环境下一个虚拟机VCPU最大可以分配多少?和操作系统是否有关?在您的书中并无详解。

    • 这个值一般很大,得看kvm是否经过定制修改,比如RHEL6中最多给guest 160个vcpu。具体见:http://www.redhat.com/resourcelibrary/articles/virtualization-limits-rhel-hypervisors 中的“Maximum number of virtual CPUs in fully virtualized guest”这一段。
      目前最新的kvm,如果自己编译来使用的话,应该时限制给一个guest最多255个vcpu.
      见:https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/arch/x86/include/asm/kvm_host.h?id=refs/tags/v3.14.4
      定义有两个值:
      #define KVM_MAX_VCPUS 255
      #define KVM_SOFT_MAX_VCPUS 160

发表评论

电子邮件地址不会被公开。 必填项已用*标注