面向多核平台的虚拟机监控器非对称调度器及其调度方法

文档序号:6585035阅读:191来源:国知局
专利名称:面向多核平台的虚拟机监控器非对称调度器及其调度方法
技术领域
本发明涉及一种多核或众核平台调度技术,具体来说是面向多核平台的虚拟机监
控器非对称调度器及其调度方法,属于计算机操作系统和虚拟化技术领域。
背景技术
系统虚拟化技术是指利用虚拟机监视器(Virtual Machine Monitor,简称VMM)这个系统软件层,管理系统平台的处理器外设等资源,为客户操作系统提供一个虚拟硬件执行环境,这些虚拟的硬件执行环境成为一个虚拟机(Virtual Machine,简称VM)。每个虚拟机(VM),都包含处理器、存储器及设备等虚拟硬件资源,而同一台物理主机上可以支持多个VM同时运行。该技术起源于20世纪60年代,IBM公司最早在360系列计算机系统中使用了虚拟化技术,其目的是让用户可以共享计算资源,而在随后的三十年间,大型机上的虚拟化技术不断趋于完善,并且一直是高效利用大型机强大计算资源的基础技术。到了二十世纪90年代,随着x86处理器性能的不断提高, 一些基于x86处理器中低档服务器甚至PC机的计算能力越来越强,大量的数据中心和PC机都出现了系统资源利用率低,计算资源严重浪费的问题。在这种背景下,以前主要用于大型机的系统虚拟化技术受到工业界和学术界的广泛关注,基于x86处理器的虚拟化技术得到了长足的发展,并在世界各地的数据中心,PC机用户上得到了广泛的应用。虚拟化技术不仅可以提高系统资源的利用率,减少了数据中心的装机量和相应的电源成本,并且为一些传统需求提供了新的简单的实现手段,比如基于系统迁移技术的负载平衡,容错备份。除此之外,虚拟化技术也为PC机用户提供了更方便的使用多样性操作系统的方法,为许多操作系统等系统软件开发和测试人员提供了前所未有的便利。 和本发明密切相关另外一个背景技术是近年来多核技术的持续发展。传统的多路服务器是直接在一个主板上支持多个物理处理器插槽,也就是对称多处理器系统。而随着SMT(Simultaneous Multi-Threading,艮卩同时多线程)、CMP(Chip multiprocessors,即片上多处理器核)的发展,单个芯片上集成的处理器核会越来越多,2007年在Intel实验室中已经研制成功了集成80个核的单个芯片。在未来一段时间内,四核、八核处理器等都会渐渐被广泛使用,硬件平台正在进入多核时代。与之相应的是,软件的发展,尤其是系统软件的发展和硬件平台的发展相比,显得有些滞后,很多情况下都是硬件的处理能力提高了,或者提供了新的功能,但是软件栈的革新速度较为缓慢,使得许多新的硬件特性无法被广泛使用,造成了计算资源、电源等的大量浪费。随着多核平台的发展,操作系统以及应用程序迫切需要快速革新,适应新的强大的计算平台。除此之外,异构处理器核在中低端服务器和PC机上也会被大量使用,最典型的例子是现在已经很流行的图形处理器GPU(GraphicProcessing Unit),网络处理器NP (Network Processor,简称NP),甚至不日将会上市的Intel的GPU Larrabee。 新一轮的虚拟化技术最初是因为高效使用系统过剩的计算资源而迅速发展起来,而现在随着单一硬件平台上集成的处理器核持续增多,系统虚拟化技术将得到持续的关注
5和发展,虚拟化技术将会在充分使用平台提供的强大计算能力发挥更加重要的作用。目前已经有服务器厂商将虚拟化放在BIOS中,为系统软件提供了更加透明的虚拟化平台,类似于大型机上的分区技术,虚拟化技术最典型的用处就是对大量处理器核进行分区,而每个分区中都可以安装传统的操作系统,这样既可以充分使用了较新的硬件平台,又充分利用了更新周期较长的操作系统和应用程序,为计算机系统平台的持续发展提供了可行的解决方案。总之,系统虚拟化技术的发展和多核技术的发展是目前硬件和系统软件发展中最显著的两样技术,同时这两样技术在互相影响,互相促进,多核的设计和实现中会考虑系统虚拟化技术对平台的使用,而系统虚拟化技术也必然随着多核的发展而不断革新,最有效的使用平台上集成的更多的同构处理器核以及各种异构处理器核。 系统虚拟化技术研究如何把处理器、内存、外设等资源分配给客户机使用,它是虚拟化技术的一种,所抽象的对象是整个计算机。系统虚拟化技术对处理器的抽象,以及对虚拟处理器的调度是虚拟化技术中的重要组成部分,目前的虚拟机监控器VMM从处理器虚拟化的技术上划分主要有三种方式,一种是二进制翻译,这种主要情况下,客户操作系统中的特权指令是通过解释执行的;第二种是类虚拟化,即修改客户操作系统把客户操作系统中需要执行的特权指令修改成对虚拟机监控器的调用,当然这种技术一般和客户操作系统执行特权指令导致异常然后陷入到VMM中从而由V匪接管执行相结合;第三种就是硬件辅助的完全虚拟化技术,使用带有硬件虚拟化支持的处理器,比如Intel VT-x或者AMD的SVM,客户操作系统执行所有的敏感指令和特权指令时都会陷入到VMM中,VMM代为处理完毕后,会返回到客户操作系统中。以上几种方法各有利弊,其中第三种硬件辅助虚拟化方法目前的性能并不好,原因是客户机因为执行特权指令而导致的VM exit(虚拟机退出)数量过多,而且VMM中处理这些退出的时间长,导致HVM(硬件虚拟机)Domain (域)的性能不高。此外目前的VMM实现中对多核的支持基本都是延续了传统上Li皿x对SMP平台的支持方式,对vcpu(虚拟处理器)的调度也是采用对称调度的方法,即调度器并不区分处于不同封装上的处理器核心,也不支持专门用于某种特殊需求的VMM任务和处理器核的绑定。

