首页> 中国专利> 多虚拟化技术的自适应动态选择与应用

多虚拟化技术的自适应动态选择与应用

摘要

虚拟化计算机系统的虚拟化层中实现的多虚拟化技术之间的自治选择。虚拟机监视器实现多虚拟化支持处理器,每个处理器提供可能虚拟化异常的全面处理。驻留在虚拟机监视器中的虚拟化选择控制可用来取决于标识出在执行客户操作系统时面临的指令流的一部分中的时间本地特权依赖指令的预定模式,在第一和第二虚拟化支持处理器的使用之间进行选择。

著录项

  • 公开/公告号CN101681269A

    专利类型发明专利

  • 公开/公告日2010-03-24

    原文格式PDF

  • 申请/专利权人 威睿公司;

    申请/专利号CN200880016189.6

  • 申请日2008-05-16

  • 分类号G06F9/455;

  • 代理机构北京鸿元知识产权代理有限公司;

  • 代理人陈英俊

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 23:44:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-07-24

    授权

    授权

  • 2010-05-05

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20080516

    实质审查的生效

  • 2010-03-24

    公开

    公开

说明书

技术领域

本发明的一个或多个实施例涉及计算机系统虚拟化,更具体地说,涉及一种系统化的、基于性能的方法,该方法用于动态选择并应用不同虚拟化技术,以改善虚拟化环境中的应用和客户操作系统的执行性能。

背景技术

多种形式的计算机系统虚拟化已被用来改进在给定计算系统平台中提供并可获得的物理资源能力的利用率,并取得了不同程度的成功。一般而言,虚拟化使得多个计算机系统环境能够在给定硬件平台上在功能上并行执行。这些计算机系统环境嵌入客户操作系统,并且通过虚拟化,可以在不同程度上代表与底层的物理系统平台不同的计算平台。

虚拟化系统通常使用虚拟机监视器(VMM)来实现,VMM也被称作系统监管器,其提供对一个或多个共同执行的虚拟机(VM)。每个虚拟机代表封装了用于执行应用程序的地址空间、客户操作系统和虚拟平台的分立执行环境。过去几年,已经提出并实现了多种用于实现虚拟机监视器的具体方法。

至少理论上可以实现虚拟机监视器的传统虚拟化方法包括捕捉并仿真(trap-and-emulate)、para-virtualization(超虚拟化)、和二进制翻译。捕捉并仿真虚拟化依赖于平台中央处理单元(CPU)来实现特权模型,当在无特权上下文中执行特权依赖指令时,该特权模型将发出异常。特权依赖指令一般可以分类为那些直接修改执行CPU的安全状态的指令、那些执行行为取决于执行上下文的特权级别而变化的指令、以及那些可以用来揭示CPU的安全状态以使能条件式程序执行的指令。在所谓的经典可虚拟化的计算机体系结构中,所有特权依赖指令当在无特权上下文中执行时将发出异常。

经典的捕捉并仿真虚拟化系统提供了虚拟机内的客户操作系统的直接执行,尽管是在无特权的安全级别之下。在该系统中,虚拟机监视器在特权级别下执行,在执行客户操作系统时产生的特权异常被虚拟机监视器捕捉。捕捉的指令和相关的执行上下文随后被虚拟机监视器按需评估,以使能对调用了所捕捉异常的预期客户操作系统功能的仿真。

更详细地,传统操作系统在名义上被实现以利用系统监管器/用户特权系统。操作系统核和某些必要服务以监管权利执行,而非必要操作系统和用户应用以缩减的用户权利执行。在典型的基于x86的体系结构中,环-0、1、2和3特权级别由硬件控制支持。操作系统传统上在环-0特权级别上执行,而用户应用通常在环-3上执行。一些专门的用户级别应用可以运行在环-1上,并且由于与这里内容无关的原因,环-2很少被使用。环-0和更高的较少特权的环之间的区分是由硬件体系结构安全控制在某些特权依赖指令在环-0之外执行的情况下通过发出特权异常而在名义上被执行的。传统上,特权异常被看作不可重新进入的事件,由于执行特权指令的用户级别程序通常作为安全预防措施而被终止。然而,基于x86的体系结构支持重新启动调用了特权捕捉异常的指令的执行的能力。特权异常的产生导致上下文切换至环-0特权级别,在该级别异常被关联的异常处理机处理。

上下文切换和随后虚拟机监视器的仿真操作在客户操作系统的虚拟化执行中增加了性能开销。因此,优化该开销性能是所有虚拟机实施方案中需要考量的内容。遗憾的是,上下文切换和仿真开销不是仅有的甚至不是捕捉并仿真虚拟化系统的主要问题。相反,主要问题是目前流行的x86体系结构模型不是经典的可虚拟化体系结构。尽管许多特权依赖指令将适当地生成特权异常,但是其它标准x86指令不能用来对应当被限于环-0执行的活动生成特权异常。例如,多种x86指令可以被用来修改某些x86 CUP内寄存器的内容,其中CPU内寄存器包含仅在环-0执行上下文中可修改的控制位。这些寄存器中的其他位可以在环-0执行之外被有效写入。任何尝试在环-0执行之外修改受环-0约束的控制位的x86指令将不仅不能产生特权异常,该尝试性修改还将被默默忽略。此外,如果修改是由去特权的客户操作系统核来尝试的,那么预期的核行为将不被实现。从而,这些指令的执行行为基于执行的特权级别而不同。

对于想要即在特权环境又在无特权环境中执行的客户操作系统,会产生另一问题。假定该客户操作系统是在用户模式而非监管模式下执行的,那么任何由该模块实现的特权级别状态的运行时(run-time)区分测试将总是识别出用户模式执行。不能执行模块的设计和实现时想要的特权操作将损害模块和客户操作系统的整体功能。

由于传统x86体系结构不能对所有特权依赖指令的执行产生异常,因此x86体系结构不是经典可虚拟化的。对此问题的进一步论述可以在下面的文章中找到,Robin,J.S.& Irvine,C.E.,″Analysis of the Intel Pentium′s Ability toSupport a Secure Virtual Machine Monitor,″Proceedings of the 9th USENIXSecurity Symposium,Denver,CO,August 2000。

超虚拟化采用不同的方法来处理在非经典可虚拟化体系结构中存在的特权依赖指令。如同捕捉并仿真虚拟化,超虚拟化系统实现虚拟机监视器来提供对虚拟机的共同执行的监管控制。尽管客户操作系统类似地以去特权的方式在底层的平台上执行,但是超虚拟化要求客户操作系统直接意识到并调用虚拟机监视器来处理涉及特权依赖指令的环境。由于传统操作系统是在未提供与虚拟机监视器交互功能的情况下被实现的,因此标准超虚拟化实现方案需要客户操作系统被具体修改以支持虚拟化。即,在去特权上下文中特权依赖指令的执行可能造成不受欢迎的行为的每个地方,通常需要客户操作系统的源码级别修改。

