虚拟化 频道

2006-2010 英特尔处理器虚拟化技术

  第三代虚拟化技术:Pause-Loop Exiting

  2010年3月,英特尔推出了最新的6核32nm处理器家族Westmere,随它而来的也有一个新的VT-x虚拟化技术,即Pause-Loop Exiting(PLE,暂停-循环退出),它的主要用意就是减少因为循环等待而造成了CPU虚拟资源的浪费。

  而一个拥有两个vCPU的SMP(多对称多处理器)虚拟机中,由于串行代码仍然大量存在(不可能全是并行的代码),所以在串行代码执行时的保护机制,会给vCPU“上锁”,此时另一个vCPU则将进入处旋状态,等待得到这个锁来执行指令(这与编程相关),在这个不断的自旋等待中,就造成了CPU资源的浪费,vCPU的数量越多,这种影响就会越严重。而PLE则可以将这种循环锁的造成的CPU资源的浪费大幅度降低。

  虚拟机中两个vCPU的锁止与等待示意图

  PLE通过设置自旋等待暂停指令,以及相应的暂停周期来触发相应的退出动作。它定义了两个周期间隔,一个PLE_Gap,它是指在一个自旋循环中两个暂停指令的间隔,而另一个是PLE_Window,是指在执行虚拟机退出前所经过的等待循环的周期。比如,当一个暂停指令发出时,如果与上一代暂停指令之间超出了PLE_Gap的规定,那么PLE就设定开始了一个新的循环,而如果没有超出,那么就进行周期的累加,直到超过PLE_Window即触发虚拟机退出动作。VMM可以对于PLE的设定进行配置。

  这是一个典型的PLE指令模式,当得到锁的尝试失败后,即发出暂停指令,如果没有得到锁的时长超过了PLE_Window,那么就触VM Exit操作,而如果在PLE_Window之内得到了锁,那么显然下一次的暂停指令将会超出标准的PLE_Gap,从而开始新的一个自旋等待周期。PEL的最大作用在于检测锁抢占状态,如果发生了锁抢占状况(上图中的上面的状态,其他vCPU经历了多次尝试仍然无法获得锁),那么VMM将重新进行vCPU的规划与调配,以尽量降低vCPU的无效时间

  通过采用PLE,我们可以看出来,虚拟机越多(vCPU越多)时,PLE较非PLE平台的性能最多可提高40%,性能优化效果非常明显

  从Nehalem开始,超线程(HT)技术也正式回归英特尔处理器,从而也让虚拟化进一步获益,因为它能提供两倍的逻辑处理器,这也意味着多虚拟机的并行处理能力的进一步增强,而PLE则在此基础上锦上添花,使vCPU的利用效率更高,而这也是最新一代Westmere相对于Nehalem处理器,在虚拟化方面的最大进步。而在未来,英特尔还将进步完善VT-x技术,使x86虚拟化平台的CPU系统开销再创新低。

0
相关文章