[kvm切换器]KVM 嵌套虚拟化介绍及使用 virtual ETP 特性

更新时间:2019-10-04    来源:平板电脑    手机版     字体:

【www.bbyears.com--平板电脑】

嵌套虚拟化简介

嵌套虚拟化(nested virtualization、recursive virtualization)是指在虚拟化的客户机中运行一个Hypervisor,从而再虚拟化运行一个客户机。嵌套虚拟化不仅包括相同 Hypervisor的嵌套(如KVM on KVM、Xen on Xen、VMware on VMware等),也包括不同Hypervisor的相互嵌套(如VMware on KVM、KVM on Xen、Xen on KVM等)。根据嵌套虚拟化这个概念可知,不仅包括两层嵌套(如KVM on KVM),还包括多层的嵌套(如KVM on KVM on KVM)。

如果嵌套虚拟化比较成熟并商用了,在Amazon上的EC2或者Google的GCE上面租用的虚拟客户机中,就可以自己再使用VMware、KVM、Xen等虚拟机。

KVM嵌套虚拟化的当前状态(virtual EPT)

在两三年前(约2010年),KVM就开始支持嵌套虚拟化,可以向L1提供最基本的CPU硬件虚拟化。然后由于没有EPT的支持,在L1中只能使用 shadow pagetable,其内存访问的效率比较低;最近IBM和Intel(我们team)的工程师开始做一些virtual EPT的工作,可以让L1使用虚拟EPT的特性,从而极大地提高L2中内存访问的效率。有了virtual EPT之后,L2的pagetable就有3种可能的类型:shadow on shadow, shadow on EPT, EPT on EPT(其中EPT on EPT的性能当然是最好的)。目前,virtual EPT的patch还没发到upstream KVM中,不过最近应该可以很快进去了。

另外,最近IBM(和Intel)的工程师也在KVM maillist中发了一些关于VMCS shadowing的patch,这个也是可以很好地提高L2的运行效率的(今后可以再说说)。

BTW,在最新的Xen中,Intel工程师已经开发了virtual EPT 和 VMCS shadowing等nested中重要feature的patch,并且都已经正式加入到upstream中了的,貌似性能有很大的提高(今后可以有些数据)。也可以参考Xen Summit 2013中的一个演讲稿:http://www.slideshare.net/xen_com_mgr/nested-virtualization- update-from-intel

KVM virtual EPT的性能数据

在最新的KVM内核(3.9.0-RCx)中,添加了内部的virtual EPT相关的patch,然后在L2中测试kernel build的效率。(这里的嵌套虚拟化是 KVM on KVM 类型)

在一台Ivy Bridge机器上,L2是4 vCPU 和 4GB内存配置,内核编译所需的时间对比如下

without v-EPT: 32’6″ (32分6秒) –> 是shadow on EPT的情况。

with v-EPT: 9’56″ –> 是 EPT on EPT 的情况

可见,在KVM虚拟化中使用了virtual EPT的性能,可以让kernel build这个测试场景的性能变为原来的3倍(3X)左右。

相信在最近virtual EPT 和 VMCS shadowing 等patch都加入到upstream KVM中后,KVM的嵌套虚拟化效率会得到很大的提高,从而让嵌套虚拟化成为真正可实际使用的技术。

本文来源:http://www.bbyears.com/shoujikaifa/71068.html

热门标签

更多>>

本类排行