超虚拟化虚拟机监视器典型地包含可从客户操作系统访问的库例程,其恰当地仿真必要的客户操作系统特权功能。超虚拟化虚拟机监视器一种现有实现方案(被称做Xen 3.0)可从加利福尼亚州Palo Alto的XenSource公司获得。超虚拟化的缺点是需要修改客户操作系统核心以支持虚拟机监视器交互。传统上,所支持的每个不同类型和版本的每种客户操作系统必须被修改。在许多情形中,对操作系统所需组件的访问是不可行的。考虑到所需修改的核心位置,为确保核心操作在能够支持更高操作系统层和应用的一致行为执行的方面不被非故意地直接或间接影响,会产生显著的测试负担。

基于二进制翻译的虚拟化系统,与捕捉并仿真和超虚拟化系统类似,典型地实现虚拟机监视器来在功能上管理并协调虚拟机内客户操作系统的执行。虚拟机监视器执行在特权上下文中,并管理客户操作系统的执行。如在美国专利6,397,242(被授予给Devine等人并被转让给本申请的受让人)中描述的,虚拟机监视器对指令执行流进行运行时分析以识别特权依赖指令的发生,其中特权依赖指令如果在未被修改的情况下执行,会产生不受欢迎的系统行为。运行时分析由二进制至二进制翻译器执行,该二进制至二进制翻译器发出包含特权依赖指令的仿真的功能上等同的指令流。取决于特权依赖指令的性质和使用,二进制翻译结果产生重写指令和调出(call-out)库例程的某个组合,其中库例程适于仿真特权依赖指令分段想要执行的客户操作系统的功能。最终的经翻译指令流优选被高速缓存,并且之后代替客户操作系统的对应部分而被执行。

尽管指令流的初始处理和二进制翻译增加了性能负担,但是随后来自翻译高速缓存的经翻译指令流的执行获得接近本地的性能。考虑到现代操作系统的相对小部分被主要并被重复执行,使用基于二进制翻译的虚拟化可实现的总体性能增加是实质性的。基于二进制翻译的虚拟化系统因此实现了支持非经典可虚拟化体系结构的好处,而不需要超虚拟化的源级别客户操作系统修改,也没有如在纯粹捕捉并仿真虚拟化之下发生的,每次特权依赖指令被执行时异常处理开销的持续性能负担。

非经典可虚拟化体系结构(例如x86体系结构)中特权依赖指令的存在很久之前就已知晓,但是直到最近,x86体系结构的多个基于硬件的扩展被提出并在不同程度上被实现以支持分区虚拟化。特别地,英特尔公司已实现了虚拟化技术(或VT)扩展,该虚拟化技术扩展在非经典可虚拟化体系结构中提供了用于分区虚拟化的基于硬件的支持。其它厂商,例如AdvancedMicro Devices,Inc.,在他们的微处理器设计中已引入了类似的扩展。考虑到功能的相似性,出于讨论本发明的目的,所有基于硬件的虚拟化扩展可以被通称为VT扩展。

简言之,VT引入了定义两种特权级别的特权覆盖系统。和传统x86特权模型有关,已经添加了新的VMX非根级别,该新的VMX非根级别功能上包含标准x86环-0、1、2、3特权模型。传统x86特权模型被标识为VMX根级别。在使用中,实现VT捕捉处理机的虚拟机监视器将在VMX根环-0中执行。通过在VMX非根环-0中执行客户操作系统,许多与特权依赖指令有关的问题被解决;客户操作系统运行在它们想要的特权执行模式中。其余的虚拟化问题,具体指那些由x86体系结构的传统非经典可虚拟化性质产生的问题,由与VMX根环-0相关的VMX非根环-0的受控去特权处理。即,VT实现VM退出与VM进入操作,其封装VMX非根和根特权状态之间的转移,以添加传统上不产生特权异常的事件以及那些特权依赖指令的异常处理。这些非经典可虚拟化指令的执行以及某些操作条件的发生(特别地,关于存储器分页、中断处理和编程I/O操作),将自动地或如VT定义的控制向量确定的那样,迫使作出VM退出转移。这使得虚拟机监视器内实现的VT捕捉处理机能与虚拟机的并行阵列一致地处理这些具体条件,从而获得总体操作完整性。

尽管已发展了更为直接的方法来支持分区虚拟化以及实质上简化虚拟机监视器的实现,但是使用VT和其它类似的基于硬件的虚拟化支持技术存在许多内在限制。具体而言,VT的基础操作将许多特权依赖指令转换为重量级上下文切换的等同物(如果不是实际的重量级上下文切换的话)。即,尽管实质上是以硬件实现的,但是VM退出与VM进入转移需要相当大量的状态信息被从虚拟机控制结构恢复并针对VM退出与VM进入转移进行保存。在典型客户操作系统内的性能敏感执行流中发生特权依赖指令的情况下,VM退出与VM进入转移显著的处理负担会特别有问题。例如,若干特权依赖指令在页表的管理中被有代表性地调用。在执行传统操作系统核心的时候,考虑到性能成本可忽略且优化优化存储器访问特别有益的传统假设,页表操作被相当频繁地执行。如传统虚拟机监视器中实现的VT类型基于硬件的虚拟化支持系统通常将在这些页表修改中增加VM退出与VM进入转移。总体结果是,对于频繁调用特权依赖指令的操作系统,VT类型系统将产生实际中不仅是显著并且是可觉察到的虚拟化开销。

此外,虚拟机监视器需要为仿真的目的评估启动每个VM退出的特权依赖指令的预期操作,这也会增加实质性的处理负担。尽管作为硬件实现的VM退出转移的一部分,VM退出转移捕获显著的状态信息,但是常驻虚拟机监视器的VM退出处理机必须重新确定特权依赖指令的预期操作和执行上下文。典型地,虚拟机监视器操作解码特权依赖指令,并且进一步分析客户操作系统的执行上下文的可能全异的方面,以正确特征化并实现特权依赖指令的仿真执行。由于该解码与分析是在每个VM退出转移之后执行的,因此被捕捉的特权依赖指令的VT分析与仿真也是虚拟化开销的重要来源。

但是,VT类型基于硬件的虚拟化在与超虚拟化和二进制翻译虚拟化技术有关的某些方面提供了明显的益处。与超虚拟化有关的,VT虚拟化使得能够执行未经修改的客户操作系统。与二进制翻译虚拟化相比,VT虚拟化不增加初始执行开销,并且允许应用程序向客户操作系统的系统调用在无虚拟机监视器介入的情况下执行。并且,由于VT虚拟化不需要翻译高速缓存,因此VT虚拟机监视器将需要更少的存储器。

