一种基于当前vcpu调度状态的动态中断均衡映射方法

文档序号:6535805阅读:227来源:国知局
一种基于当前vcpu调度状态的动态中断均衡映射方法
【专利摘要】本发明公开了基于当前VCPU调度状态的动态中断均衡映射方法,当SMP虚拟机的虚拟I/O?APIC接收到一个虚拟中断后,需要将该虚拟中断映射给虚拟机的某一个VCPU时,根据当前VM的所有VCPU在VMM调度器中的调度状态,分析出处于活跃状态的部分VCPU,并且将该虚拟中断映射到活跃VCPU中,以获得较低的中断处理延时。如果同时有多个VCPU处于活跃状态,则进一步考虑各个活跃VCPU的中断负载,并且将该中断映射给当前负载最低的活跃VCPU,进一步保证各个VCPU之间的中断处理负载均衡,使得SMP结构下VCPU的负载更加对称,从而促进SMP结构下各个VCPU整体性能的均衡发挥。
【专利说明】—种基于当前VCPU调度状态的动态中断均衡映射方法
【技术领域】
[0001]本发明涉及计算机系统虚拟化、虚拟机中断处理、虚拟机调度器领域,具体地,涉及一种基于当前VCPU调度状态的动态中断均衡映射方法。
【背景技术】
[0002]虚拟化技术通常将原本需要多台物理设备实现的计算或存储功能整合到一台功能相对强大的物理服务器中去,从而实现了硬件资源的整合与再分配,提高了硬件设备的利用率,在云计算以及数据中心构建中发挥着非常重要的作用。虚拟机相对于真实的物理设备,体现出很多明显的优势。首先,云计算与虚拟化技术允许企业用户使用虚拟机进行作业,从而用户不需要购置一套真实的IT设备,有效减少了企业用户在维护IT基础架构上的经济成本和管理成本。第二,基于镜像的虚拟机创建方式灵活实用,通过镜像备份技术能够很好地处理服务器灾备、重建、批量复制等问题。此外,基于虚拟机监视器(VirtualMachine Monitor, VMM)的虚拟机管理方式能够从软硬件的层面灵活处理物理资源和虚拟资源的映射关系,提供性能隔离、安全隔离、状态监控等一系列必要功能。
[0003]虚拟机监视器是指存在于硬件和传统操作系统之间的一个软件管理层,其主要作用是管理真实的物理设备,例如物理CPU、内存等,并将底层的硬件抽象为对应的虚拟设备接口,使多个操作系统得到各自所需的虚拟硬件,从而使他们能够同时在同一个物理设备上运行。
[0004]物理设备和虚拟操作系统之间引入的虚拟机监视器作为中间层,不可避免地使得虚拟操作系统的性能受到一定的影响,其中一个重要的方面是增加了中断的响应延时。多个VCPU共享一个物理CPU时,需要对物理CPU进行分时复用,VCPU在VMM的调度队列中的等待时间会反映到该VCPU对事件的响应时间中,进而使得中断等事件的响应延时严重增加。
[0005]学术界目前对于虚拟中断延时问题的研究,主要集中在单核虚拟机上。在单核虚拟机中,由于一个虚拟机只持有一个VCPU,对中断延时的解决方法多采用减少物理CPU分时复用的时间片长度、提高VCPU之间的切换频率以及增加抢占机会等手段。这些方法在一定程度上能够降低调度延时,但同时也不可避免地增加了 VCPU上下文切换的频率,引入了额外的系统开销,从而浪费了 CPU的计算能力。对于对称式多处理器(SymmetricMult1-Processor, SMP)架构的虚拟机,目前学术界的研究则多集中在VCPU协同调度的问题上,即虚拟机中多个VCPU之间的同步和通信问题,对中断等事件延时问题的研究则相对较少。
[0006]目前,在虚拟机监视器的实例,例如KVM与XEN的实现中,主要采用虚拟中断处理设备的方式来处理虚拟机中的中断。在XEN中,虚拟机根据虚拟化的方式分成两种类型,即全虚拟化和半虚拟化。在全虚拟化模式下,虚拟操作系统不需要经过任何修改,XEN通过虚拟中断处理平台来实现虚拟中断处理;而在半虚拟化中,虚拟操作系统的内核需要被修改以适应宿主机的操作系统,XEN通过事件通道机制实现中断和事件处理。KVM则没有全虚拟化和半虚拟化的区别,虚拟机的中断在KVM中都是通过虚拟中断处理设备来处理的。
[0007]在虚拟机的中断架构中,和物理平台一样,每一个VCPU都对应了 一个虚拟本地APIC (Advanced Programmable Interrupt Controller)由于接收中断。虚拟平台也包含了虚拟I/O APIC、虚拟PIC等虚拟设备来发送中断。和VCPU—样,虚拟I/O APIC、虚拟本地APIC、虚拟PIC都是VMM维护的软件实体。通常SMP架构虚拟机的虚拟设备,例如虚拟网卡等调用虚拟I/O APCI发出中断请求,虚拟I/O APIC根据中断和VCPU的映射关系选择一个VCPU作为中断的接收者,将中断请求发送到该目标VCPU的虚拟本地APIC中。虚拟本地APIC进一步利用VT-x的事件注入机制最终完成虚拟中断的注入。
[0008]需要指出的是,在多VCPU架构的虚拟机中,各个VCPU在调度器的调度下对物理CPU进行分时复用,进而出现部分VCPU活跃、部分VCPU处于排队状态的局面。现有的虚拟机中断处理技术中,当虚拟I/O APIC需要将中断请求映射到VCPU中时,没有考虑VCPU当前的调度状态,盲目地为中断分配VCPU。虚拟中断被分配给处于调度等待状态的VCPU时,VCPU在调度队列中的等待延时成为了该中断的响应延时的一部分,从而大大提高了中断请求的响应延迟,降低了中断请求的处理速率。

