开始之前,先看看物理机的CPU如何调度
我该为我的物理服务器分配多少虚拟CPU给虚机才合理,分配比1:1,2:1,听说还可以到8:1?
我的虚拟化CPU分配比达到4:1,会不会引起CPU资源过载?
我只给虚机分配了物理核数一半的虚拟CPU,但是CPU时间一直在70%左右,而另外一台物理机上的虚拟CPU分配达到3:1,但是CPU使用率也才30%左右,这怎么回事?
我们在规划Hyper-V或者其他虚拟化资源的时候,十有八九会为诸如此类的问题抓耳饶腮。虚拟化和云计算的目标之一是能将计算资源池化,动态为虚机分配CPU资源和其他资源,当一台物理机上运行多个虚机实例时,这种动态使用CPU的效果就更加明显了。
在虚拟化世界里,虚机CPU该如何分配一直是个没有标准答案的问题。今天这篇文章我们将回归本质去了解Hyper-V虚拟化平台如何分配CPU,希望大家对Hyper-V CPU资源规划原则和方法有个初步的认识。
在开始之前,我们先了解CPU是如何处理任务(也即进程),先回看单核CPU的时代CPU是如何处理多个任务的。CPU核使用线程(线程是一系列的CPU指令)处理任务,单核CPU在某一时刻只能开一个线程处理一个任务,如果有更高优先级的任务需要处理时,CPU会暂停当前的线程,然后开另外一个线程处理新的任务。假设我在一段时间T内要处理2个任务:任务a和任务b,任务b比任务a具有更高的优先级。一开始CPU核开线程A处理任务a,在t1时间段处理任务a时,任务b具有更高的优先级,于是任务b中断CPU后,CPU暂停线程A,然后为任务b开线程B,在t2时间段任务b处理完毕,关闭线程