发明内容

本发明的一个或多个实施例提供了一种动态优化虚拟机的现实执行性能的自适应自治系统。根据一个或多个这样的实施例,这是通过提供在虚拟机监视器中实现的多虚拟化技术之间的自动选择以优化虚拟机的执行性能而实现的。虚拟机监视器实现多个虚拟化支持处理器,每个虚拟化支持处理器提供对潜在虚拟化异常的全面处理。例如,驻留在虚拟机监视器中的虚拟化选择控制可用来取决于标识出在执行客户操作系统时面临的指令流的一部分中的时间本地特权依赖指令的预定模式,在第一和第二虚拟化支持处理器的使用之间进行选择。

有利的是,个体虚拟机的执行性能,无论是独立执行还是在共用硬件平台上与其他虚拟机同步执行,被单独优化。此外,虚拟机执行性能被动态优化,而无需虚拟机监视器被重新加载,也无需任何虚拟机的重启。此外,虚拟化性能分析,以及在适当确定后在不同虚拟化技术之间的切换,是完全在虚拟机监视器内执行的。性能数据的收集以及虚拟化技术切换的实现对虚拟机(包括其封装的客户操作系统、执行应用、以及虚拟机的用户)是透明的。此外,根据本发明的一个或多个实施例,可以动态评估和使用任意数量的不同虚拟化技术。具体地说,在不影响最优选择的虚拟化技术的情况下,虚拟机监视器可以支持多种不同基于硬件虚拟化的技术。此外,与不同虚拟化技术相关联的虚拟化开销成本,至少部分基于由客户操作系统的实际执行确定的虚拟机监视器的所需明确虚拟化支持操作,而被动态确定。最优虚拟化技术的选择因此将取决于客户执行应用需要的客户操作系统的实际操作。因此,这使能了动态反映虚拟机的实际和形成中的操作条件的最优虚拟化技术的选择。

附图说明

图1是适于实现本发明一个或多个实施例的计算机系统平台中的通用虚拟存储器系统的主要功能组件的框图;

图2A和2B的示图分别图示出x86体系结构系统中实现的虚拟地址以及使用页表将虚拟地址翻译成对应的物理地址。

图3是示出了根据本发明一个或多个实施例用于在计算机系统平台上同时执行的多个虚拟机的逻辑布置的框图。

图4A和4B示出了根据本发明优选实施例使用的特权级别模型。

图5是示出了根据本发明一个或多个实施例与多个虚拟机的执行相关联的存储器空间分配和控制功能的框图。

图6是图示出根据本发明优选实施例用于基于硬件的虚拟化系统的虚拟机退出(VM退出)与虚拟机进入(VM进入)转移通路的框图。

图7A和7B示出了帮助图示出指令流内特权依赖指令序列的VT处理和二进制翻译之间差异的示图。

图8是根据本发明一个或多个实施例实现多个虚拟化技术(特别地,是在二进制翻译技术和VT技术之间)的动态选择和应用的虚拟机监视器的主要功能组件的框图。

图9是详述根据本发明一个或多个实施例的性能监视器的操作的框图。

图10A、10B和10C提供了根据本发明一个或多个实施例将多个虚拟化技术(特别地,二进制翻译和VT)应用于指令流内的特权依赖指令序列的图解表达。

图11是图示出执行动态的块导向的多虚拟化技术选择与应用的本发明第一优选实施例的流程图。

图12是图示出执行动态的热通路导向的多虚拟化技术选择与应用的本发明第二优选实施例的流程图。

图13是图示出根据本发明实现多个虚拟化技术之间动态转移的方法的优选实施例的流程图。

具体实施方式

本发明的一个或多个实施例提供了对选择虚拟化技术的优化,该优化在虚拟机监视器中实现,用来支持虚拟机的执行。出于简化下文详细说明的目的,相似的参考标号被用来指代一个或多个附图中描述的相似部件。

图1是适于实现本发明一个或多个实施例的计算机10中的通用虚拟存储器系统的主要功能组件的框图。如图1所示,计算机10包括中央处理器单元(CPU)12、包含翻译后援缓冲器(translation look-aside buffer,TLB)16的存储器管理单元(MMU)14、以及基于随机存取存储器(RAM)的主存储器18,主存储器18提供对多个页表20和操作系统(OS)22的操作存储。如图1中进一步示出的,计算机10进一步包括直接存储器存取(DMA)控制器24、外围设备26、和存储器映射I/O设备28,其中DMA控制器24支持主存储器18、外围设备26(包括持久的程序与数据存储设备)和存储器映射I/O设备28之间的数据传送。如图1中进一步示出的,中断控制器30向CPU 12提供事件通知支持。出于本发明实施例的目的,计算机10的多种物理实现方案被认为是等同的,例如CPU 12代表多处理单元,包括潜在的多核处理器,并且存储器管理单元14实现例如包括非基于页表方案的其它存储器分配算法。本发明的实施例不限于特定CPU 12的体系结构或指令集。

CPU 12通过顺序处理从主存储器18读取的指令和数据流,用来执行程序,包括OS 22和同样驻留在主存储器18中的关联应用程序。如传统上的,指令流可能并且通常将涉及多个外围设备26(表现为位于硬件I/O地址空间内的硬件寄存器)和可通过主存储器地址空间的一部分访问的其它外围设备28之间的数据传送。中断控制器30向CPU 12提供外部事件的通知(通常由多个外围设备26、28产生),以由CPU 12调用专门的中断处理机来管理外围数据传送。

CPU 12传统上实现虚拟地址空间,其中虚拟地址空间可以具有多种不同类型的组织(例如线性的或分段的),并且使用MMU 14来提供虚拟至物理地址翻译。对于本发明的实施例,优选分段虚拟地址空间。并且,如传统上的,物理存储器在虚拟地址空间内被管理为页集合。这些页,如加载到主存储器18中的那样,可能不是物理连续的,尽管在虚拟地址空间中通常维护逻辑上连续的关系。在执行期间,CPU 12产生虚拟地址空间内的地址,以相对于主存储器18读取指令并传送有关数据。MMU 14负责确定对应页是否真的驻留在主存储器18中;如果未驻留该页,那么生成缺页异常。该异常被抓获作为CPU 12的中断,并且驻留在OS 22中的缺页异常处理机被执行以通常从外围持久存储设备26加载缺失的页。当页传送完成时,通过重新执行造成缺页的指令,程序的执行被恢复。名义上,MMU 14随后将确定该页是存在的,并且存储器存取将成功完成。

