一种基于处理器分区技术的cpu虚拟化方法

文档序号:6598067阅读:605来源:国知局

专利名称::一种基于处理器分区技术的cpu虚拟化方法
技术领域
:本发明提出一种CPU虚拟化方法,尤其涉及面向多核或众核平台的,基于处理器分区技术的CPU虚拟化方法,属于计算机操作系统与虚拟化
技术领域

背景技术
:随着信息产业的发展,各行各业对运算能力的要求不断提高。与此同时,受微电子生产工艺的限制,传统的通过提高电路集成度、CPU主频的方法,已经不能解决诸如设计复杂性、芯片功耗、电路漏电流、CPU散热等问题。因此,越来越多的处理器生产厂商转向单芯片多处理器(CMP,ChipMulti-processing)技术与同时多线程(SMT,SimultaneousMulti-Threading)技术,利用处理器的线程级并行来提高单个处理器封装内的处理能力。目前SUN公司业已推出了集成有32个线程的服务器处理器Niagara2,Intel公司也已经设计出集成有32个处理器核心的图像处理芯片Larrabee,目前个人桌面、商业服务器领域已经普及了Intel与AMD公司的双核、四核等处理器产品,在科学计算领域更是在一块主板上部署多个多核处理器,在单个计算机系统中,处理器核心数量比之前大为增长。可以预见,未来的单个处理器封装中将会集成有更多的处理器核心或处理器线程,其应用领域将广泛覆盖服务器、高性能计算、图像处理、嵌入式系统等领域,未来多核平台将向单芯片中封装有更多的处理器核心的众核平台发展。随着计算能力的不断提高,为保证安全与隔离的前提下,充分利用系统计算资源,虚拟化技术应运而生,其基本思想是利用虚拟机监视器(VMM)对底层硬件资源进行管理,同时对上层提供多个彼此隔离的虚拟执行环境,这些虚拟的硬件执行环境成为一个虚拟机(VirtualMachine,简称VM),从而使得一个物理主机上可以同时运行多个不同的客户机操作系统。早在20世纪60年代,IBM便在360系列大型机上使用了系统虚拟化技术,将服务器资源以复用的形式分配给多个用户。近年来,虚拟化技术在服务器整合、服务隔离、软件部署、科学计算和安全容错领域都有了广泛的应用。目前已经出现了多个成功的虚拟化项目,包括V丽are公司的V丽areServer与Workstation等版本,Sun公司的SolarisContainer等,以及开源社区的KVM和Xen等。目前大部分现有虚拟化技术,通过在原有系统软件(操作系统)与硬件平台(裸机)之间插入软件薄层,使用直接执行、动态二进制翻译(DynamicBinaryTranslation)、硬件辅助虚拟化(Hardware-assistedvirtualization)或者泛虚拟化(Para-virtualization)技术,来实现多个客户机操作系统在多核平台上的并行运行,从而提高了CPU的整体利用率,并可以降低成本、简化管理、提高安全性与可靠性等。虚拟机系统由V匪进行控制,其上提供了多个相互独立的域(Domain),每个域中都包含有完整的虚拟硬件执行环境,提供的基本计算资源包括处理器、存储器和设备,用来运行各自的客户机操作系统并承载实际的计算任务。域之间的资源分配与任务调度由VMM控制,并负责彼此之间的隔离与保护。为了利用多核处理器带来的性能上的改进,现有虚拟化系统大都沿用原有操作系统的对称多处理器(SMP,SymmetricalMulti-Processing)系统的支持方式,并不能完全利用多核平台的线程级并行技术带来的性能改善,同样也无法利用众核平台的线程级并行的改进。典型的如Xen中的Credit调度算法,VMM控制系统中所有的CPU核心,为每个CPU核心建立一个调度队列,全局地按照预先设计的CPU分配比例为每个Domain分配对应比例的CPU时间,并按照时间对应的优先级,在每个CPU队列中由高至低的调度所有Domain。当某个CPU上负载过重时,VMM负责将其上的任务在全局寻找一个稍微空闲的CPU核心,并将任务迁移到目标CPU核心。在CPU规模较小的情况下,这种全局的分配与管理策略是可以满足需求的,但是随着计算系统中集成处理器核心数的增加,这一方法很快就无法满足全局的分配与管理策略对应的急剧膨胀的计算量,最终无法满足系统在众核平台上的调度需求。同时,传统的CPU虚拟化方法,由VMM统一对所有CPU进行管理,并将它们按照一定的调度策略分配给不同的客户机应用,并没有体现出不同客户机应用所具有的不同特权级要求。例如,在Xen中,存在DomainO等特权Domain,承担诸如管理视图、Domain创建、设备模型、后端驱动等功能,而这些功能中都存在特权代码,有些还需要运行在根用户模式。传统的CPU虚拟化方法,将特权Domain与通用客户机Domain放在一起,在全局的CPU视图上进行调度,会出现特权Domain与通用客户机Domain彼此抢占同一个CPU核心,在同一个CPU核心上交替执行,从而会导致系统整体可靠性的下降。此外,传统CPU虚拟化方法无法保证特权Domain能够拥有足够的计算资源,在一些情况下会在这些关键领域出现系统性能瓶颈。因此,有必要利用CPU分区技术将特权Domain所在的CPU与通用客户机Domain所在的CPU进行物理分割。此外,传统的CPU虚拟化方法,使用统一的调度策略,不能满足不同客户机应用的特性。由于计算能力的发展,为了提高系统的利用率,通常在实际多核或众核系统中会部署多种不同类型的通用客户机Domain。这些Domain中,有些应用对时间特性要求较高,需要采用响应时间参数较好的调度策略;有些应用对1/0或网络吞吐率要求较高,则需要采用对设备访问优化的调度策略。在通用客户机Domain所在的CPU分区中,我们可以进一步进行分区,为不同的通用客户机Domain的CPU分区分配不同的调度策略,从而为不同应用提供适合其特性的分离的运行环境。因此,如何充分利用多核或众核平台的系统处理器资源,提高系统的可靠性与安全性,同时优化系统的性能,适应更多的目标环境,支持更多的应用环境,成为在虚拟化技术中应用CPU分区技术所要解决的关键问题。
发明内容本发明提出了一种基于处理器分区技术的CPU虚拟化方法,该方法改进了现有虚拟机监视器CPU虚拟化的实现方式,将多核或众核平台下的CPU核心分为管理核分区与多个通用核分区,H-Core(Hyper-Core,管理核)分配有部分CPU核心,其上运行特权Domain与管理任务,,剩余的CPU核心作为G-Core(General-Core,通用核),并根据VMM中要运行通用客户机Domain的约束条件的不同类型分成了多个G-Core分区,并为不同的G-Core分区设置不同的调度策略,从而在不同G-Core分区中部署并调度不同类型的通用客户机Domain。本发明提出的一种基于处理器分区技术的CPU虚拟化方法,具体包括如下步骤步骤1:虚拟机监视器VMM对多核或众核平台的处理器资源分区,提供H-Core分区和多个G-Core分区;系统启动时,虚拟机监视器V匪将多核或众核平台中的处理器核心,划分为管理核H-Core与通用核G-Core两类CPU分区,其中通用核G-Core类分区,根据系统预期需要运行的通用客户机Domain的约束条件的不同类型,划分为对应数量的通用核G-Core分区,VMM为每个CPU分区构建数据结构CPU分区BITMAP(位图),在CPU分区BITMAP中记录该分区拥有的物理处理器ID,通过遍历CPU分区BITMAP来创建不同的CPU分区,不同CPU分区分配有数量不等的CPU核心,由VMM统一管理;步骤2:从VMM与Domain的管理相关功能与代码中分离出VMM中的管理任务H-Task与特权DomainH-Domain,将它们部署到步骤1中的管理核H-Core分区;步骤3:对多核或众核平台上运行的通用客户机Domain进行分类,并部署到对应的通用核G-Core分区;通用客户机Domain启动时,根据其自身的约束条件,被划分到不同的虚拟化任务子集中,然后,VMM将各虚拟化任务子集部署到步骤1中所划分的对应的通用核G-Core分区中;步骤4:通用核G-Core分区中构建调度子模块,并设计符合的调度策略;在系统运行过程中,V匪在每个通用核G-Core分区中构建调度子模块,各通用核G-Core分区的调度子模块,具有各自独立的调度队列与调度策略,负责调度分区内通用客户机Domain的运行,并负责维护本分区内的通用客户机Domain的资源分配,并配置符合其上运行的通用客户机Domain约束条件的各种策略;步骤5:在系统的运行过程中,V匪对通用核G-Core分区和虚拟化任务子集进行负载均衡;各通用核G-Core分区内任务调度、资源分配工作,由各分区内的调度子模块来完成,当通用核G-Core分区内计算资源出现故障或虚拟化任务子集发生变化的时候,VMM将虚拟化任务子集在通用核G-Core分区间进行调整,或者重新划分通用核G-Core分区,将虚拟化任务子集部署到新的通用核G-Core分区中。所述的约束条件,包括响应时间要求、设备访问特性、可靠性特性、安全特性。步骤3中所述虚拟化任务子集部署的方法,具体在通用客户机Domain启动的时候,V匪将该虚拟化任务子集中的通用客户机Domain与其分配的通用核G-Core分区之间建立映射关系,通过Domain结构体中CPU映射参数指定该客户机Domain能够运行的通用核G-Core分区BITMAP,从而使得一类虚拟化任务子集与对应的通用核G-Core分区绑定。步骤4中所述调度子模块调度分区内通用客户机Domain的运行,具体是针对通用核G-Core分区中运行的通用客户机Domain对应的VCPU(虚拟处理器)而进行的,VCPU被所在通用核G-Core分区的调度子模块分配到所在通用核G-Core分区中每个物理CPU对应的调度队列中,然后由每个物理处理器上的调度代码来对其进行调度。与现有技术相比,本发明具有以下的优点和积极效果(1)简化了多核或众核平台下CPU虚拟化的难度在多核或众核平台下,越来越多的CPU核心资源,大大提高了集中式管理所带来的计算复杂性,而大部分场景下,单个客户机Domain并不会占用全部的CPU核心资源。通过将处理器进行分区,虚拟机监视器不需要直接将CPU核心分配到每一个独立的客户机Domain,而只是需要按照任务的分类,先将CPU核心进行分区,然后将不同类型的任务部署到不同的CPU分区中。这样每个分区需要面对的计算资源规模大大减少,而每个分区上需要服务的虚拟化任务的计算需求比较近似,从而可以方便的为不同分区设计不同的任务调度和资源分配策略。在系统运行过程中虚拟机监视器只要完成CPU分区维护与虚拟化任务分配的工作就可以,因此,降低了多核或众核平台下CPU虚拟化的难度。(2)提高了CPU虚拟化方法的扩展性和适应性本发明降低了虚拟机监视器在CPU虚拟化方面的难度,从而使得虚拟机监视器可以支持更多的物理CPU数量,当物理处理器核心数随着众核技术的发展而显著增加时,本发明提出的方法具有更好的可扩展性;此外,通过不同的CPU分区支持不同的应用需求,通过设计与实现更多的应用种类,本发明提供的方法可以支持更多的应用,具有良好的扩展性。通过分区技术,可以在不同分区中使用不同的调度策略与资源分配策略,而不会增加虚拟机监视器实现的整体复杂性,从而可以支持同一系统中存在多种不同的应用的场景(如在科学计算领域中,有一些系统监控任务具有较高的实时要求,而一般的运行任务则需要长时间不停机地运行),从而适应更多的应用场景。(3)提高了系统的可靠性与安全性通过处理器分区技术来进行CPU虚拟化,可以将不同特权级别的客户机Domain进行分割,将特权Domain和虚拟机监视器中的管理任务分配到H-Core分区进行运行,从而特权Domain与管理任务的运行环境(CPU时间、内存资源、硬件设备)不会受到其他Domain的影响,避免了在原有CPU虚拟化方法中,特权Domain与通用客户机Domain运行在同一个CPU上,从而被通用客户机Domain中未经认证的应用影响的情况。此外,通过在G-Core分区中提供不同级别的可靠性设计与安全性设计,降低了可靠性与安全性设计与实现的难度与成本,从另一个方面提高了系统的可靠性和安全性。(4)提高了多核或众核平台下虚拟化系统的整体性能由于CPU分区的规模相对于系统整体较小,因此可以方便的在分区内采用较为复杂的调度优化与资源分配优化,而分区内应用具有类似需求,因此可以更方便设计有针对性的优化策略。此外,运行时对故障情况的重新部署,以及根据环境需求调整分区与任务的部署关系,可以按需分配计算资源,最大程度地保证了系统关键任务的计算资源,从而可以获得更好的整体性能。图1为本发明提出的基于处理器分区技术的CPU虚拟化方法的步骤流程图2为本发明实施例虚拟机监视器的示例性结构图;图3为本发明实施例双4核平台中对若干虚拟化任务进行部署的静态示例性示意图。具体实施例方式下面结合附图对本发明进行进一步的详细说明。本发明实施例中,基于裸机虚拟化(Bare-metalvisualization)方法,提出了一种基于处理器分区技术的CPU虚拟化方法,针对多核或众核平台的特点,将系统中的众多6处理器核心按照预期的任务分类,划分为H-Core分区与对应数量的G-Core分区;将虚拟化系统中运行的特权Domain与管理任务部署到H-Core中,为其分配独立的CPU核心与计算资源;将虚拟化系统中运行的通用客户机Domain按照时间约束、10访问要求、安全性与可靠性要求等特性,划分为多个虚拟化任务子集,部署到对应的G-Core分区中;与此同时,在不同的G-Core分区上,按照其上运行的虚拟化任务子集的特性,使用自有的调度策略、资源分配策略、设备模拟方法以及访问控制策略,从而可以适应不同虚拟化任务子集在响应时间、计算性能、安全性与可靠性等方面的不同要求。下面结合实施例和附图,进一步详细说明。—种基于处理器分区技术的CPU虚拟化方法,包括如下步骤,如图l所示步骤l,对多核或众核平台上的处理器资源进行分区,提供H-Core分区和多个G-Core分区。系统启动时,虚拟机监视器将多核或众核平台中的处理器核心,划分为H-Core与G-Core两类CPU分区,G-Core类CPU分区按照系统预期需要运行的客户机Domain的约束条件的类型被划分为对应数量的不同的G-Core分区。这些分区被分配了数量不等的CPU核心与其他计算资源,不同CPU分区按照计算需求分配数量不等的CPU核心,由VMM统一管理,等待H-Task、H-Domain与G-Domain的部署。系统预期需要运行的客户机Domain的约束条件具体在步骤3中阐述。特权Domain,即H-Domain,指具有较高的特权级,执行特权任务的虚拟化客户机Domain,承担了诸如管理视图、Domain创建、设备模型、驱动Domain等功能模块。例如,在Xen系统中的Domain0,以及Driver-Domain,stub-Domain等。管理任务,即H-Task,指运行在VMM中,具有管理特性的关键任务,如系统健康状态监控、调度决策、中断响应等关键任务,运行在特权模式,对系统的正常运行至关重要。例如,在Xen中负责维护系统调度决策的调度器、访问控制与事件通道等部分,均是系统安全可靠运行的关键所在。通用客户机Domain,即G-Domain,一般为虚拟化平台所需要服务的计算任务。通用客户机Domain可以包括多种应用,具有不同的约束要求。在V匪的启动阶段,为每个CPU分区构建数据结构——CPU分区BITMAP,并在CPU分区BITMAP中保存该分区中拥有的实际的物理处理器ID,从而可以维护CPU分区的结构;在VMM的启动和运行过程中,VMM负责检测每一个分区的BITMAP,并维护每个分区中的守护进程,使得守护进程中执行的VMM任务与客户机Domain均被物理限制在本分区中,从而实现CPU的物理分区。通过CPU分区BITMAP实现的物理分区,相对于调度器实现的分层调度与分区调度,可以从系统层面上限制分区中V匪任务与客户机Domain所可以访问CPU等计算资源,从而可以得到在VMM上层实现的调度策略所不能达到的可靠性与安全性。在如图3所示的执行科学计算的双4核平台示例系统中,需要运行多种不同应用,本实施例中将这些通用客户机Domain按照响应时间要求、设备访问特性分为4类虚拟化任务子集,此外还有特权Domain与管理任务组成的任务子集,我们将所有8个CPU核心F0-F7划分到4个不同的G-Core分区与1个H-Core分区中,每个CPU分区中对应的处理器核心数量依次为1、2、2、2、1个。在V匪启动过程中,首先初始化5个CPU分区位图(BITMAP),当7VMM在BP(BootstrapProcessor,引导处理器)上启动并完成CPU的初始化工作后,BP将自己加入到第一个CPUBITMAP,接着BP会依次启动剩余的7个AP(Applicationprocessor)。启动AP的过程与启动BP的过程类似,在AP的CPU的初始化完成之后,我们分别将它们加入到5个CPUBITMAP中。至此,为该虚拟化系统构建了5个CPUBITMAP,其中存放了对应的全部8个处理器核心对应的ID。如图3所示,CPU核心F0为BP,分在第一G-Core分区中,CPU核心Fl-F7为AP,F1、F2分在第二G-Core分区中,F3、F4分在第三G-Core分区中,F5、F6分在第四G-Core分区中,F7分在H-Core分区中。步骤2,分离出H-Domain与H-Task,并将它们部署到H-Core分区中。在虚拟化系统运行过程中,在VMM中有一系列保证系统正常运行的系统监控模块、策略选择模块等,它们运行在特权级上,具有较高的优先级,对系统的正常运行起着至关重要的作用。而一些客户机Domain中运行的管理视图、Domain创建、设备模型等功能模块,同样对系统的运行有重要作用。这些特权Domain与管理任务是系统的关键模块。步骤1为这些特权Domain与管理任务分配了一个H-Core分区,保证它们具有独立的CPU与计算资源,不会被其他计算任务干扰。VMM将H-Domain与H-Task从系统中分离出来,并将它们与H-Core分区之间建立映射管理,从而保证这些关键任务被独立的H-Core来服务,从而保证关键任务的计算资源与CPU时间得到充分保证,此外H-Core分区也将这些关键任务与系统中其他计算任务进行隔离,从而保证了系统的可靠运行。如图3所示,本实施例中,根据特权Domain和管理任务所需要的计算资源,将F7分配为H-Core分区,并将上述特权Domain与管理任务部署在其中。在H-Core分区中,将F7作为专有CPU核心,专门提供给特权Domain与管理任务运行。由于步骤1所实现的CPU分区的物理隔离,从而G-Core分区上的其他非关键任务不能够访问H-Core分区中所分配的计算资源,同样也无法干扰到关键任务的运行。步骤3,对多核或众核平台上运行的多个通用客户机Domain进行分类,并部署到对应G-Core分区。系统运行过程中,当通用客户机Domain创建时,根据其特性,分类为不同的虚拟化任务子集,VMM将不同的虚拟化任务子集部署到步骤1划分的不同G-Core分区中。由于多核或众核平台计算能力强大,一般其上会部署多种不同类型的虚拟化任务,以充分利用其计算资源。而每一个任务都有其约束条件,一般包括响应时间要求(实时要求与非实时要求)、设备访问特性(10密集型应用与CPU密集型应用)、可靠性特性(关键领域应用与非关键领域应用)、安全特性(安全敏感应用与安全不敏感应用)等,如表1所示。8<table>tableseeoriginaldocumentpage9</column></row><table>表1不同约束条件的任务需要不同的调度、资源分配等策略与其适应。本发明实施例选取了对服务器应用与嵌入式计算均有指导意义的约束条件,包括响应时间要求、设备访问特性进行分类,将任务集分为实时10密集型应用、实时CPU密集型应用、非实时10密集型应用,非实时CPU密集型应用。其分别对应实时10密集型应用——实时数据采集应用,需要能够在规定时限内获取指定的数据,且可能涉及到大量的设备访问;实时CPU密集型应用——工业控制应用,需要针对外界采样获得的数据,通过大量计算,来完成对生产线的控制,需要能够及时做出响应,同时需要进行相对大量的计算;非实时IO密集型应用——数据存储应用,在获取到大量的数据之后,需要将其保存在外部大容量存储设备中,以供后续处理,而这类应用通常需要进行相对大量的设备访问,而对访问的时间要求则不高;非实时CPU密集型应用——离线数据处理应用,为了支持工业控制应用,经常需要对获取的数据进行进一步分析,从而使得存储的数据更加合理与有效,这些应用没有响应时间的要求,但需要占用大量的处理器时间。本发明将通用客户机Domain按照任务的不同要求进行分类,从而简化了对多种类型的任务提供支持所带来的复杂性。本发明实施例在Domain对应的结构体中,设置了CPU映射参数domain—cpujn即用来指定Domain与CPUBITMAP之间的关系,又设置专门的结构体,针对本Domain及其上应用所具有的特性,为结构体赋予不同的参数,包括用于指定是否有实时性要求的参数is_rt_app,以及标示实时特性参数的联合体rt—config;用来表示设备访问特性的参数is_Cpu_b0Und,以及应用所占用的负载的参数cpU_Weight等,用来标明Domain所在分组与具有的性能要求。VMM负责将不同的通用客户机Domain根据其计算资源的要求部署在不同的G-Core分区中。在虚拟化任务启动的时候,VMM将通用客户机Domain与其虚拟化任务子集所分配的CPU分区之间建立映射关系,通过Domain结构体中CPU映射参数指定该应用可以运行的CPUBITMAP,从而使得某一类的虚拟化任务子集与对应的满足Domain性能要求的CPU分区绑定。如图3所示,本实施例中,将非实时10密集型任务对应的数据存储子集部署在步骤1所分配的第一G-CORE分区中,该G-CORE分区上运行着数据存储Domain与其他类似的IO密集型虚拟化任务;将实时IO密集型任务对应的实时任务子集部署在第二G-CORE分区中,该G-CORE分区上运行着设备驱动Domain与数据采集Domain;将非实时CPU密集型任务对应的科学计算子集部署在第三G-CORE分区中,该G-CORE分区上运行着计算运行Domain与计算加速Domain;将实时CPU密集型任务对应的数据处理子集部署在第四G-CORE分区中,该G-CORE分区上运行着数据处理Domain与其他类似的CPU密集型虚拟化任务。这样的分配方法满足不同任务对计算资源的需求,并且可以在不同分区中采用不同的优化方式。虚拟化任务子集部署到对应的G-Core分区运行,其参与分配的计算资源均在该G-Core分区中,而无法使用分区外的计算资源;同时,不同G-Core分区内的通用客户机Domain彼此不影响。本发明实施例中,通过控制Domain中VCPU可以运行的CPU分区的BITMAP,从而限制对应Domain所在的物理CPU分区,从而实现不同类型的虚拟化任务子集部署到不同的CPU分区中。VCPU所构建的运行队列与等待队列,在其所在CPU分区BITMAP中的物理CPU上构建。步骤4,VMM为G-Core分区中构建调度子模块,并设计符合的调度策略。在不同G-Core分区,根据其上虚拟化任务子集的约束条件特性,配置符合要求的任务调度、资源分配,安全可靠等方面的策略。在系统运行过程中,虚拟化任务子集中全部的通用客户机Domain被限制在对应的G-Core分区内完成,VMM在每个G-Core分区中建立独立的任务队列并进行任务调度与资源分配,每个G-Core分区按照分区中虚拟化任务子集的约束条件,选择适合的调度策略与资源分配策略。由于每个虚拟化任务子集是由具有近似特性的应用构成,因此本发明可以针对不同的应用类型,定义不同的任务调度、资源分配、可靠性特性,而由于每个G-Core分区上运行对应的虚拟化任务子集,因此也就是为每一个G-Core分区实现对一种类型应用的支持,也就是实现基于分区的CPU虚拟化方法。在虚拟机监视器中,通过在每个G-Core分区中设计调度子模块,这些调度子模块根据G-Core分区中的虚拟化化任务子集的约束条件,提供最合适的调度策略。G-Core分区中的调度,是针对该分区中运行的通用客户机Domain对应的VCPU而进行的,VCPU被分配到分区中每个物理CPU对应的调度队列中,由每个物理处理器上的调度器来对其进行调度。物理处理器上的调度器是指物理处理器上运行的调度代码。每一个物理处理器上的调度代码负责本处理器上VCPU调度队列的运行。在该步骤中,本发明图3所示实施例为每一个G-Core分区构建了适宜于其上任务子集特性的调度器(Scheduler),分别满足其在实时性与数据密集或CPU密集等方面的不同特点。当一个物理CPU空闲下来的时候,V匪会从当前自身等待队列中的VCPU中按照调度器的策略选择一个VCPU投入运行,由于步骤1与步骤3的限制,该VCPU必然是被部署到此物理CPU所在G-Core分区的通用客户机Domain中的VCPU,而调度器的调度策略,则是针对当前G-Core分区中所部署的虚拟化任务子集的特性而构建的,从而保证了分区内性能的最优化。步骤5,在系统的运行过程中,对通用核G-Core分区和虚拟化任务子集进行负载均衡。在满足G-Core分区内资源需求的正常运行阶段,VMM只需要对G-Core分区与任务的部署进行控制,负责维护新加入的通用客户机Domain对应的VCPU与G-Core分区BITMAP的对应关系即可,各G-Core分区内任务调度、资源分配等工作,由分区内V匪的子任务来完成。当G-Core分区内计算资源出现故障,或者虚拟化任务子集发生变化的时候,VMM需要对G-Core分区进行重新分配,或者将虚拟化任务子集重新部署到新的G-Core分区中。当需要将虚拟化任务子集进行重新部署的时候,VMM则需要将所需要重新部署的虚拟化任务子集上所有VCPU停止,之后重新维护虚拟化任务子集中所有VCPU与G-Core分区的BITMAP的映射关系,接着使用虚拟机迁移技术,将VCPU迁移到对应的G-Core分区的BITMAP中。这里要求迁移的目标G-Core分区满足被迁移任务子集对计算资源的要求。虚拟化任务子集的部署与分配,可以是静态部署的,也可以是动态调整的。本发明实施例对于可以预先确定数量和约束条件特性的虚拟化任务集,对通用核G-Core分区进行静态分区,VMM通过读取通用客户机Domain的配置文件指定了客户机Domain的分类方法,在通用客户机Domain启动阶段,将该客户机Domain分配到其所属虚拟化任务子集对应的G-Core分区,在运行过程中并不需要调整其分类方式与分区方法,这种运行环境适合于静态部署,可以达到较优的部署效果。而针对无法预先确定数量和约束条件特性的虚拟化任务集,本发明实施例通过VMM运行时采集通用客户机Domain运行的参数,判断G-Core分区是否可以满足其上虚拟化任务子集的运算需求,若满足则直接将该客户机Domain部署到对应的G-Core分区,不需要调整,若不满足则按照上述的G-Core重新分区、虚拟机迁移完成G-Core分区与任务分配的动态调整,从而满足无法预先确定的任务集的分区虚拟化方法。所述通用客户机Domain的配置文件中包含该客户机Domain所需要的计算机资源要求、约束条件特性等信息。所述的虚拟化任务集是虚拟化任务子集的集合。本发明实施例通过支持G-Core分区与虚拟化任务子集的动态调整,使得面对多核处理器的基于分区的CPU虚拟化技术能够提供实时或非实时、10密集型或计算密集型、安全、可靠的运行环境,且该运行环境是实用、高效的。图2给出了本发明的方法在实施中虚拟化监视器的示例性结构图。如图2所示,多核或众核平台系统中具有多个CPU核心,本发明实施例选择CPU核心E0到CPU核心El1的12个CPU核心作为演示,预期其上运行4类不同的通用虚拟化任务,按照每种应用的不同资源需求,我们将上述CPU核心进行了分区,依次划分为第一G-Core分区、第二G-Core分区、第三G-Core分区和第四G-Core分区,其中第一G-Core分区中分配有处理器核心E0、E1与E2,第二G-Core分区中分配有处理器核心E3与E4,第三G-Core分区中分配有处理器核心E5、E6与E7,第四G-Core分区中分配有处理器核心E8与E9;此外将处理器核心E10与Ell分配为H-Core分区。在完成CPU分区之后,本发明实施例将不同类型的通用客户机Domain组成的虚拟化任务子集部署在不同的CPU分区中,如图2所示,本发明实施例中,将虚拟化任务子集A、B、C、D分别部署在第一G-Core分区、第二G-Core分区、第三G-Core分区与第四G-Core分区上;在每个虚拟化任务子集中的虚拟化任务可以是独立Domain中的特定应用,也可以是共享在一个Domain中的并存多个应用,或运行在虚拟机监视器上的服务。如图2所示,虚拟化任务子集A包括应用虚拟机Al、虚拟机A2,虚拟化任务子集B包括应用虚拟机B1、虚拟机B2、虚拟机B3,虚拟化任务子集C包括应用虚拟机Cl、虚拟机C2、虚拟机C3,虚拟化任务子集D包括应用虚拟机Dl、虚拟机D2、虚拟机D3、虚拟机D4。此外,将特权Domain与管理任务部署在H-Core分区中,如图2所示,特权11DomainHl与管理任务H2被部署在H-Core分区中。在虚拟化任务部署完毕后,VMM控制CPU分区内进行彼此独立的任务调度与资源分配,并在整体上互相配合,从而避免了集中式的CPU虚拟化技术带来的性能瓶颈,既满足不同类型应用的个性化需求,也避免了不同种类应用的彼此干扰。权利要求一种基于处理器分区技术的CPU虚拟化方法,其特征在于,具体步骤包括步骤1虚拟机监视器VMM对多核或众核平台的处理器资源分区,提供H-Core分区和多个G-Core分区;系统启动时,虚拟机监视器VMM将多核或众核平台中的处理器核心,划分为管理核H-Core与通用核G-Core两类CPU分区,其中通用核G-Core类分区,根据系统预期需要运行的通用客户机Domain的约束条件的不同类型,划分为对应数量的通用核G-Core分区,VMM为每个CPU分区构建数据结构CPU分区BITMAP,在CPU分区BITMAP中记录该分区拥有的物理处理器ID,通过遍历CPU分区BITMAP来创建不同的CPU分区,不同CPU分区分配有数量不等的CPU核心,由VMM统一管理,其中Domain代表域,BITMAP代表位图;步骤2从VMM与Domain的管理相关功能与代码中分离出VMM中的管理任务H-Task与特权DomainH-Domain,将它们部署到步骤1中的管理核H-Core分区;步骤3对多核或众核平台上运行的通用客户机Domain进行分类,并部署到对应的通用核G-Core分区;通用客户机Domain启动时,根据其自身的约束条件,被划分到不同的虚拟化任务子集中,然后,VMM将各虚拟化任务子集部署到步骤1中所划分的对应的通用核G-Core分区中;步骤4通用核G-Core分区中构建调度子模块,并设计符合的调度策略;在系统运行过程中,VMM在每个通用核G-Core分区中构建调度子模块,各通用核G-Core分区的调度子模块,具有各自独立的调度队列与调度策略,负责调度分区内通用客户机Domain的运行,并负责维护本分区内的通用客户机Domain的资源分配,并配置符合其上运行的通用客户机Domain约束条件的各种策略;步骤5在系统的运行过程中,VMM对通用核G-Core分区和虚拟化任务子集进行负载均衡;各通用核G-Core分区内任务调度、资源分配工作,由各分区内的调度子模块来完成,当通用核G-Core分区内计算资源出现故障或虚拟化任务子集发生变化的时候,VMM将虚拟化任务子集在通用核G-Core分区间进行调整,或者重新划分通用核G-Core分区,将虚拟化任务子集部署到新的通用核G-Core分区中。2.根据权利要求1所述的一种基于处理器分区技术的CPU虚拟化方法,其特征在于,所述的约束条件,包括响应时间要求、设备访问特性、可靠性特性、安全特性。3.根据权利要求1所述的一种基于处理器分区技术的CPU虚拟化方法,其特征在于,步骤3中所述虚拟化任务子集部署的方法,具体在通用客户机Domain启动的时候,VMM将该虚拟化任务子集中的通用客户机Domain与其分配的通用核G-Core分区之间建立映射关系,通过Domain结构体中CPU映射参数指定该客户机Domain能够运行的通用核G-Core分区BITMAP,从而使得一类虚拟化任务子集与对应的通用核G-Core分区绑定。4.根据权利要求1所述的一种基于处理器分区技术的CPU虚拟化方法,其特征在于,步骤4中所述调度子模块调度分区内通用客户机Domain的运行,具体是针对通用核G-Core分区中运行的通用客户机Domain对应的VCPU而进行的,VCPU被所在通用核G-Core分区的调度子模块分配到所在通用核G-Core分区中每个物理CPU对应的调度队列中,然后由每个物理处理器上的调度代码来对其进行调度;其中,VCPU代表虚拟处理器。全文摘要本发明提出了一种基于处理器分区技术的CPU虚拟化方法,针对多核或众核平台,首先将CPU核心划分为管理核H-Core分区与多个通用核G-Core分区,然后将VMM中的管理任务与特权Domain部署到H-Core分区中运行,将VMM上运行的通用客户机Domain按照自身特性,划分到不同的虚拟化任务子集中,并将这些虚拟化任务子集部署到对应的G-Core分区中运行;在不同的CPU分区中,可针对不同类型的虚拟化任务实现不同的调度策略与资源分配策略。本发明提高了多核或众核平台上虚拟化系统的安全性与可靠性,降低了CPU虚拟化的复杂度,同时也简化了全局的资源分配和调度的复杂性,提高了VMM对计算资源的分配与调度的能力,是一种安全、可靠、高效、高性能的CPU虚拟化方法。文档编号G06F9/455GK101788920SQ20101010808公开日2010年7月28日申请日期2010年2月5日优先权日2010年2月5日发明者吕紫旭,张炯,白跃斌,高小鹏,龙翔申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1