在分配资源的时候,经常有人申请高规格虚拟机,特别近段时间IT系统开始进行云化迁移,有了十几年资深IT专家们也一样认为CPU资源越多越好,其实在虚拟机超配下,这是错误的。
上世纪60年代开始,美国的计算机学术界就开始了虚拟技术的萌芽。1959年6月在国际信息处理大会上,克里斯托弗的一篇《计算机分时应用》的论文,被认为是虚拟化技术的最早论述。
从上面的一段表述,可以确定的是计算虚拟化的本质是“计算的分时应用”。这也是我们往下讨论的核心基础。虚拟机就是利用“时间片”的CPU运行的,这样在一台物理机上可以运行几台甚至十几台、几十台的“虚拟服务器”。CPU的每个物理核就是一个线程。时间片即CPU分配给各个虚拟机的时间,每个线程被分配一个时间段,称作它的时间片,即该虚拟机允许运行的时间,使各个虚拟机从表面上看是同时进行的,其实是由虚拟化软件进行调度和管理的。每个虚拟机轮流执行。当虚拟机分配到CPU资源池后,是独占使用的。如果使用完,同时未到时间片的规定时间,那么就主动放弃CPU的占用,如果到时间片尚未完成工作,那么CPU的使用权也会被收回,进程将会被中断挂起等待下一个时间片。
我们将CPU就类比为手套,每台虚拟机都是一个需要带上手套才能工作的人。使用手套的规则是管理员会按照顺序给每一个人轮流分配1分钟的使用手套使用时间,如果使用者在1分钟内使用完毕,那么可以立刻将手套使用权返还给管理员,如果到了1分钟手套使用者还没有使用完毕,那么需要重新排队,等待再次分配使用。如果这个时候有8只手套,工作的人也恰好是8个,并且都只需要带一个手套,这样每个人都可以工作,相互之间不会影响。如果第8个人需要2个手套,才可以工作呢?虽然在第1分钟管理员就分配了一个手套给这8个人,前7个人都开始工作了,但第8个人,却还在等待,因为他需要2个手套,一直要到前7个人完成第一次工作后,将手套给管理员,再分配给他,才可以工作。在那分钟内手套也是闲置的。一直到第2分钟的开始,第8个人又拿到一只手套,才第一次工作,而且导致第7个人等待不能参与这轮的工作。如果第8个人其实并不需要2只手套,就能完成工作,但是他申请的时候一定需要2只,就会出现上述效率降低的情况。这个例子里我们可以总结出几个原则:
1、当CPU不超配的时候,各虚拟机各自运行互不影响。(不超配就没有了效益)
2、当CPU超配时,虚拟机就会有等待时间,而且会影响这台物理机下的所有虚拟机。超配比越高,可能等待的时间越长。
3、虚拟机的CPU不是越多越好,够用就好!资源配多了,反而降低效率!
vCPU的调度是虚拟化软件的核心之一,有一套复杂的算法,作者阐述的只不过是简单原理,其实比这个复杂多了,告诉大家的是“按需分配,够用就好”的道理。
————END————
欢迎扫描微信公众账号:“顾炯的云世界”,关注后可以通过“查看历史消息”,观看以前的文章。
可以扫描加入微信“牧羊兔”进行讨论。