如下文进一步描述的,MMU 12传统上使用页表20将虚拟地址翻译成物理地址。页表20维护虚拟地址到物理页的映射,该映射通常使用分等级组织来实现,并且物理页包含对应的物理地址。在典型的虚拟存储器系统中,需要多个页表20存取以解决虚拟地址到物理地址的映射。TLB 16用做页表20条目的高速缓存,并且因此减少了虚拟存储器系统所需的外部存储器存取的数量。如果映射尚未在TLB 16中高速缓存,那么MMU 14必须执行页表查询(page table walk)以获取对所需物理页的正确引用。幸运的是,当CPU 12正在执行计算机程序时,大多数存储器存取将是关于主存储器18内有限数量的页。

图2A和2B的示图分别图示出x86体系结构系统中实现的虚拟地址以及使用页表将虚拟地址翻译成对应的物理地址。具体而言,图2A和2B图示出将32位虚拟地址40翻译成包含所寻址位置的物理存储器页的引用。在典型的实现方案中,虚拟地址40包括10位的页目录索引(PDIdx)42、10位的页表索引(PTIdx)44、以及12位的页偏移量46。如图2B的示图50所示,页目录索引42定义页目录表52中从标准x86控制寄存器CR3开始的偏移量以定位具体页目录条目(PDE)54。页目录条目54标识出一组页表20中的页表56。页表索引44被用来选择标识出特定物理页60的特定页表条目(PTE)58。偏移量46定位所选页表60中的特定寻址数据62。

基于页目录索引42和页表索引44的值,TLB 16被MMU 14用来高速缓存每个明确虚拟地址翻译的结果。从而,在执行显式虚拟地址翻译之前,MMU 14检查TLB以找到与页目录索引42和页表索引44的组合值相匹配的条目。匹配的结果将是对应存储器页60的物理地址。随后需要单个偏移量46的偏移访问以获取实际数据。相反地,如果没有找到匹配,那么要求MMU 14执行查询页表20所需的多个存储器存取,以定位并评估页目录和页表52、56之间的映射关系。页表查询的最终结果具体而言,即页表条目58的值与对应的页目录索引42和页表索引44一起被存储在TLB 16中。

图3是图示出如计算机10支持的CPU 12所支持的虚拟地址空间中描述的多个虚拟机的逻辑表示70的框图。如图3中所示,虚拟机721-N中的每个封装客户操作系统(相应的客户操作系统741-N),客户操作系统进而支持应用执行空间(相应的应用执行空间761-N)。对于本发明的优选实施例,客户操作系统74可以是WindowsTM、LinuxTM和基于NetwareTM的操作系统的类似或不同实例。其它客户操作系统可以等同地使用。根据本发明的优选实施例,虚拟机721-N中的每个由虚拟机监视器(相应的虚拟机监视器781-N)管理,虚拟机监视器在内部实现支持多个不同虚拟化技术所需的可执行组件。虚拟机721-N和虚拟机监视器781-N优选地被实现在由VMware公司(加利福尼亚州,Palo Alto市)制造并销售的ESX服务器产品版本中。对ESX服务器产品的具体使用在本发明实施例的实施中并不是必需的。

对于本发明的优选实施例,虚拟机监视器781-N中的每个提供二进制翻译和基于VT的虚拟化支持两者。在本发明的替代性实施例中,虚拟机监视器781-N中的一个或多个可以仅实现或者额外包括对超虚拟化的支持,其中客户操作系统741-N中的对应操作系统已被修改以直接利用由虚拟机监视器781-N中的对应虚拟机监视器提供的超虚拟化支持。在虚拟机监视器781-N的实例内提供对多个虚拟化技术的支持,并结合使能在这些虚拟化技术之间的动态切换的组件,使得本发明的一个或多个实施例能够独立优化每个虚拟机721-N的执行,其中优化的每个虚拟机721-N的执行适于客户操作系统741-N中的特定客户操作系统以及在对应虚拟机721-N内执行的应用程序的具体操作行为。

图4A示出了根据本发明优选实施例使用的二进制翻译特权模型80。对于基于x86的处理器,2位定义的特权保护系统定义级别或环-0用于最具特权的软件,以及级别或环-3用于最少特权的软件。特权位被定义为分段寄存器值的一部分,该分段寄存器值被分配给功能上包含客户操作系统741-N和虚拟机监视器781-N的存储器分段。如所公知的,特权级别确定面向系统功能的指令在由处理器执行时是否将产生特权异常。特权级别还控制某些控制寄存器(包括页表指针和分段寄存器)是否可在不产生特权异常的条件下修改。对于传统操作系统执行在环-0特权级别的情形,如图4中所示的优选二进制翻译特权模型80,虚拟机监视器781-N执行在环-0下。在虚拟机监视器781-N的控制下,客户操作系统741-N的多个部分在相同或较弱的特权级别处执行。执行特权级别由虚拟机监视器781-N基于应用于客户操作系统741-N的对应部分的具体二进制翻译来确定。如图4A中进一步示出的,在虚拟机721-N的应用执行空间761-N内执行的应用程序在环-3处执行。

对于本发明的优选实施例,虚拟机721-N内的虚拟机监视器781-N、环-3执行的应用和客户操作系统741-N的功能分离是如美国专利6,397,242“Virtualization System Including a Virtual Machine Monitor For a Computerwith a Segmented Architecture”(该专利被授予给Devine等人,并被转让给本发明的受让人)中描述的那样执行的,该专利通过引用结合于此。简言之,在分配给虚拟机721-N的特有地址空间中,包含虚拟机监视器781-N的分段被分配给高存储器地址,并且客户操作系统741-N分段被分配给低存储器地址。通过截断关于每个虚拟机721-N保持的适当分段控制寄存器值,个体客户操作系统741-N可用的存储器空间被限制,以防止与虚拟机监视器781-N的分段地址空间相重叠。根据本发明的一个或多个实施例,通过适当重写与不同分段相关联的特权控制位,所分配的客户操作系统741-N特权级别可以被分别修改。

为确保个体客户操作系统741-N和虚拟机监视器781-N以及进一步虚拟机721-N之间的功能分离,虚拟机监视器781-N管理客户操作系统741-N对存储器页的分配与使用。通常,每个客户操作系统741-N将预期能够访问CPU 12的完整虚拟地址空间。为保护地址空间的一致性,虚拟机监视器781-N主动限制客户操作系统741-N访问或分配虚拟机监视器781-N或其它虚拟机721-N内的存储器。这是通过每个虚拟机监视器781-N建立代表相应客户操作系统741-N的存储器内数据结构和多个CPU上寄存器的阴影结构而实现的。这些数据结构限制客户操作系统741-N可以访问CPU 12的虚拟地址空间的方式和程度。具体而言,阴影结构被维护用于在客户操作系统741-N所执行的分段和页表管理中涉及的客户级别主要数据结构。

