浅析处理器虚拟优化技术及KVM实现

来源: 互联网   
2013/4/11 11:32:10
虚拟化把事物从一种形式改变为另一种形式,计算机的虚拟化使单个计算机看起来像多个计算机或完全不同的计算机,虚拟化技术也可以使多台计算机看起来像一台计算机,这叫做服务器聚合fserver aggregation)或网格计算(grid computing)。KVM是以色列开源组织Qumranet开发的一个开源虚拟机监控器,从Linux一2.6.20开始被包含在Linux内核中 因此KVM可以自然地使用Linux内核提供的内存管理、多处理器支持等功能,易于实现,而且还可以随着Linux内核的发展而发展。

本文关键字: 处理器 虚拟优化 KVM

  2.2 Intel VT—X技术


    首先,Intel VT—x提供了一套称作VMX(Virtual Machine eXtension)的新的工作模式,工作在该模式下的处理器又具有两类操作模式:VMXroot operation和VMX non—root operation。通常,虚拟机监控器运行在VMX root operation模式下,即所谓的特权级一1-客户操作系统运行在VMXnon-root operation模式下。VMX non—root operation模式仍保留4个特权级,对操作系统来说,VMXnon—root operation模式与传统的x86处理器兼容,最大的差别在于当虚拟机执行一些访问全局资源的指令时将导致虚拟机退出操作(VM exit),从而使虚拟机监控器获得控制权。以便对访问全局资源的指令进行模拟。以后,虚拟机监控器可以通过虚拟机进入操作(VM entry)使虚拟机重新获得控制权。


    其次,VT—x为系统编程接口状态的切换提供硬件支持。VT—x为每个虚拟机维护至少一个VMCS(Virtual Machine Control Structure)结构,其中保存了虚拟机虚拟机监控器的系统编程接口状态。当执行VM exit和VM entry操作时,VT—x自动根据VMCS中的内容完成虚拟机虚拟机监控器问的系统编程接口状态切换。为系统编程接口状态的切换提供硬件支持是必要的,因为x86处理器的系统编程接口相比应用编程接口要复杂的多,且在不停的变化,如较新的处理器可能增加一些MSR(Model Specific Register)、这使得单独依靠软件来实现系统编程接口的保存和恢复工作变得十分复杂。另外,VT—x还提供了一组指令,使得虚拟机监控器通过一条指令就可以完成虚拟机问的切换。


    VT—x解决了ring deprivileging方法的一系列问题,从硬件上堵住了所谓的x86平台的虚拟化漏洞。由于操作系统所在的VMX non—root operation模式仍具有4个特权级,使得ring aliasing问题不存在了。同时,由于SYSENTER和SYSEXIT指令所引起的adverse impact on guest transitions问题也不存在了: 由于VT—x在VM exit和VMentry时完成系统编程接口的切换,也就是说虚拟机虚拟机监控器拥有各自的GDT,也就拥有了各自的地址空间,解决了address space compres—sion问题。同时,虚拟机虚拟机监控器拥有各自的GDTR/IDTR等寄存器,在虚拟机中访问这些寄存器无需陷入,解决了nonfauhing accessing toprivileged state问题,再者,VMCS中保存了虚拟机的段描述符高速缓存,因此在虚拟机切换时不会出现access to hidden state问题:通过对VMCS进行设置,可以使处理器在VMX non—root operation模式时的EFLAGS,IF失效,即该标志位不再对中断屏蔽产生影响,因此操作系统对EFLAGS,IF的频繁操作不会导致频繁的VM exit,解决了inter—rupt virtualization的问题。


    VT—x提供了完备的处理器虚拟化机制,利用VT—x可以在单个硬件平台上虚拟出任意数量的虚拟处理器VCPU VT—x除了解决了处理器虚拟化的问题之外,还为内存虚拟化和I/O虚拟化提供了支撑。在内存虚拟化方面,VT—x为影子页表的实现提供了支撑,并且在较新的处理器中还提供了EPT机制,进一步提高了内存虚拟化的效率。在I/O虚拟化方面,通过I/O位图机制可以方便地实现对Programmed I/O的虚拟化,除此之外,VT—x还提供了中断事件退出机制和中断事件注入机制,方便对设备中断进行虚拟化。


    2.3 KVM实现


    作为VMM,KVM分为两部分,分别是运行于Kernel模式的KVM 内核模块和运行于User模式的Qemu模块。这里的Kernel模式和User模式,实际上指的是VMX根模式下的特权级0和特权级3。另外,KVM虚拟机所在的运行模式称为Guest模式。所谓Guest模式,实际上指的是VMX的非根模式。

 VCPU工作模型

    图2 VCPU工作模型

利用VT—x技术的支持,KVM 中的每个虚拟机可具有多个虚拟处理器VCPU,每个VCPU对应一个Qemu线程,VCPU的创建、初始化、运行以及退出处理都在Qemu线程上下文中进行,需要Kernel、User和Guest三种模式相互配合,其工作模型如图2所示。Qemu线程与KVM 内核模块间以ioctl的方式进行交互,而KVM内核模块与客户软件之问通过VM Exit和VM entrv操作进行切换。


    Qemu线程以ioctl的方式指示KVM 内核模块进行VCPU的创建和初始化等操作,主要指VMM创建VCPU运行所需的各种数据结构并初始化。其中很重要的一个数据结构就是VMCS。


  

责编:李红燕
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:kaiyun体育官方人口 文章著作权分属kaiyun体育官方人口 、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
最新专题
IT系统一体化时代来了

2009年Oracle 用Exadata服务器告诉企业,数据中心的IT服务一体化解决方案才是大势所趋,而当前企业对大数据处理的..

高性能计算——企业未来发展的必备..

“天河二号”问鼎最新全球超级计算机500强,更新的Linpack值让世界认识到了“中国速度”。但超算不能只停留于追求..

    畅享
    首页
    返回
    顶部
    ×
      信息化规划
      IT总包
      供应商选型
      IT监理
      开发维护外包
      评估维权
    客服电话
    400-698-9918
    Baidu
    map