一个虚拟机可以分配多少个虚拟CPU,以及如何在服务器上限制虚拟机的数量? 一个物理CPU一般一个内核会支持多个处理线程(英特尔超线程技术)。这就意味着一个六核的Xeon处理器可以提供给服务器六个物理CPU。当超线程开启的时候,每个线程可以作为一个物理CPU,所以如果这个六个核都开启了双线程支持,那么服务器将看到12个物理CPU。 当安装了虚拟化层,每个物理CPU被抽象成每个虚拟CPU,通常情况下,会为每个内核划分可用的CPU资源,并允许多个虚拟机共享一个物理处理器内核。默认情况下,虚拟化层会给每个工作负载分配一个vCPU(一个核)。 一个经验之谈,一般一个虚拟CPU可以支持4到8个虚拟机。假设我们使用保守限制,例如每个虚拟CPU支持4个虚拟机。假如服务器有两个4核处理器(共八核),预计这个服务器可能支持32个虚拟机 或者更多。如果是4个4核的处理器(共16核),预计服务器会支持64个虚拟机或更多。 要知道,如果多个虚拟机可以共享一个虚拟CPU,那么每个虚拟机可以用的CPU资源就会减少,可能会影响虚拟机的性能。如果一个服务器上的工作负载需要更多的CPU,最好是在一个虚拟CPU上部署更少的虚拟机。 此外,你也可以给一个虚拟机分配多个虚拟CPU,但是最重要的是不能超过服务器中实际处理器的数量。例如,假如一个服务器只有一个处理器,那么只能给每个虚拟机分配一个虚拟CPU。假如服务器有两个处理器,最多只能给一个虚拟机分配两个虚拟机CPU。如果服务器有四个处理器,那么一个虚拟机最多分配不能超过四个虚拟CPU。 我们一直都在努力坚
当系统内的VM所需要的vCPU核大于物理CPU核数时,虚拟化管理系统首先按照时间片轮流调度一遍,然后如果还有剩余的CPU资源,则给所需要的vCPU。 比如系统配置了40个vCPU,只有20个物理核。那么平均每个vCPU获取一个核心50%的资源。由于一些VM忙,一些VM空闲,虚拟化系统会在一个调度周期内,划分出若干时间片,轮流给每个vCPU使用。忙的vCPU可以使用完整个时间片,而闲的vCPU用不完整个时间片,会提前释放资源。这样在一个调度周期内,对每个vCPU都调度一遍后还有空闲的时间,调度器会把用这剩余的资源去调度忙的vCPU。 这样兼顾公平和效率。 这中调度算法具体下来,大致是如下效果:系统有1个CPU 2.0 Ghz,两个VM,分配1个vCPU。 如果VM1 和 VM2都忙,那么各自相当于拥有一个1.0 Ghz的CPU。 如果VM1很忙,VM1只需要 500Mhz的处理能力,那么在VM1看来,相当于暂时获得了 1.5Ghz的处理器。
TechTarget中国:http://www.techtarget.com.cn