图5是示出了根据本发明一个或多个实施例与多个虚拟机721-N的执行相关联的存储器空间分配和控制功能的框图。如图5所一般指示的,x86体系结构100包括CPU上寄存器,其存储指向全局描述符(GDT)、局部描述符(LDT)和中断描述符(IDT)表102的地址指针。全局描述符表名义上存储分段描述符,其中每个分段描述符标识出存储器分段、对应的两个位的分段特权级别值、以及分段读/写许可。客户操作系统741-N对客户操作系统741-N的全局描述符表(GDT)、局部描述符表(LDT)和中断描述符表(IDT)102或对CPU上描述符表寄存器的访问,特别是写访问,导致特权异常。当这种异常被虚拟机监视器781-N中的一个捕捉时,阴影寄存器或数据结构102′被引用以使能操作的正确功能仿真。在当前优选的实施例中,IDT表不是被直接阴影化的。相反,对于客户操作系统741-N中对应的每一个,虚拟机监视器781-N响应于IDT修改异常适当地读取并变换IDT表内容的逻辑表达。作为仿真的一部分,存储器分段的创建和后续的修改可以由虚拟机监视器781-N主动监视,以确保存储器空间一致性被维持。

如图5中进一步示出的,x86体系结构100还采用页表104来管理分段地址空间内的虚拟到真实地址的翻译。虚拟机监视器781-N维护页表104,页表104定义对应虚拟机监视器781-N实例的操作环境。阴影页表106通常与客户操作系统741-N的对应一个中实现的客户页表106′同时被维护。访问通过页表106′标识的存储器页的一般操作系统动作通过使用特权控制系统而被捕捉。捕捉操作允许虚拟机监视器781-N首先准予并且在适当的情况下加载或以其它方式管理被访问存储器页的可用性。即,当客户操作系统741-N之一请求的存储器页基于阴影页表106被确定为并非由虚拟机监视器781-N中的对应一个提供的时候,访问被准予,并且视情况对应页由虚拟机监视器781-N中的这个操作系统所加载。阴影和客户页表106、106′均被更新。客户操作系统741-N中的这个操作系统的执行随后被恢复,同时所请求的页被发现。反之,当如虚拟机监视器781-N所确定的那样,对所请求页的访问是不适当的,适合的访问异常错误被转发给客户操作系统741-N中的对应一个,以适合于客户操作系统741-N中的这个操作系统而进行处理。

图4B示出了根据本发明优选实施例使用的优选VT特权模型90。在功能上,VT特权模型90定义用于CPU 12的VMX根92和VMX非根94,其中每个进一步由一组环-0、1、2、3特权级别代表。VMX非根94相对于VMX根92被去特权,而与特权级别无关,以使能用于传统上不调用特权捕捉的某些x86体系结构指令和事件的捕捉支持。否则,VMX非根94运行为传统x86特权模型。这允许虚拟机监视器781-N在VMX根92的环-0特权级别下执行,并具有对平台资源的完全控制,而虚拟机721-N的应用执行空间761-N内的客户操作系统741-N和应用程序在VMX非根94内他们期望的特权级别下执行。

图6是图示出根据本发明优选实施例用于基于硬件的虚拟化系统的虚拟机退出(VM退出)与虚拟机进入(VM进入)转移通路的框图110。参考图6,VMX根92特权级别的功能是以其他方式捕捉特权依赖x86指令。通过在VMX非根94的环-0级别处执行客户操作系统741-N,许多特权依赖问题被避免。然后,通过向在VMX根92环-0特权级别中执行的虚拟机监视器781-N的硬件发起的转移,其余的特权依赖行为被处理。具体而言,VT提供了特权捕捉,其在发生特权寄存器写、受保护存储器访问以及系统中断事件时,强制执行虚拟机退出转移。从而,从虚拟机内的客户操作系统741-N之一的名义VM执行状态112,硬件实现的VM退出转移程序规定将CPU 12状态保存到虚拟机控制结构(VMCS)114。CPU 12的受保存状态中包括引起调用VM退出转移的其他事件或指令的指示符。CPU 12的受保存状态中还包括其他虚拟机状态信息,例如虚拟机721-N之一使用的分段寄存器的描述符高速缓存的内容。如本领域普通技术人员很容易想到的那样,这有效使能了虚拟机监视器781-N中的相应一个检查在VM退出转移发生的时点上的客户操作系统741-N中的相应一个的执行上下文。

当虚拟机721-N中的一个正在执行的时候,虚拟机控制结构114还被用来存储虚拟机监视器781-N中的相应一个的操作状态。然后,虚拟机监视器781-N中的相应一个的状态被复原到CPU 12,以完成VM退出转移程序并允许虚拟机监视器781-N开始执行(在116处启动)。恢复的执行使得虚拟机监视器781-N中的一个能够检查并酌情管理引起VM退出转移的条件。对于VM退出转移的最常见根源,所需的虚拟机监视器动作是管理对客户操作系统741-N中的相应一个可用的存储器空间分配,以在最初处理并在功能上将中断在不同虚拟机721-N之间路由,并且通过定义的I/O端口26和映射I/O地址28管理编程数据传送。

一旦虚拟机监视器781-N完成了VM退出转移之后所需的监管任务,虚拟机监视器781-N就调用VM进入转移程序。VM进入转移程序是通过将当前虚拟机监视器781-N状态存储到虚拟机控制结构114并将虚拟机控制结构114中存在的虚拟机状态复原到CPU 12而实现的。相应客户操作系统741-N的执行随后被恢复。

发明人认识到,用于虚拟化完整计算系统的不同虚拟化技术呈现不同的依赖于工作负荷的性能特性,其反应在支持客户操作系统(例如,图3中示出的客户操作系统741-N)的执行时的不同效率。此外,不同虚拟化技术的总体性能成本还将依赖于虚拟机监视器(例如,图3中示出的虚拟机监视器781-N)被访问以支持客户操作系统741-N的虚拟化的频率。即,部分依赖于虚拟机(例如,图3中示出的虚拟机721-N)中呈现的客户操作系统的类型,并且部分依赖于呈现给虚拟机721-N的用户请求的级别和性质以及执行的具体应用,通过适当选择由虚拟机监视器781-N实现的虚拟化技术,可以实现性能的质的改进。

图7A和7B示出了帮助图示出指令流内特权依赖指令序列的VT处理和二进制翻译之间差异的示图120。如图7A所一般指示的,对于程序指令流122的给定部分,包含特权依赖指令的序列126的二进制翻译124引起来自多个来源的明显开销。传统开销包括二进制翻译过程124自身(即,典型地执行功能上仿真特权依赖指令所需的额外处理器指令),以及监视或以其他方式管理执行用翻译后代码的选择的持续成本。如图7B中对比性指示的相同程序指令流122,基于VT的虚拟化带来不同的传统开销。在执行特权依赖指令时,所需的VT处理128带来相对显著的实现VM退出和随后VM进入转移的开销,以及发生于其间的标识和功能上执行特权依赖指令所需的仿真例程和异常处理机的执行。