发明内容
本发明针对目前多核平台VMM中对称调度方法不能充分使用多核处理能力,并且不能为不同的客户机提供灵活的定制性的服务的问题,提出了一种面向多核平台的虚拟机监控器非对称调度器及其调度方法。 本发明设计的面向多核平台的虚拟机监控器非对称调度器,其在结构上除了包括VMM中已有的通用调度模块外,还包括以下新添加的模块管理域中的服务核请求解析模块;V匪中的Domain特定服务核配置模块、系统顶级调度器模块、服务调度器模块、共享内存机制模块及请求查询模块,其中系统顶级调度器模块中包含平台处理器核拓扑识别和分析子模块以及服务核分配和回收子模块;HVM Domain中的混合虚拟化模块。V匪运行在多核或众核系统平台上,向下管理着底层的硬件平台,向上支撑运行着管理域和HVMDomain。
服务核请求解析模块,用于HVM Domain创建时服务核的配置,负责将HVM Domain也就是客户机创建时的配置文件中指明的服务核的类型和数量解析,向V匪发出服务核的创建请求; Domain特定服务核配置模块则负责初步解析服务核请求解析模块发过的HVMDomain的服务核创建请求然后发送给系统顶级调度器模块,并在整个HVM Domain的生命周期内管理其服务核相关的信息; 系统顶级调度器模块主要用来管理计算机平台中能用的处理器核,并在全局范围内对通用调度器模块和服务调度器模块的能用处理器核资源位图进行调整,负责完成来自Domain特定服务核配置模块中的请求,根据平台处理器核拓扑识别和分析子模块中的拓扑信息,使用服务核分配和回收子模块创建服务核或者回收服务核;平台处理器核拓扑识别和分析子模块负责对系统中拥有的处理器核资源进行识别,处理器核在被识别之后加入顶级调度器使用和管理的能用处理器核资源位图中,初始化之后顶级调度器开始在这些处理器核上运行;服务核分配和回收子模块负责服务核的创建或者回收,从系统能用处理器核资源位图中区分出服务核,并添入服务调度器模块的能用处理器核资源位图中,或者从服务调度器模块的能用处理器核资源位图中删除服务核;
服务调度器模块负责服务核的管理和调度; 共享内存机制模块负责响应HVM Domain的映射请求,并在共享内存建立之后,触发请求查询模块; 混合虚拟化模块首先向VMM请求映射共享内存,共享内存机制模块响应HVMDomain的映射请求,在VMM中建立共享内存区域;在共享内存建立之后,混合虚拟化模块发出HVMDomain对服务核的服务请求,这些请求被写在共享内存区域内;
请求查询模块负责查询HVM Domain所属的共享内存区域内的对服务核的服务请求,并把这些请求发送到服务调度器模块。 所述系统顶级调度器模块在系统初始化、HVM Domain创建、服务核创建请求、服务核回收、HVM Domain销毁、通用核和服务核比例调整、全局范围内的负载调整等场合才会被触发。 本发明设计的面向多核平台的虚拟机监控器非对称调度方法,具体步骤包括
步骤l,客户机创建启动和服务核的创建请求发出; HVM Domain客户机创建时,在管理域中会有一个对应的客户机的创建配置文件,该文件中会指明客户机使用的vcpu的数量,以及与物理处理器核的绑定信息,同时该配置文件中也会指明所需的服务核的类型和数量,具体的类型由不同的实施例中特殊指定和实现;管理域中的服务核请求解析模块将该配置文件中的服务核的类型和数量解析,并将创建需求转变成对VMM的超调用Hypercall,并将该超调用传输给VMM中的Domain特定服务核配置模块,而Domain特定服务核配置模块在接管超调用Hypercall后,采用一个结构体管理新创建的HVM Domain的所有信息,包括服务核的配置信息,并初步解析超调用Hypercall,然后触发VMM中的系统顶级调度器模块运行;其中vcpu代表虚拟处理器,Hypercall代表超级调用; 步骤2,处理器核拓扑识别和分析以及服务核的分配; 系统顶级调度器模块中的处理器核拓扑识别和分析子模块会对系统中拥有的处理器核资源进行识别,处理器核在被识别之后加入系统顶级调度器模块使用和管理的能用处理器核资源位图中,初始化之后系统顶级调度器模块开始在这些处理器核上运行,直到这些处理器核被划分给VMM中的通用调度器模块或者被分配成服务核接受VMM中的服务调度器模块的调度;
系统初始化时,系统顶级调度器模块被初始化,系统顶级调度器模块接到创建服务核的请求后,首先根据平台处理器核拓扑和分析子模块得到平台处理器核的拓扑信息,采用就近原则选择和HVM Domain的vcpu绑定的物理处理器核相邻的处理器核,如果vcpu没有设定需要绑定物理处理器核,则按照系统的整体策略,是性能优先还是节能优先的预定策略进行选择,性能优先时,优先选择空闲的处理器核作为服务核,而节能优先时则优先选择超线程或者同一封装内的处理器核作为服务核; 服务核选定之后,由系统顶级调度器模块中的服务核分配和回收子模块负责服务核的最终创建过程,服务核分配和回收子模块从系统能用处理器核资源位图中区分出服务核,并添入服务调度器模块的能用处理器核资源位图中,然后通过处理器间中断IPI唤醒服务核,并使它从指定的函数开始执行;服务核被创建并开始执行时,并未真正开始提供服务,直到HVMDomain申请创建共享内存区域之后,服务核才会被真正激活,主动到共享内存区域轮询任务,或者被服务调度器模块调度时才被激活提供服务;服务核的回收是在服务核所属的HVMDomain被销毁时触发的,与创建的过程类似,系统顶级调度器模块调用服务核分配和回收子模块进行回收,并将回收的服务核进行重新分配,根据系统的配置策略,将空闲的服务核,加入到通用调度器模块的能用处理器核资源位图中,或加入到系统空闲资源中; 步骤3,两级调度器对通用核和服务核调度; VMM启动初期,计算机平台内的所有处理器核都是由系统顶级处理器模块管理和调度的,随着HVM Domain以及对应的vcpu的创建,通用调度器模块有了调度对象,被初始化并在所管理的通用核上运行; 服务核创建之后,服务调度器模块开始对服务核进行调度,它会轮询各个HVM
Domain与VMM的共享内存区域的服务请求,调用请求查询模块获得新的服务任务发送到服
务调度器模块,服务调度器模块根据任务所属的服务核,将任务插入到该服务核的任务队
列,并触发服务核的运行;如果服务核创建时被指定为直接轮询模式,则不需要服务调度器
模块将任务派发给服务核,服务核直接轮询共享内存区域获得服务请求; 步骤4,客户机发出服务请求及对应服务核响应客户机的请求; HVM Domain被创建并启动后,装载HVM Domain中的混合虚拟化模块,混合虚拟化
模块向VMM发出映射共享内存的请求,VMM中的共享内存机制模块响应请求,在VMM的空间
中映射共享内存区域,并将共享内存区域的起始地址以及大小信息写入Domain特定服务
核配置模块管理的信息结构体中,共享内存映射成功后对应的服务核上的服务代码开始运
行; 混合虚拟化模块通过写共享内存的方式发送服务请求,服务请求也能够由运行在用户态的特定应用程序发出,通过将现有操作系统用户态、内核态模块数据和控制方法交由混合虚拟化模块代理发送,服务请求发送后,VMM中的请求查询模块将会按照一定频率查询这些请求,并把这些请求交由服务调度器模块派发到对应的服务核,服务核会根据服务调度器模块中的调度策略执行自己的任务队列,也能够采用一种服务核直接轮询对应的共享内存区域的方式, 一旦有请求,直接执行,这种情况适用于实时性要求比较高的服务,或者频繁执行并决定着系统整体性能的关键服务;当服务核将服务请求执行完毕后,把处理结果通过共享内存机制模块写回共享内存,混合虚拟化模块或者HVM Domain中的其他内核模块就能读到返回的服务执行结果。 所述的面向多核平台的虚拟机监控器非对称调度方法,其特征在于,所述步骤2 中处理器核拓扑识别和分析子模块会对平台中拥有的处理器核资源进行识别,识别的主要 根据为,是否在一个封装内,是否共享二级缓存,是否是同一个核上的超线程。
所述的面向多核平台的虚拟机监控器非对称调度方法,其特征在于,步骤2中所 述服务核的分配采用就近原则,具体为如果vcpu是一个超线程,则服务核从最邻近的超 线程优先选择,如果vcpu绑定到了一个处理器核,则服务核优先从同处于一个封装内的其 它处理器核分配,更进一步,如果同一封装内有些处理器核和vcpu绑定的处理器核共享二 级缓存,另一些不共享,则优先选择共享二级缓存的处理器核。 所述的面向多核平台的虚拟机监控器非对称调度方法,其特征在于,所述步骤4 中HVMDomain与V匪之间建立的共享内存,在V匪中有统一的地址空间,在HVM Domain系 统内部也有自己的映射空间,VMM中对这些共享内存中的请求区域是统一管理的,对请求的 管理采用轮询的同步通讯方式,或采用消息传递的方式。 本发明提出的面向多核平台的虚拟机监控器非对称调度器及其调度方法,具有下 述技术优点和效果 (1)服务核的存在满足了客户操作系统特殊的需求 目前的大多数虚拟机监控器的性能瓶颈都在IO,原因主要就是V匪的架构不能适
应多个客户操作系统并发访问io设备的需求,服务核的存在就可以为客户操作系统提供
特定IO访问的加速。另外,客户操作系统的特殊需求不仅体现在某些性能需求上,还体现 在某些功能性需求上,比如某个客户操作系统属于硬件辅助虚拟机,但是想采用混合虚拟 化方法,加速某些驱动,而服务核也可以辅助客户操作系统完成这些任务。总之服务核是一 种使用虚拟化架构的一种机制,而这种机制的存在为虚拟化环境提供了新的客户操作系统 到V匪之间的交互方式,通过这种请求和服务模式的模型,可以满足很多种客户操作系统 和VMM的交互需求。 (2)服务核的分配适应平台的处理器拓扑结构 传统的针对SMP系统的调度器已经不能适应日益复杂的基于x86处理器的平台, 而现在流行的虚拟机监控器软件主要是面向流行的处理器配置,也没有充分考虑到平台的 众多处理器核的拓扑结构。本发明中的非对称调度器在分配服务核时充分考虑了服务核以 及所服务的客户操作系统虚拟处理器vcpu所运行的物理处理器核的拓扑关系,对于目前 的计算机平台已经显示出一些优势,比如能够减少cache缺失率,提高了系统的整体性能, 对于未来众核平台和存在大量异构核的平台,这种服务核分配模式会表现出更明显的优 势,比如图形处理器GPU适合进行矩阵运算,可以为需要密集矩阵运算的客户操作系统提 供GPU作为服务核。 (3)非对称的两级调度器模型为整个系统提供了灵活性和可配置性 本发明中使用的两级的非对称调度器,不仅为客户操作系统的特殊需求提供了更
为灵活的服务,同时也方便对多核或者未来众核平台中的丰富的处理器核资源进行利用。
以非对称的两级调度器为中心,对上适应客户操作系统的个性化需求,对下充分利用平台
的计算资源,并可以方便地扩展进行异构处理器核的调度使用。通用调度器兼容现有的大
多虚拟机监控器采用的对称调度模型,而服务调度器为客户操作系统的各种特殊需求提供了可用的方便的支持。二者协同起来,并由顶级调度器做全局的分配以及运行时的动态调 整,大大提高了整个系统的灵活性。 可配置性的提高主要是因为服务核的提供可以由管理域基于单个虚拟机配置,并 且服务核的分配过程也是根据平台的拓扑结构优化分配。除此之外顶级调度器的动态调整 策略也是可以由管理域指定,比如按照性能优先或者节能优先策略分别配置时,顶级调度 器对通用调度器和服务调度器的可用处理器核位图的调整就是不同的。节能优先时,不用 的服务核会进入低能耗状态,性能优先时,回收的服务核会被顶级调度器加入到通用调度 器的可用处理器资源位图中,被通用调度器用来调度客户操作系统的vcpu。本发明中对灵 活性和可配置性的改善也适合正在不断革新中的硬件平台的新趋势。


