第二代虚拟化技术——EPT与VPID
除了以上两个技术外,在于2009年推出的Nehalem家族处理器上,英特尔又为VT-x增加了两个重要的技术:EPT与VPID
EPT——降低虚拟内存访问的系统开销
EPT即Extended Page Tables(扩展页表)的缩写。CPU要通过主机物理地址来访问内存。如果只是一台物理服务器,这个物理地址就只为一个操作系统服务,但如果进行了虚拟化部署,有多个虚拟机时,就存在着稳定性的隐患。因为在进行VM Entry(虚拟机进入)与VM Exit(虚拟机退出)时(尤其是后者),都要对内存页进行修改。但物理内存是多个虚拟机共享的,因此不能让虚拟机直接访问物理地址,否则一个虚拟机出现内存错误,就会殃及整个物理服务器的运行。所以必须要采取虚拟地址,而EPT的作用就在于加速从虚拟机地址至主机物理地址的转换过程,节省传统软件处理方式的系统开销。
EPT的工作流程图示
在实际的工作中,每个虚拟机都拥有自己一个的IA-32/64的页表,并通过控制寄存器3将虚拟机的线性地址转换成所谓的虚拟机物理地址,最后再通过EPT转换成主机物理地址。要指出的是,IA-32/64页表是放在虚拟机中的,而EPT是放在虚拟机管理器(VMM)里。所以,虚拟机上的软件可随意去修改自己的页表,当一个虚拟机出现问题,或者出现页表错误时,由于EPT是放在VMM中,所以不受虚拟机错误的影响,从而保证了物理内存的安全。
由此可见,EPT首要的出发点是保护物理内存的安全,同时可大幅度降低了虚拟机退出时的系统开销,而且也可以减少虚拟机退出的频率。
VPID——提升虚拟机迁移效率
虚拟处理器标识(VPID,Virtual Processor IDs)是对现在的CPUID功能的一个强化,因为在每个CPU中都有一个TLB,用来缓存逻辑地址到物理地址的转换表,而每个虚拟机都有自己的虚拟CPU来对应。所以,在进行迁移时要进行TLB的转存和清除。而VPID则会跟踪每个虚拟CPU的TLB,当进行虚拟机迁移或VM Entry与VM Exit时,VMM可以动态的分配非零虚拟处理器的ID来迅速匹配(0 ID给VMM自己使用),从而避免了TLB的转存与清除的操作,节省了系统开销,并提高了迁移速度,同时也降低对系统性能的影响。
VPID的主要途在于快速的虚拟机迁移
在虚拟化迁移延迟性能方面,由于系统开销更低,Nehalem相比上一代 家族有了明显降低
可以说有了EPT和VPID的加入,让英特尔处理平台的虚拟化性能有了进一步提高,为客户的服务器虚拟部署提供了更好的保障。