尽管翻译后序列126的初始二进制翻译124的性能成本显著,但是在频繁执行序列126的环境中,时间平均的性能成本会相对较小。相反,如果指令流122在虚拟机(例如,虚拟机721-N之一)的持续执行中很少被执行,那么VT虚拟化会是优选的。可以使用性能成本分析来比较特权依赖指令的每次执行中的VM退出与VM进入转移的开销成本和初始二进制翻译124的成本以及管理翻译后序列126的存储器镜像的相关成本。

如发明人所进一步认识到的,(a)在不同虚拟机721-N之间;(b)取决于基于时间的加载因素;以及(c)取决于具体特权依赖指令所面临的特定性质和上下文,对最优虚拟化技术的正确选择将变化。根据本发明的第一优选实施例,在发生明确定义的事件时,或者结合如果事件频率超过时基阈值则事件实例可以被有选择地略过的情形,性能成本因素可以以时基间隔被累积并被分析。当执行分析时,由虚拟机监视器(例如,虚拟机监视器781-N之一)为其对应的虚拟机(例如虚拟机721-N中的对应一个)选择并实现很可能是最优的虚拟化技术。

根据本发明的第二优选实施例,额外的性能成本因素被收集,以标识出执行客户操作系统(例如,客户操作系统741-N之一)时面临的时间本地、引起开销的操作的可预知代码执行通路的存在。如发明人进一步认识到的,包含特权依赖指令的某些模式的指令序列是机器可识别的并且是可预知的。时间本地指的是特权依赖指令序列,尽管不必是连续的,但是相对于涉及的虚拟化开销,以有序的模式彼此非常接近地发生。即,包含非重叠子模式的模式,如果单独考量,可以在不同加载条件下在性能方面使用不同的虚拟化技术来最优处理,子模式优选地被认为是时间上分离的。时间本地性因此部分依赖于涉及的特定模式。与第一优选实施例类似,当模式被可预知地识别时,由虚拟机监视器(例如,虚拟机监视器781-N之一)为其对应的虚拟机(例如虚拟机721-N中的对应一个)选择并实现为该模式确定的成本最优虚拟化技术。

图8是根据本发明一个或多个优选实施例实现多个虚拟化技术(特别地,是在二进制翻译技术和VT技术之间)的动态选择和应用的虚拟机监视器78的主要功能组件(即,主要体系结构)的框图。如图8所示,虚拟机监视器78优选地包括二进制翻译组件124和VT处理组件128两者。二进制翻译组件124优选地被实现支持动态评估以及向翻译高速缓存的指令流的选择性二进制翻译以作后用。这样的二进制翻译组件在Bugnion的名为“Dynamic Binary Translator with a System and Method for Updating andMaintaining Coherency of a Translation Cache”的美国专利号6,704,925中进行了描述,该专利已转让给本申请的受让人,该专利在这里通过引用结合于此。

二进制翻译组件124包括地址/指令流处理器132,地址/指令流处理器132在由CPU 12执行稍前的时候接收指令流。二进制翻译单元134检查指令流的增量部分,以解码并标识出特权依赖指令的发生。在发现的情况下,本地指令流被进一步分析,并且在功能上被修改,以以去特权执行的方式实现预期的指令。优选地,该修改是通过重写指令流以在不涉及特权异常的条件下实现预期功能而实现的。指令流重写可以包括直接替换直接执行想要功能的替代性指令序列、插入适合的跳转指令以调用一个或多个预建立的库调出例程136以完成想要的功能、或者两种翻译技术的结合。最终翻译后的指令流,进一步结合适当的相对分支目标修改,随后被存储在翻译高速缓存138中。原始指令流未被修改。客户操作系统(例如,客户操作系统741-N之一)的执行被监视,效果是无论何时未经修改的原始指令流以其他方式被获取用于执行的时候,作为替代,翻译后的指令流被获取并被执行。

VT处理组件128优选地包括VM退出处理机140、VM进入处理机142以及监管虚拟化处理器144。VM退出处理机140和VM进入处理机142的功能和操作记载在例如英特尔公司2006年2月用于应用I/O体系结构的虚拟化技术规范中(序号D51397-001)、英特尔公司2005年4月用于IA-32体系结构的虚拟化技术规范中(序号C97063-002)、以及英特尔公司2005年4月用于体系结构的虚拟化技术规范(VT-I)中(序号305942-002)。简言之,VM退出处理机140和VM进入处理机142负责管理虚拟机控制结构114(参见图6),并且负责读取退出并且酌情对虚拟机(例如,虚拟机721-N之一)的进入上下文进行编程,以支持所面临的特定特权依赖指令的仿真。监管虚拟化处理器144用来标识出触发VM退出的特权依赖指令以及启动指令的执行的客户操作系统(例如,客户操作系统741-N之一)上下文的相关细节。在本发明的优选实施例中,监管虚拟化处理器144优选地以类似于二进制翻译单元134的方式实现该分析。即,一旦指令和上下文被标识出,监管虚拟化处理器144优选地确定并酌情调用与库调出例程136类似(如果不是相同的话)的库例程,以在功能上实现特权依赖指令。

图8中示出的性能监视器146优选地代表虚拟机监视器(例如,虚拟机监视器781-N之一)的以下设备,其收集、加总并概括虚拟机监视器在向其关联的虚拟机提供虚拟化支持时的持续性能。尽管该设备的细节基于虚拟机监视器的具体实现而将不同,但是相对于本发明的第一优选实施例,该设备优选地用做在一定时间间隔测量:例如在获取程序流指令用于翻译时引起的时间和资源成本、执行翻译所使用的时间和翻译高速缓存的大小和相对使用、以及在执行翻译后的指令流时所需的执行时间的相对增加。该设备优选地还考量:执行VM退出和进入转移的时间成本(其可以是预先计算的或是直接测量的)、以及监管虚拟化处理器144检查并仿真个体特权依赖指令所需的时间和资源。对于本发明的第二优选实施例,如下文将更加详细地描述的那样,面临的不同特权依赖指令的频率、相对位置以及身份也被收集。对于所有实施例,指令流的任何部分被重复面临的频率也被性能监视器146识别和记录。

虚拟化技术控制组件148与性能监视器146交互操作,以标识出用于关联虚拟机的特定操作环境的最优虚拟化技术,并且在需要的情况下,相应地改变虚拟机实现的特权模型。对于本发明的第一优选实施例,最优虚拟化技术的选择以一定时间间隔被重新考量,时间间隔可以由时间、事件的发生定义,或者可以是无论何时已经收集到设备数据的定量测量。在确认通过切换将要实现的预期性能收益将超过定义的阈值时,就实现虚拟化技术之间的切换。该阈值可以凭经验确定以最大化总体性能收益,并且可以受虚拟化技术控制组件148调节。