【发明内容】

[0009]鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于当前VCPU调度状态和中断处理负载分析的动态中断均衡映射方法,在中断映射的同时既考虑了 VCPU作为中断映射的目标结构在VMM的调度器中的调度状态,又考虑了各个VCPU之间的中断负载均衡,从而有效地降低了中断处理延时。
[0010]为实现上述目的,本发明提供了一种基于当前VCPU调度状态和中断处理负载分析的动态中断均衡映射方法,其特征在于:当SMP虚拟机的虚拟I/O APIC接收到一个虚拟中断后,需要将该虚拟中断映射给虚拟机的某一个VCPU时,根据当前VM的所有VCPU在VMM调度器中的调度状态,分析出处于活跃状态的部分VCPU,并且将该虚拟中断映射到活跃VCPU中,以获得较低的中断处理延时。如果同时有多个VCPU处于活跃状态,则进一步考虑各个活跃VCPU的中断负载,并且将该中断映射给当前负载最低的活跃VCPU,以实现VCPU中断负载平衡。
[0011]本发明提供一种基于当前VCPU调度状态的动态中断均衡映射方法,其特征在于,方法包括以下步骤:
[0012](I)每当虚拟硬件产生一个虚拟中断,虚拟I/O APIC接收虚拟中断,并将虚拟中断传送到目标VCPU的虚拟本地APIC ;
[0013](2)中断均衡分配器在虚拟中断被传送到目标VCPU的虚拟本地APIC之前拦截虚拟中断;
[0014](3)中断均衡分配器查看调度器提供的调度状态信息,获得处于活跃状态的VCPU列表;
[0015](4)中断均衡分配器根据处于活跃状态的VCPU列表,重新选定目标VCPU ;
[0016](5 )中断均衡分配器将虚拟中断传送到步骤(3 )中重新选定的目标VCPU的虚拟本地 APIC ;
[0017](6)目标VCPU的虚拟本地APIC向目标VCPU进行虚拟中断注入。[0018]进一步地,步骤(3)中选定目标VCPU的方法包括步骤:
[0019](31)获得处于活跃状态的VCPU列表中VCPU的个数;
[0020](32)如果个数为O,根据调度状态信息,选定目标VCPU ;如果个数为1,选定处于活跃状态的VCPU列表中VCPU为目标VCPU ;如果个数大于I,根据处于活跃状态的VCPU列表中VCPU的中断负载,选定目标VCPU。
[0021]当处于活跃状态的VCPU列表中只有一个VCPU,选定该VCPU为目标VCPU,将虚拟中断映射到该活跃VCPU中,以获得较低的中断处理延时。
[0022]进一步地,步骤(32)中根据调度状态信息,选定目标VCPU的方法包括步骤:
[0023](321)读取调度状态信息;
[0024](332)选定所有VCPU中预测最快进入活跃状态的VCPU为目标VCPU。
[0025]当处于活跃状态的VCPU列表中没有VCPU,也就是没有VCPU处于活跃状态,选定预测最快进入活跃状态的VCPU为目标VCPU,将虚拟中断映射到该活跃VCPU中,以获得较低的中断处理延时。
[0026]进一步地,步骤(332)中预测最快进入活跃状态的VCPU的依据是VCPU处于空闲状态。
[0027]处于空闲状态的VCPU可能最快进入活跃状态,这是因为CREDIT调度器设计允许IDLE状态的VCPU在需要应答事件时进行抢占,因此选定处于空闲状态的VCPU为目标VCPU,将虚拟中断映射到该VCPU中,以获得较低的中断处理延时。
[0028]进一步地,如果所述VCPU均未处于空闲状态,步骤(332)中预测最快进入活跃状态的VCPU的依据VCPU在等待队列中位置与剩余信用值。
[0029]对于所有的VCPU,优先考虑其在各自的等待队列中所处的位置,越是靠近队首的VCPU就越有可能最快进入活跃状态。然后,当有相同排位的VCPU时,再考虑VCPU的剩余信用值,选择剩余信用值大的作为目标VCPU,以获得较低的中断处理延时。
[0030]进一步地,步骤(32)中根据处于活跃状态的VCPU列表中VCPU的中断负载,选定目标VCPU的方法包括步骤:
[0031](323)读取当前虚拟机结构体维护的VCPU中断负载表;
[0032](334)比较处于活跃状态的VCPU列表中VCPU的中断负载,选定中断负载最小的VCPU为目标VCPU。
[0033]当处于活跃状态的VCPU列表中有多个VCPU,将虚拟中断映射给当前中断负载最低的活跃VCPU,在获得较低的中断处理延时的同时实现VCPU中断负载平衡。
[0034]进一步地,步骤(I)中虚拟硬件包括为虚拟设备和/或经VMM中断处理的物理设备。
[0035]进一步地,步骤(5)中通过VT-X的事件注入机制完成虚拟中断注入。
[0036]进一步地,在虚拟机SHARED_INF0结构的基础上增加成员变量sched_info,用于记录VCPU的调度状态。
[0037]进一步地,每当调度器发生一次VCPU切换,被换入的VCPU和被换出的VCPU完成上下文交换后,被换入的VCPU成为活跃VCPU,活跃VCPU所属的虚拟机SHARED_INF0结构的schedjnfo成员变量标记为活跃;被换出的VCPU的所属的虚拟机SHARED_INF0结构的sched_info成员变量标记为等待。[0038]与现有技术相比,本发明提供的基于当前VCPU活跃状态的动态中断映射方法具有以下有益的技术效果:
[0039](I)根据当前VCPU的调度状态,将虚拟中断映射到活跃的VCPU,有效减少了因为调度延时而产生的中断请求处理延时,从而保证了虚拟中断及时注入目标VCPU中,获得较低的中断处理延时,提高了中断响应速度。
[0040](2)当多个VCPU处于活跃状态时,选定中断负载最小的VCPU为目标VCPU,进一步保证各个VCPU之间的中断处理负载均衡,使得SMP结构下VCPU的负载更加对称,从而促进SMP结构下各个VCPU整体性能的均衡发挥。
[0041](3)由于本发明的方案并没有要求减小调度周期的时间片长度、增加VCPU上下文切换频率或在VCPU之间引入新的抢占机制,因此,本发明在有效减少中断响应延时的同时,没有引入额外的计算能力的浪费,有利于计算密集型负载的运行,保证了较高的CPU利用率。
[0042](4)由于中断在操作系统中具有很重要的作用,提高中断处理速率能够使得虚拟机的整体响应能力也得到一定程度的提高。
【专利附图】