图1是面向多核平台的虚拟机监控器非对称调度器的模块结构示意图;
图2是面向多核平台的虚拟机监控器非对称调度方法的步骤流程图。
具体实施例方式
在下述具体实施示例中,结合附图对本发明进行进一步的详细说明。
如图1所示,VMM 10运行在多核或众核系统平台上,向下管理着底层的硬件平台 12,向上支撑运行着管理域9和HVM Domainll。本发明设计的面向多核平台的虚拟机监控 器非对称调度器,其在结构上除了包括V匪10中已有的通用调度模块4夕卜,还包括以下新 添加的模块管理域9中的服务核请求解析模块1 ;V匪10中的Domain特定服务核配置模块 2、系统顶级调度器模块3、服务调度器模块5、共享内存机制模块7及请求查询模块8,其中 系统顶级调度器模块3中包含平台处理器核拓扑识别和分析子模块301以及服务核分配和 回收子模块302 ;HVM Domainll中的混合虚拟化模块6。 HVM Domainl 1是承载计算任务的Domain,管理域9根据V匪IO提供的机制对HVM Domainll进行控制。管理域9中服务核请求解析模块1负责将客户机创建时的配置文件 中指明的服务核的类型和数量解析,向V匪IO发出服务核的创建请求。V匪IO中的Domain 特定服务核配置模块2则负责初步解析请求解析模块1发来的服务核创建请求然后发送 给系统顶级调度器模块3,并在整个HVM Domainll的生命周期内管理其服务核相关的信 息。系统顶级调度器模块3主要用来管理系统中的可用的处理器核,并在全局范围内对通 用调度器模块4和服务调度器模块5的能用处理器核资源位图进行调整,负责具体完成来 自Domain特定服务核配置模块2中的请求,根据平台处理器核拓扑识别和分析子模块301 中的拓扑信息,使用服务核分配和回收子模块302创建服务核或者回收服务核;平台处理 器核拓扑识别和分析子模块301负责对系统中拥有的处理器核资源进行识别,服务核分配 和回收子模块302负责服务核的创建或者回收,从系统能用处理器核资源位图中区分出服 务核,并添入服务调度器模块5的能用处理器核资源位图中,或者从服务调度器模块5的能 用处理器核资源位图中删除服务核。主要是正常运行状态下的系统,通用调度器模块4负 责HVMDomainll的虚拟处理器vcpu在通用核上的调度,而服务调度器模块5负责服务核的 管理和调度。 共享内存机制模块7负责响应HVM Domain的映射请求,并在共享内存建立之后,触发请求查询模块8。 HVM Domainll中的混合虚拟化模块6负责向V匪IO请求映射共享内存,而V匪IO 中的共享内存机制模块7负责响应HVM Domainll的映射请求;在共享内存建立之后,HVM Domainll对服务核的服务请求通过混合虚拟化模块6发出,同时共享内存机制模块7触发 请求查询模块8。 请求查询模块8负责查询HVM Domainll所属的共享内存区域内的对服务核的服 务请求,并把这些请求发送到服务调度器模块5,由服务调度器模块5负责服务的调度。
面向多核平台的虚拟机监控器非对称调度器包括系统顶级调度器模块3及其下 属的通用核调度器模块4和服务核调度器模块5两级,系统顶级调度器模块3负责处理器 核的角色划分,服务核的创建和回收,根据运行负载的变化,调整通用调度器模块4所管理 的通用核以及服务调度器模块5管理的服务核的数量,实现计算机处理器核作为通用核和 作为服务核的角色转换。 本发明提出的面向多核平台的虚拟机监控器非对称调度器,它与现有的调度器的 区别的主要表现在非对称性调度上首先,对计算机平台的处理器核不使用传统的对称调 度方法,而是采用了将某些核作为服务核,运行专门的VMM服务;其次,服务核的分配既考 虑上层HVM Domainll的需求,也对计算机平台的处理器核拓扑结构有所考虑,系统顶级调 度器模块3根据创建HVM Domainll的配置文件中的vcpu绑定信息和服务核的类型数量等 信息,采用就近原则分配服务核,如果vcpu没有设定需要绑定物理处理器核,则按照系统 的整体策略,是性能优先还是节能优先的预定策略进行选择,性能优先时,优先选择空闲的 处理器核作为服务核,而节能优先时则优先选择超线程或者同一封装内的处理器核作为服 务核。 本发明提出的面向多核平台的虚拟机监控器非对称调度方法在系统实施中主要
分为4个步骤,即客户机创建启动和服务核的创建请求发出、处理器核拓扑识别和分析以
及服务核的分配、两级调度器对通用核和服务核调度以及客户机发出服务请求及对应服务
核响应客户机的请求。结合附2,具体步骤如下 步骤1 :客户机创建启动和服务核的创建请求发出; HVM Domainll创建时,在管理域9中会有一个对应的客户机的创建配置文件,该 文件中会指明客户机使用的vcpu的数量,以及与物理处理器核的绑定信息,同时该配置文 件中也会指明所需的服务核的类型和数量(比如文件系统服务、调试服务、IO服务,或者 像页表遍历这样的具体操作的加速请求),具体的类型可以由不同的实施例中特殊指定和 实现。管理域9中的服务核请求解析模块1将该配置文件中的服务核的类型和数量解析, 并将创建需求转变成对V匪IO的超调用Hypercall,并将该超调用传输给Domain特定服 务核配置模块2,而Domain特定服务核配置模块2在接管超调用Hypercall后,采用一个 结构体管理新创建的HVM Domain的所有信息,包括服务核的配置信息,并初步解析超调用 Hypercall,然后触发系统顶级调度器模块3运行。
步骤2,处理器核拓扑识别和分析以及服务核的分配; 处理器核拓扑识别和分析子模块301会对系统中拥有的处理器核资源进行识别, 主要根据是否在一个封装内,是否共享二级缓存,是否是同一个核上的超线程,处理器核在 被识别之后加入系统顶级调度器模块3使用和管理的能用处理器核资源位图中;初始化之
11后系统顶级调度器模块3开始在这些处理器核上运行,直到这些处理器核被划分给通用调 度器模块4或者被分配成服务核接受服务调度器模块5的调度。 系统初始化时,V匪IO中的系统顶级调度器模块3被初始化,系统顶级调度器模块 3在接受请求分配服务核时,从系统可用的处理器核资源中找到合适的处理器核,并对这个 处理器核初始化使之成为运行HVM Domain需要的功能(比如文件系统服务,10设备服务, 调试服务服务,IO仿真服务)的服务核,然后服务核被创建。系统顶级调度器模块3接到 创建服务核的请求后,首先根据平台处理器核拓扑和分析子模块301得到平台处理器核的 拓扑信息,选择和HVM Domainll的vcpu绑定的物理处理器核相邻的处理器核,具体为系 统顶级调度器模块3根据创建HVM Domainll的配置文件中的vcpu绑定信息和服务核的类 型数量等信息,采用就近原则分配服务核,比如如果vcpu是一个超线程,则服务核从最邻 近的超线程优先选择,如果vcpu绑定到了一个处理器核,则服务核优先从同处于一个封装 内的其它核分配,更进一步,如果同一封装内有些处理器核和vcpu绑定的处理器核共享二 级缓存,另一些不共享,则优先选择共享二级缓存的处理器核。如果vcpu没有设定需要绑 定物理处理器核,则按照系统的整体策略,是性能优先还是节能优先的预定策略进行选择, 性能优先时,优先选择空闲的处理器核作为服务核,而节能优先时则优先选择超线程或者 同一封装内的处理器核作为服务核。 服务核选定之后,由服务核分配和回收子模块302负责服务核的最终创建过程。 服务核分配和回收子模块302主要是从系统能用处理器核资源位图中区分出服务核,并 添入服务调度器模块5的能用处理器核资源位图中,然后通过处理器间中断IPI (inter processor interrupt)唤醒服务核,并使它从指定的函数开始执行。服务核被创建并开始执 行时,并未真正开始提供服务,直到HVM Domainll申请创建共享内存区域之后,服务核才会 被真正激活,主动到共享内存区域轮询任务,或者被服务调度器模块5调度时才被激活提 供服务。 服务核的回收是在服务核所属的HVM Domainll被销毁时触发的,与创建的过程类 似,系统顶级调度器模块3调用服务核分配和回收子模块302进行回收,并将回收的服务核 进行重新分配,根据系统的配置策略,将空闲的服务核,可以加入到通用调度器模块4的能 用处理器核资源位图中,也可以加入到系统空闲资源中。
步骤3 :两级调度器对通用核和服务核调度; V匪10启动初期,平台内的所有处理器核都是由系统顶级处理器模块3管理和调 度的,随着HVM Domainll以及对应的vcpu的创建,通用调度器模块4有了调度对象,被初 始化并在所管理的通用核上运行。 服务核创建之后,服务调度器模块5开始对服务核进行调度,传统的vcpu的调度 则由通用核调度器模块4负责。通用调度器模块4具有调度vcpu以及平衡所属的处理器 核之间负载的功能,其能用处理器核资源位图中的每个处理器核上都会像传统调度器一样 周期性的运行通用调度器模块4的代码。服务调度器模块5会轮询各个HVM Domainll与 VMM10的共享内存区域的服务请求,即调用请求查询模块8获得新的服务任务发送到服务 调度器模块5,服务调度器模块5根据任务所属的服务核,将任务插入到该服务核的任务队 列,并触发服务核的运行。如果服务核创建时被指定为直接轮询模式,则不需要服务调度器 模块5将任务派发给服务核,服务核直接轮询共享内存区域获得服务请求。
步骤4 :客户机发出服务请求及对应服务核响应客户机的请求; 步骤1和步骤2完成了对服务核的创建,以及对服务核的初始化,并能够使服务核 通过两级的调度器进行调度。当HVM Domainll被创建并启动起来后,这时它所属的服务核 也就已经就绪了,此时服务核处于等待状态,等待服务调度器模块5接到请求后调度服务 核执行。服务核真正投入运行是在HVM Domainll中的混合虚拟化模块6对服务核发出服 务请求后。HVM Domainll被创建并启动后,装载混合虚拟化模块6,混合虚拟化模块6向 V匪10发出映射共享内存的请求,V匪10中的共享内存机制模块7在V匪10的空间中映射共 享内存,并将共享区域的起始地址以及大小等信息写入Domain特定服务核配置模块2管理
的信息结构,共享内存映射成功后对应的服务核上的服务代码开始运行。 HVM Domainll中的混合虚拟化模块6通过写共享内存的方式发送服务请求,服务
请求也可以由运行在用户态的特定应用程序发出,通过将现有操作系统用户态、内核态模
块数据和控制方法交由混合虚拟化模块6代理发送。服务请求发送后,V匪10中的请求查询
模块8将会按照一定频率查询这些请求,并把这些请求交由服务调度器模块5派发到对应
的服务核。服务核会根据服务调度器模块5中的调度策略执行自己的任务队列,当服务核
将服务请求执行完毕后,把处理结果通过共享内存机制模块7写回共享内存。HVM Domain 11
中的混合虚拟化模块6或者其他内核模块就可以读到返回的服务执行结果。 客户机为了使用V匪10的服务核提供的服务,首先需要与V匪10之间建立共享内
存。位于HVM Domainll中的混合虚拟化模块6向VMM10发送共享内存映射的请求,V匪10
处理请求,并且建立了 V匪10与服务核共享的一块内存区域。 客户机的请求和数据都是通过共享内存机制传递给V匪10的,在共享内存被创
建之前,服务核处于就绪状态,并不真正开始提供服务,而一旦共享内存创建成功,服务调
度器就会通过服务请求查询模块查询新到的请求,同时会把合适的请求派发到服务核上。
HVMDomainll中的混合虚拟化模块6不仅负责映射共享内存,而且也负责发送实际的服务
请求,HVM Domainll中可以扩展该机制,即HVM Domainll的用户态程序可以和安装在内核
态的混合虚拟化模块6交互,使混合虚拟化模块6代为执行来自用户态的特殊服务请求。
HVM Domainll与V匪10之间建立的共享内存,在VMM 10中有统一的地址空间,在客户机各
自操作系统内部也有自己的映射空间,V匪IO中对这些共享内存中的请求区域是统一管理
的,本发明中是采用了轮询的同步通讯方式,也可以采用消息传递的方式。 HVM Domainll通过共享内存发出服务请求后,服务调度器模块5会通过请求查询
模块8对各个共享内存区域的请求进行查询,并按照请求所属的区域和类型派发到合适的
服务核,于是服务请求会被对应的服务核执行。大多数情况下,请求是由服务调度器模块5
向服务核调度派发的,但是本发明实践中也可以采用一种服务核直接轮询对应的共享内存
区域, 一旦有请求,直接执行,这种情况适用于实时性要求比较高的服务,或者频繁执行并
决定着系统整体性能的关键服务。
权利要求
面向多核平台的虚拟机监控器非对称调度器,包括VMM中的通用调度器模块,其特征在于,还包括管理域中的服务核请求解析模块,VMM中的Domain特定服务核配置模块、系统顶级调度器模块、服务调度器模块、共享内存机制模块及请求查询模块,HVMDomain中的混合虚拟化模块,其中系统顶级调度器模块中又包含平台处理器核拓扑识别和分析子模块以及服务核分配和回收子模块;服务核请求解析模块,用于HVM Domain创建时服务核的配置,负责将HVM Domain也就是客户机创建时的配置文件中指明的服务核的类型和数量解析,向VMM发出服务核的创建请求;Domain特定服务核配置模块则负责初步解析服务核请求解析模块发来的HVMDomain的服务核创建请求然后发送给系统顶级调度器模块,并在整个HVM Domain的生命周期内管理其服务核相关的信息;系统顶级调度器模块主要用来管理计算机平台中能用的处理器核,并在全局范围内对通用调度器模块和服务调度器模块的能用处理器核资源位图进行调整,负责完成来自Domain特定服务核配置模块中的请求,根据平台处理器核拓扑识别和分析子模块中的拓扑信息,使用服务核分配和回收子模块创建服务核或者回收服务核;平台处理器核拓扑识别和分析子模块负责对系统中拥有的处理器核资源进行识别,处理器核在被识别之后加入顶级调度器使用和管理的能用处理器核资源位图中,初始化之后顶级调度器开始在这些处理器核上运行;服务核分配和回收子模块负责服务核的创建或者回收,从系统能用处理器核资源位图中区分出服务核,并添入服务调度器模块的能用处理器核资源位图中,或者从服务调度器模块的能用处理器核资源位图中删除服务核;服务调度器模块负责服务核的管理和调度;共享内存机制模块负责响应HVM Domain的映射请求,并在共享内存建立之后,触发请求查询模块;混合虚拟化模块首先向VMM请求映射共享内存,共享内存机制模块响应HVM Domain的映射请求,在VMM中建立共享内存区域;在共享内存建立之后,混合虚拟化模块发出HVMDomain对服务核的服务请求,这些请求被写在共享内存区域内;请求查询模块负责查询HVM Domain所属的共享内存区域内的对服务核的服务请求,并把这些请求发送到服务调度器模块;其中,VMM代表虚拟监控器,HVM代表硬件虚拟管理器,Domain代表域。
2. 根据权利要求1所述的面向多核平台的虚拟机监控器非对称调度器,其特征在于, 所述系统顶级调度器模块在系统初始化、HVM Domain创建、服务核创建请求、服务核回收、 HVM Domain销毁、通用核和服务核比例调整、全局范围内的负载调整场合时被触发。
3. 应用权利要求1所述的面向多核平台的虚拟机监控器非对称调度器的调度方法,其 特征在于,包括如下步骤步骤l,客户机创建启动和服务核的创建请求发出;HVM Domain客户机创建时,在管理域中会有一个对应的客户机的创建配置文件,该文 件中会指明客户机使用的vcpu的数量,以及与物理处理器核的绑定信息,同时该配置文件 中也会指明所需的服务核的类型和数量,具体的类型由不同的实施例中特殊指定和实现; 管理域中的服务核请求解析模块将该配置文件中的服务核的类型和数量解析,并将创建需求转变成对VMM的超调用Hypercall,并将该超调用传输给VMM中的Domain特定服务核配 置模块,而Domain特定服务核配置模块在接管超调用Hypercall后,采用一个结构体管理 新创建的HVM Domain的所有信息,包括服务核的配置信息,并初步解析超调用Hypercall, 然后触发VMM中的系统顶级调度器模块运行;其中vcpu代表虚拟处理器,Hypercall代表 超级调用;步骤2,处理器核拓扑识别和分析以及服务核的分配;系统顶级调度器模块中的处理器核拓扑识别和分析子模块会对系统中拥有的处理器 核资源进行识别,处理器核在被识别之后加入系统顶级调度器模块使用和管理的能用处理 器核资源位图中,初始化之后系统顶级调度器模块开始在这些处理器核上运行,直到这些 处理器核被划分给VMM中的通用调度器模块或者被分配成服务核接受VMM中的服务调度器 模块的调度;系统初始化时,系统顶级调度器模块被初始化,系统顶级调度器模块接到创建服务核 的请求后,首先根据平台处理器核拓扑和分析子模块得到平台处理器核的拓扑信息,采用 就近原则选择和HVM Domain的vcpu绑定的物理处理器核相邻的处理器核,如果vcpu没有 设定需要绑定物理处理器核,则按照系统的整体策略,是性能优先还是节能优先的预定策 略进行选择,性能优先时,优先选择空闲的处理器核作为服务核,而节能优先时则优先选择 超线程或者同一封装内的处理器核作为服务核;服务核选定之后,由系统顶级调度器模块中的服务核分配和回收子模块负责服务核的 最终创建过程,服务核分配和回收子模块从系统能用处理器核资源位图中区分出服务核, 并添入服务调度器模块的能用处理器核资源位图中,然后通过处理器间中断IPI唤醒服务 核,并使它从指定的函数开始执行;服务核被创建并开始执行时,并未真正开始提供服务, 直到HVMDomain申请创建共享内存区域之后,服务核才会被真正激活,主动到共享内存区 域轮询任务,或者被服务调度器模块调度时才被激活提供服务;服务核的回收是在服务核 所属的HVMDomain被销毁时触发的,与创建的过程类似,系统顶级调度器模块调用服务核 分配和回收子模块进行回收,并将回收的服务核进行重新分配,根据系统的配置策略,将空 闲的服务核,加入到通用调度器模块的能用处理器核资源位图中,或加入到系统空闲资源 中;步骤3,两级调度器对通用核和服务核调度;VMM启动初期,计算机平台内的所有处理器核都是由系统顶级处理器模块管理和调度 的,随着HVM Domain以及对应的vcpu的创建,通用调度器模块有了调度对象,被初始化并 在所管理的通用核上运行;服务核创建之后,服务调度器模块开始对服务核进行调度,它会轮询各个HVM Domain 与VMM的共享内存区域的服务请求,调用请求查询模块获得新的服务任务发送到服务调度 器模块,服务调度器模块根据任务所属的服务核,将任务插入到该服务核的任务队列,并触 发服务核的运行;如果服务核创建时被指定为直接轮询模式,则不需要服务调度器模块将 任务派发给服务核,服务核直接轮询共享内存区域获得服务请求;步骤4,客户机发出服务请求及对应服务核响应客户机的请求;HVM Domain被创建并启动后,装载HVM Domain中的混合虚拟化模块,混合虚拟化模块 向VMM发出映射共享内存的请求,VMM中的共享内存机制模块响应请求,在VMM的空间中映射共享内存区域,并将共享内存区域的起始地址以及大小信息写入Domain特定服务核配 置模块管理的信息结构体中,共享内存映射成功后对应的服务核上的服务代码开始运行;混合虚拟化模块通过写共享内存的方式发送服务请求,服务请求也能够由运行在用户 态的特定应用程序发出,通过将现有操作系统用户态、内核态模块数据和控制方法交由混 合虚拟化模块代理发送,服务请求发送后,VMM中的请求查询模块将会按照一定频率查询这 些请求,并把这些请求交由服务调度器模块派发到对应的服务核,服务核会根据服务调度 器模块中的调度策略执行自己的任务队列,也能够采用一种服务核直接轮询对应的共享内 存区域的方式, 一旦有请求,直接执行,这种情况适用于实时性要求比较高的服务,或者频 繁执行并决定着系统整体性能的关键服务;当服务核将服务请求执行完毕后,把处理结果 通过共享内存机制模块写回共享内存,混合虚拟化模块或者HVM Domain中的其他内核模块 就能读到返回的服务执行结果。
4. 根据权利要求3中所述的面向多核平台的虚拟机监控器非对称调度方法,其特征在 于,所述步骤2中处理器核拓扑识别和分析子模块会对平台中拥有的处理器核资源进行识 别,识别的主要根据为,是否在一个封装内,是否共享二级缓存,是否是同一个核上的超线 程。
5. 根据权利要求3中所述的面向多核平台的虚拟机监控器非对称调度方法,其特征在 于,步骤2中所述服务核的分配采用就近原则,具体为如果vcpu是一个超线程,则服务核 从最邻近的超线程优先选择,如果vcpu绑定到了一个处理器核,则服务核优先从同处于一 个封装内的其它处理器核分配,更进一步,如果同一封装内有些处理器核和vcpu绑定的处 理器核共享二级缓存,另一些不共享,则优先选择共享二级缓存的处理器核。
6. 根据权利要求3中所述的面向多核平台的虚拟机监控器非对称调度方法,其特征在 于,所述步骤4中HVM Domain与V匪之间建立的共享内存,在VMM中有统一的地址空间,在 HVM Domain系统内部也有自己的映射空间,VMM中对这些共享内存中的请求区域是统一管 理的,对请求的管理采用轮询的同步通讯方式,或采用消息传递的方式。
全文摘要
本发明公开了一种面向多核或众核平台的虚拟机监控器非对称调度器及其调度方法,基于现有的虚拟机监控器VMM,为客户操作系统提供了满足特殊高性能需求的专门的服务核。本发明包括管理域中的服务核请求解析模块,VMM中的Domain特定服务核配置模块、系统顶级调度器模块、服务调度器模块、共享内存机制模块及请求查询模块,HVM Domain中的混合虚拟化模块。本发明中的非对称调度器不仅可以针对上层Domain的需求提供不同的服务核,而且在服务核的分配时考虑到物理平台的拓扑结构,比传统的调度器提供了更强的灵活性和可扩展性,同时为客户操作系统提供了特定应用类型的加速机制,改善了整个平台的使用效率。
文档编号G06F9/455GK101727351SQ20091024183
公开日2010年6月9日 申请日期2009年12月14日 优先权日2009年12月14日
发明者张炯, 文成建, 白跃斌, 贺俊, 高小鹏, 龙翔 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1