对于本发明的第一优选实施例,最优虚拟化技术的实际计算优选地由以下开销的相对差值确定:(a)设备确定的由当前采用的虚拟化技术引起的实际性能开销;以及(b)其他虚拟化技术在相同时间间隔内执行相同指令流时将引起的估计性能开销。该计算优选地还包括在当前和估计的虚拟化技术之间切换的估计性能成本。如果确定存在性能的净改善,优选地超过凭经验确定的阈值,那么虚拟化技术控制148将虚拟机监视器实现的虚拟化技术切换到被确定具有最高净性能改善的虚拟化技术。优选地,虚拟机监视器78的设备还监视所选虚拟化技术的改变率,以控制由于过度或过快切换虚拟化技术造成的总体性能损失。

对于本发明的第二优选实施例,虚拟化技术控制组件148基于当前热执行通路的标识选择最优虚拟化技术。图9是详述根据本发明一个或多个实施例的性能监视器146的操作的框图。如图9的示意性表达150所示,性能监视器146包括性能数据存储装置152,性能数据存储装置152连续接收并存储从虚拟机监视器(例如,虚拟机监视器781-N之一)收集的设备数据。至少对于本发明的第二优选实施例,性能监视器146还包括模式分析引擎154和模式数据存储装置156,这些组件被性能监视器146用来利用时间本地化模式识别当前热执行通路的开始。优选地,多个公知的或预期的模式被预先存储在模式数据存储装置156中。通过性能监视器146和模式分析引擎154的持续操作,主要基于发生的相对计时和相对位置,额外的热执行通路模式被动态识别并且被存储到模式数据存储装置156。即,模式分析引擎154优选地用来识别由具体标识的指令引起的重复虚拟化操作发生,其中由具体标识的指令基于可从虚拟机上下文确定的所捕捉指令地址是时间本地的,并且以一致的顺序被重复面临。

虚拟化技术控制组件148还与第二优选实施例的性能监视器146交互操作以评估替代性虚拟化技术。通过加总将通过热执行通路执行的虚拟化操作的性能开销,并选择具有最低依赖于通路的总开销的虚拟化技术,来确定用于特定热执行通路的优选虚拟化技术。对于公知的热执行通路,性能计算可以甚至在虚拟机(例如,虚拟机721-N之一)的执行之前被执行并被存储到模式数据存储装置156。对于新发现的模式以及公知模式的变体,优选地一旦模式分析引擎154标识出该模式就执行计算。模式和优选虚拟化技术随后优选地被存储到模式数据存储装置156,用于后续参考。

热执行通路的虚拟化技术选择优选地被动态重估并酌情改变。多种条件可造成相对于具体热执行通路的不同虚拟化技术的相对成本的改变。这些条件包括高速缓存命中率和TLB的改变、以及虚拟机监视器相对于其对应客户操作系统实现的设备的改变。在重估热执行通路时,例如使用随机取样技术进行选择,测量的开销成本可以与存储在模式数据存储装置156中的现有成本值平均。对应热执行通路的虚拟化技术的选择随后可以取决于修改的成本而改变。

图10A、10B和10C示出的示意性表达160图示出根据本发明优选实施例将多个虚拟化技术(特别地,二进制翻译和VT虚拟化技术)应用于指令流内的其他特权依赖指令序列。出于本示例的目的,VT虚拟化优选被设为缺省且最初的当前虚拟化技术。如图10A所示,指令流162的一部分被示出,其中一组虚拟化操作(A、B、C、D、E、F)发生,每组代表特权依赖指令的位置。如图10A所示,虚拟化操作的每次发生由VT处理组件128离散地处理。因此,如果在执行对应客户操作系统(例如,客户操作系统741-N之一)时频繁面临指令流162,那么频繁的VM退出和VM进入转移带来相当大的性能成本。参考图10B并考虑本发明的第二优选实施例,足够的性能数据被收集以支持以虚拟化操作(B)开始的模式的识别。(A)处的虚拟化操作可能不会被识别为模式的一部分,因为该虚拟化操作在时间上离后面的虚拟化操作太远,或者可能不一定会发生,从而不能用来预测模式。因此,(A)处的虚拟化操作优选地与之前一样由VT处理组件128离散地处理。

如图10B所示,(B)处的虚拟化操作最初由VT处理组件128捕捉。然而,响应于虚拟化操作(B)VM退出转移的进入(参考图6)之后的虚拟机监视器(例如,虚拟机监视器781-N之一)内的性能监视器146和虚拟化技术控制148(参见图9)的执行造成选择二进制翻译虚拟化技术,用于进一步处理指令流162,优选包括(B)处的虚拟化操作。为此,特权模型被切换,并且二进制翻译组件124被调用来处理指令流162,以在功能上翻译(B’)虚拟化操作(B、C、D、E、F)。

如图10C所示,在随后执行指令流162时,指令流162的二进制翻译(B’)名义上可用于从翻译高速缓存138(参见图8)立即执行。由虚拟化操作(B)启动的模式的识别优选地造成立即向二进制翻译的虚拟化切换、以及指令流162的翻译后部分(B’)的执行。从而,利用(B)处的虚拟化操作开始的模式的二进制翻译的预先计算的偏好,仅仅引起切换虚拟化技术的最小性能成本,以最大化指令流162的给定部分的潜在执行性能。

再次参考图10B,在确定何时以及如何从所选的二进制翻译虚拟化技术返回到缺省VT虚拟化技术时涉及若干不同考量。在识别(B)处开始的热执行通路模式时,模式分析引擎154(参考图9)还可以识别出结束(F)处的虚拟化操作的明确模式。因此,二进制翻译后片段(B’)的末端部分可以简单地加入切换到缺省VT虚拟化技术所需的指令。或者,作为生成二进制翻译后代码的一部分,二进制翻译单元134(参见图8)将确保适当的库调用例程136(参见图8)被从所生成的代码调用,以引起性能监视器146和虚拟化技术控制组件148(参见图9)的适当频率的执行。当没有明显的其他时间本地的虚拟化操作时,虚拟化技术控制组件148优选将启动回到缺省VT虚拟化技术的切换。另一替代方案,或此外,当二进制翻译器组件124识别出来自中断(IRET)指令的返回的即将执行时,虚拟化技术控制组件148将启动向VT虚拟化技术的切换,并且通过执行VM进入转移使能该返回。