【附图说明】
[0043]图1是物理平台上的中断处理结构示意图;
[0044]图2是现有的SMP虚拟机技术中虚拟中断处理器的结构示意图;
[0045]图3是本发明的一个实施例的虚拟中断处理器的示意图;
[0046]图4是图3所示的虚拟中断处理器的虚拟中断映射的建立过程示意图。
【具体实施方式】
[0047]以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
[0048]图1是物理平台上的中断处理结构示意图。在物理平台上,I/O设备首先通过中断控制器(I/O APIC或者PIC)发出中断请求,这个中断请求通过PCI总线发送到系统总线上,最后目标CPU的本地APIC部件接收此中断,目标CPU开始处理该中断。
[0049]图2是现有的SMP虚拟机技术中虚拟中断处理器的结构示意图。在虚拟机的环境下,VMM也需要为客户机操作系统呈现一个与物理中断架构类似的虚拟中断架构。和在真实的物理平台上一样,在虚拟SMP架构下,每一个VCPU也对应了 一个虚拟本地APIC用于接收中断,而VMM则提供虚拟I/O APIC用于发送中断。当某个虚拟设备,例如虚拟网卡等需要发送一个中断时,虚拟设备首先调用虚拟I/O APIC提供的接口发送中断。虚拟I/O APIC根据得到的中断请求,选择一个VCPU作为该中断的处理者,将中断交给该VCPU对应的本地APIC0最后,虚拟本地APIC利用VT-x的事件注入机制将中断注入到对应的目的VCPU中,由VCPU处理中断。类似于VCPU,虚拟中断处理器中涉及到的虚拟本地APIC、虚拟I/O APIC、虚拟PIC等也都是VMM维护的软件实体。
[0050]图3是本发明的一个实施例的虚拟中断处理器的示意图。与现有的虚拟中断处理器相比,本实施例中的虚拟中断处理器中增加了中断均衡分配器,中断均衡分配器处于原有的虚拟I/O APIC与虚拟本地APIC之间。[0051]中断均衡分配器从VMM的调度器中读取到VCPU的基本调度信息,分析出当前时刻虚拟机的VCPU的调度状态,即哪些VCPU处于活跃状态,哪些VCPU处于调度等待状态。当虚拟I/O APIC需要发送一个中断请求时,中断均衡分配器截获此中断请求,根据已有的知识代替虚拟I/o APIC选择处理中断的目标VCPU,进而将该中断发送至目标VCPU的虚拟本地APIC,发起中断注入。
[0052]图4是图3所示的虚拟中断处理器的虚拟中断映射的建立过程示意图。图中具体说明了中断均衡分配器的工作过程。当中断均衡分配器需要处理一个中断请求时,中断均衡分配器首先基于从调度器得到的调度信息来分析当前虚拟机的各个VCPU的调度和中断负载情况。
[0053]若当前只存在唯一的活跃VCPU,即该虚拟机的VCPU中只有一个VCPU目前取得了实际的运行权,在物理CPU上运行,则将此VCPU作为目标VCPU记录下来。
[0054]若当前没有VCPU处于活跃状态,即虚拟机的所有VCPU均处在调度器的等待队列中,则中断均衡分配器对各个VCPU进入活跃状态的可能性进行推测,选定最快能够进入活跃状态的VCPU作为目标VCPU。推测的依据来自调度器提供的信息,例如VCPU是否处于IDLE状态,CREDIT调度器下各个VCPU的剩余信用值等。一般来说,在CREDIT调度器中,处于IDLE状态的VCPU是最合适的目标选择,因为CREDIT调度器设计允许IDLE状态的VCPU在需要应答事件时进行抢占。对于所有的VCPU,优先考虑其在各自的等待队列中所处的位置,越是靠近队首的VCPU就越有可能最快进入活跃状态。然后,当有相同排位的VCPU时,再考虑VCPU的剩余信用值,选择剩余信用值大的作为目标VCPU,以获得较低的中断处理延时。
[0055]若当前有多个VCPU处于活跃状态,中断均衡分配器依次读取各个处于活跃状态的VCPU的中断负载情况,选取最小负载的VCPU作为目标VCPU。确定目标VCPU之后,中断均衡分配器继续中断处理流程,代替虚拟I/O APIC发起中断注入。
[0056]本发明基于当前VCPU活跃状态和VCPU中断处理负载分析进行中断均衡分配的动态中断映射方法具体步骤如下:
[0057]步骤1、每当VMM的VCPU调度器发生一次有效的VCPU切换,被换入的VCPU和被换出的VCPU完成上下文交换后,被换入的VCPU成为活跃VCPU,真正在物理CPU上运行,此时该VCPU所属的虚拟机结构体根据VCPU的ID将被换入的VCPU状态标记为活跃,同时把被换出的VCPU的状态标记为等待。
[0058]步骤2、每当虚拟设备产生一个虚拟中断需要处理时,在该虚拟中断被虚拟I/OAPIC映射到VCPU之前拦截该虚拟中断,同时查看当前虚拟机的VCPU状态表,得出处于活跃状态的VCPU列表。若活跃VCPU列表中只有一个VCPU,则选中其为目标VCPU,转步骤5 ;若当前时刻没有VCPU处于活跃状态,转步骤3 ;若有多于一个VCPU处于活跃状态,转步骤4。
[0059]步骤3、当前时刻没有VCPU处于活跃状态,则根据调度器提供的各个VCPU调度信息推测最早能够进入活跃状态的VCPU,选中其为目标VCPU,转步骤5.[0060]步骤4、当存在多个处于活跃状态的VCPU时,则进一步读取当前虚拟机结构体维护的VCPU中断负载表,比较各个活跃VCPU的当前中断负载,选取负载相对最小的VCPU作为目标VCPU。[0061]步骤5、更新目标VCPU的中断负载状态,并且将当前虚拟中断映射到动态选取的目标VCPU中,最后继续完成中断注入。
[0062]具体地,本发明的中断映射方案具体实现步骤主要分为两部分,第一部分步骤如下:
[0063]步骤1、在原有虚拟机的SHARED_INF0结构的基础上增加一个新的成员变量sched_info,用于记录VCPU的调度状态。该步骤的主要代码实现如下:
[0064]
【权利要求】
1.一种基于当前VCPU调度状态的动态中断均衡映射方法,其特征在于,所述方法包括以下步骤: (1)每当虚拟硬件产生一个虚拟中断,虚拟I/OAPIC接收所述虚拟中断,并将所述虚拟中断传送到目标VCPU的虚拟本地APIC ; (2)中断均衡分配器在所述虚拟中断被传送到所述目标VCPU的虚拟本地APIC之前拦截所述虚拟中断; (3)所述中断均衡分配器分析调度器提供的调度状态信息,获得处于活跃状态的VCPU列表; (4)所述中断均衡分配器根据所述处于活跃状态的VCPU列表,重新选定目标VCPU; (5)所述中断均衡分配器将所述虚拟中断传送到步骤(3)中重新选定的目标VCPU的虚拟本地APIC ; (6)所述目标VCPU的虚拟本地APIC向所述目标VCPU进行所述虚拟中断注入。
2.如权利要求1所述的方法,其特征在于,步骤(3)中选定目标VCPU的方法包括步骤: (31)获得所述处于活跃状态的VCPU列表中VCPU的个数; (32)如果所述个数为O,根据所述调度状态信息,选定所述目标VCPU;如果所述个数为I,选定所述处于活跃状态的VCPU列表中VCPU为所述目标VCPU ;如果所述个数大于I,根据所述处于活跃状态的 VCPU列表中VCPU的中断负载,选定所述目标VCPU。
3.如权利要求2所述的方法,其特征在于,步骤(32)中根据调度状态信息,选定所述目标VCPU的方法包括步骤: (321)读取所述调度状态信息; (332)选定所有VCPU中预测最快进入活跃状态的VCPU为所述目标VCPU。
4.如权利要求3所述的方法,其特征在于,步骤(332)中预测最快进入活跃状态的VCPU的依据是VCPU处于空闲状态。
5.如权利要求3所述的方法,其特征在于,如果所述VCPU均未处于空闲状态,步骤(332)中预测最快进入活跃状态的VCPU的依据是VCPU在等待队列中位置与剩余信用值。
6.如权利要求2所述的方法,其特征在于,步骤(32)中根据所述处于活跃状态的VCPU列表中VCPU的中断负载,选定目标VCPU的方法包括步骤: (323)读取当前虚拟机结构体维护的VCPU中断负载表; (334)比较所述处于活跃状态的VCPU列表中VCPU的中断负载,选定中断负载最小的VCPU为目标VCPU。
7.如权利要求1所述的方法,其特征在于,步骤(1)中所述虚拟硬件包括为虚拟设备和/或经VMM中断处理的物理设备。
8.如权利要求1所述的方法,其特征在于,步骤(5)中通过VT-x的事件注入机制完成所述虚拟中断注入。
9.如权利要求1所述的方法,其特征在于,在虚拟机SHARED_INFO结构的基础上增加成员变量sched_info,用于记录VCPU的调度状态。
10.如权利要求9所述的方法,其特征在于,每当调度器发生一次VCPU切换,被换入的VCPU和被换出的VCPU完成上下文交换后,被换入的VCPU成为活跃VCPU,所述活跃VCPU所属的虚拟机SHARED_INFO结构的schedjnfo成员变量标记为活跃;被换出的VCPU的所属的虚拟机SHARED_INFO 结构的sched_info成员变量标记为等待。
【文档编号】G06F9/455GK103744716SQ201410018108
【公开日】2014年4月23日 申请日期:2014年1月15日 优先权日:2014年1月15日
【发明者】管海兵, 李健, 马汝辉, 朱敏君, 周凡夫 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1