王骏的博客
编程、网络技术点滴...

公告

逐渐将VC知识库的博客迁移到这里!

随笔分类

随笔档案

相册

最新评论

阅读排行榜

评论排行榜

程序员博客   首页  新随笔  订阅  管理  登录 
 
JO2000 阅读(3226) 评论(0)

当系统内的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的处理器。

 

通过对Xen的测试,系统所有虚拟机的vCPU的总数目小于和等于CPU核数时,VM的性能是比较稳定的。当vCPU数目大于物理核数时,VM的性能稳定性变差。

 

曾经看过一篇文,老外写的,他做过几种情况的实验,插槽数、核心数的不同,对性能还真有点影响。
VMWARE 在分配处理器的时候是从第一个物理处理器的第一个核心开始的,如果有 HT,那么一个核心 还会被当成两个来用,譬如,如果给一个VM分配了 4 个核心,实际上是分配了 4 个线程给它,使用的是第一个插槽的第一、二个核心(因为一个核心有两个线程),除非你指定它(虚拟机->编辑设置->资源->高级CPU),
根据他的测试结果,性能相差最大有的40%还多(具体数据我忘记了)。他得出的结论是,如果可以的话,分配CPU给VM的时候尽量分配 M 个 插槽 配置1个 核心,如果操作系统不支持或软件授权不允许,那么就分配 1 个 插槽 配置 N 个 核心,最坏的情况是 M 个 插槽 配置 N 个 核心。


发表评论
切换编辑模式