图11是图示出执行动态的块导向的多虚拟化技术选择与应用的本发明第一优选实施例的流程图170。对于此实施例,对于任何向虚拟机监视器(例如,虚拟机监视器781-N之一)的进入,在判决步骤172,性能监视器146首先将确定是否重新考量当前虚拟化技术的使用。评估重新考量的当选标准可以简单地看自从执行上次评估之后是否已经过足够的时间间隔。另一种可能的标准是自上次评估起收集的性能数据的量是否足够保证进行重新考量。其他标准可以包括相对于虚拟机执行客户操作系统和客户应用程序(例如,客户操作系统741-N之一及其对应的客户应用程序)花费的时间所请求的重新考量的频率。如果重新考量的标准未被满足,那么按需在步骤174继续虚拟机监视器的执行,以支持任何未完成的虚拟操作。一旦完成仿真,就退出虚拟机监视器的执行。

如果重新考量的标准被满足,那么控制被传送到步骤176,在步骤176,性能监视器146和虚拟化技术控制组件148交互操作以分析性能数据176,并且在步骤178,确定最优或优选的虚拟化技术。在步骤180,虚拟化技术控制组件148随后通过按需调节特权模型并使能虚拟机监视器内的适当虚拟化操作控制,来实现所选的虚拟化技术。控制被传送到步骤174,在步骤174,虚拟机监视器随后执行适当的支持例程以实现任何未完成虚拟操作的功能要求。在完成仿真之后,就退出虚拟机监视器的执行。

图12是图示出执行动态的热通路导向的多虚拟化技术选择与应用的本发明第二优选实施例的流程图190。对于此实施例,对于向虚拟机监视器(例如,虚拟机监视器781-N之一)的每次进入,在步骤192,相对于预期要执行的程序流,考量切换虚拟化技术的潜在可能。客户操作系统的虚拟机上下文数据被从虚拟机控制结构获取,并且控制被传送到判决步骤194。在判决步骤194,虚拟机控制结构中提供的信息被检查。具体而言,地址位置和指令被模式分析引擎154标识并使用,以确定捕捉启动的指令是否代表识别出的热执行通路的开始。如果未被识别出并且虚拟地址位置不在时间上靠近任何在前记录的性能数据,那么控制被传送到步骤196,在步骤196,虚拟机监视器执行被捕捉指令的适当仿真,其与当前有效的虚拟化技术一致。在判决步骤194,如果模式分析引擎154识别出热执行通路,那么控制被传送到步骤198。在步骤198,对应的优选虚拟化技术被应用,并且控制被传送到步骤196,在步骤196,被捕捉指令的仿真被执行。

根据本发明的一个或多个这样的实施例,在步骤196处虚拟机监视器的仿真操作中面临每个特权依赖指令的时候,通过递归检查热执行通路的识别,监视子通路或嵌套的热执行通路的潜在可能。出于本发明一个或多个实施例的目的,子通路被另外定义为嵌套在连续热执行通路中的热执行通路,其中嵌套的通路优选地使用与最接近外层的热执行通路不同的虚拟化技术而被执行。虚拟化栈优选被维护以跟踪嵌套的热执行通路和外层热执行通路的叠栈式序列之间的转移。即,在步骤198,在子通路被面临并且随后到达定义末端的时候,外层热执行通路虚拟化技术标识符被从虚拟化栈推出,以管理当前实现的虚拟化技术的选择。

最后,在判决步骤194,如果热执行通路未被识别,但是基于现有的性能和模式数据,这样的通路可能会存在的时候,控制被传送到判决步骤200,在判决步骤200,当前性能数据集被分析。如果热执行通路模式未被标识出,那么控制被传送到步骤196,在步骤196,使用现有的虚拟化技术执行对被捕捉指令的仿真。如果新模式被动态标识出,那么控制被传送到步骤202,在步骤202,计算最优虚拟化技术,并且模式和所确定的最优虚拟化技术均作为模式数据被存储到模式数据存储装置156(参见图9)中,并且控制被传送到步骤198。在步骤198,应用新标识出的虚拟化技术,并且控制被传送到步骤196。在步骤196,执行被捕捉指令的仿真。一旦完成仿真,包括任何子通路,则退出虚拟机监视器的执行。

图13是图示出根据本发明实现多个虚拟化技术之间动态转移的方法的优选实施例的流程图209。对于每个这样的优选实施例,二进制翻译和VT虚拟化技术在虚拟机监视器(例如,虚拟机监视器781-N之一)中被实现。在步骤198(还可参考图12),在确定将有效虚拟化技术切换到目标虚拟化技术时,如果二进制翻译被选择,那么控制被传送到步骤210,否则,如果VT虚拟化技术被选择,那么控制被传送到步骤212。对于二进制翻译,在步骤214,VT处理组件128被禁用而二进制翻译组件124被使能(参见图8)。在步骤216,处理器状态寄存器的VMX特权位被重置,并且与虚拟机监视器(例如,虚拟机监视器781-N之一)及其对应客户操作系统(例如,客户操作系统741-N之一)相关联的分段寄存器中维护的特权位被修改以建立标准二进制翻译环-0、1、3特权模型80(参见图4A),用于对应虚拟机(例如,虚拟机721-N之一)的执行。

如果VT虚拟化将要被启动,则在步骤218,二进制翻译组件124的操作被挂起。具体而言,翻译高速缓存138和阴影页表106的内容被维护。随后,VT处理组件128的操作被使能。在步骤220,处理器状态寄存器的VMX特权位被设置,并且与虚拟机监视器及其对应客户操作系统相关联的分段寄存器中维护的特权位被修改以建立标准VMX非根环-0、3特权模型90(参见图4A),用于对应虚拟机的执行。

在虚拟化技术之间切换时,可以通过复查相应客户操作系统741-N的存储器内数据结构和多种CPU上寄存器,确定所选虚拟化技术的当前虚拟机状态。优选地,虚拟化技术控制组件148提供不同虚拟化技术所使用的虚拟机状态表达之间的转换。具体而言,虚拟化技术控制组件148提供二进制翻译虚拟化最优使用的多种存储器内数据结构和支持VT虚拟化所需的硬件依赖数据结构之间的转换。优选地,一般和分段寄存器、中断状态、分段寄存器的阴影部分、控制寄存器以及CPU状态其他方面的虚拟化状态描述被传送。对于本发明的优选实施例,虚拟机状态在二进制翻译虚拟化数据结构中被维护,并且受VT虚拟化数据结构变化的影响按需更新。

为此,已经描述了提供动态优化虚拟机的现实执行性能的自治系统和方法。尽管本发明的实施例是具体参考基于Intel的虚拟化技术进行描述的,但是本发明的其他实施例可以同样应用于其他基于硬件的虚拟化技术,以及虚拟机监视器内多种不同软件和硬件虚拟化技术的使用及之间的选择。

考虑到本发明优选实施例的以上说明,本领域普通技术人员将很容易想到公开实施例的多种修改和变化形式。因此,应当认识到,在权利要求的范围内,本发明可以与上文具体描述不同的方式实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号