当前位置:首页 > linux教程 > 列表

KVM 嵌套虚拟化介绍及使用 virtual ETP 特性

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-21 13:33:34 浏览: 评论:0 

嵌套虚拟化简介

嵌套虚拟化(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的嵌套虚拟化效率会得到很大的提高,从而让嵌套虚拟化成为真正可实际使用的技术.

Tags: KVM嵌套虚拟化 virtual

分享到: