基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法

文档序号:10724711阅读:380来源:国知局
基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法
【专利摘要】本发明公开了一种基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,其特征在于:当SRIOV直接分配设备利用MSI/MSI?X机制向虚拟机产生一个物理中断后,通过分析该虚拟机当前所有虚拟CPU的运行状态和历史运行数据,利用APICv硬件技术和Posted Interrupt硬件技术在不引起VM exit的情况下将该物理中断直接递交至目前正在运行的或者即将最先被调度的虚拟CPU上,从而避免VM exit带来的上下文交换负载和虚拟CPU调度不均引起的中断延时,有效提高虚拟环境下的中断处理效率,获得整体性能的提升。
【专利说明】
基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法
技术领域
[0001]本发明涉及虚拟机中断控制领域,尤其涉及一种基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法。
【背景技术】
[0002]虚拟化技术是当前云计算基础设施架构的重要支撑技术之一,通过在原有的硬件层和操作系统层之间增加一层虚拟机管理层,虚拟化技术将下层硬件资源进行整合抽象并以虚拟资源的形式提供给上层虚拟机使用并确保各个虚拟机之间的隔离性和安全性,允许物理机上的物理资源(CPU,内存,磁盘等)在各个虚拟机上的复用,进而降低运作成本,提高物理资源利用率。现有的云计算数据中心使用虚拟机管理软件,比如VMware,Virtual PC,Virtual Server,Xen,KVM以及Hyper-V,来确保服务器的稳定性、资源管理的灵活性、良好的虚拟机热迀移属性和双机容错性。
[0003]基于x86指令集本身的局限,现有的虚拟化技术根据对虚拟机操作系统的修改程度可分为三种:全虚拟化,半虚拟化和硬件辅助虚拟化。全虚拟化技术无需修改虚拟机操作系统,当虚拟机涉及敏感指令操作时将其“陷入”到虚拟机管理层,由虚拟机管理软件进行模拟操作;半虚拟化技术采用更为主动地方法,通过修改虚拟机操作系统代码,将敏感指令操作修改为对虚拟机管理软件的超级调用,由虚拟机管理软件来控制这些操作;硬件辅助虚拟化采用全新的理念,通过为处理器引入新的运行模式和指令,使虚拟机管理软件和虚拟机操作系统处于特权不同的两种操作模式下,虚拟机操作系统处于特权较低的受控模式,涉及到敏感指令的操作在受控模式下会陷入到虚拟机管理软件,极大的提高的虚拟机运行效率。目前最为流行的硬件辅助技术是Intel VT-x技术,增加了虚拟机管理软件所处的根(Root)模式和虚拟机操作系统所处的非根(Non-root)模式。硬件辅助虚拟化技术既能不修改虚拟机操作系统又能实现高效地操作系统转换问题,已经成为了未来的发展趋势。
[0004]虚拟化环境下的中断架构与物理环境下的相同,虚拟机管理软件为每个虚拟CPU维护了一个本地虚拟中断控制器(Advanced Programmable Interrupt Controller)用来递交和处理中断。目前最新的中断产生机制是MSI(Message Signaled Interrupt)和它的扩展MS1-X机制,1/0设备使用MSI地址和MSI数据通过一个特定的写操作向虚拟机发出IRQ请求,虚拟机收到以后再将该写操作转化成中断并递交给目的虚拟CPU的中断控制器(LAPIC) ο
[0005]基于x86现有架构的限制,SR10V(Single_Root1/0 Virtualizat1n)直接分配设备通过MSI/MS1-X机制产生的物理中断会被虚拟机管理软件(以下简称VMM)截获并导致运行该虚拟机的虚拟CPU产生VM-exit操作。VMM通过修改为该虚拟机维护的虚拟中断控制寄存器的值在下次VM entry时将虚拟中断注入到该虚拟机中。当虚拟机处理完中断后又要通知虚拟中断控制器End Of Interrupt信息,该特权操作会引起第二次VM exit。值得注意的是,每次VM exit涉及的控制流的转移都会带来巨大的上下文切换开销,从而造成中断处理效率的下降和延迟的增加。另外,在目前被广泛使用的对称多处理架构中,每个虚拟机持有多个虚拟CPU,VMM调度器需要全局动态的调度各个虚拟CPU运行在物理CPU上,如果一个处于等待调度状态的虚拟CPU接收到中断请求,那必然会增加该中断的处理延时。综上所述,从I/O设备产生中断到最终的中断处理函数被触发需要经过很长一段时间,VM-exit和虚拟(PU调度延时是造成I/O虚拟化瓶颈的重要原因。
[0006]现有的一些硬件技术可以通过消除VM exit数量在一定程度上降低I/O处理延迟,最新的Intel APICv技术和Posted-1nterrupt机制将原有的由VMM为各个虚拟机维护的虚拟中断控制单元实现在硬件层面并将其直接映射到为虚拟机维护的虚拟APIC页内,由硬件直接递交中断。APICv技术虽然可以消除VM exit,但在硬件层面进行中断递交时没有考虑当前目的虚拟CPU的运行状态,所以由于虚拟CPU调度不及时引起的中断延时仍然存在。因此在实际的系统中仍然存在相当的局限性。
[0007]因此,本领域的技术人员致力于开发一种基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,用来解决现有的虚拟机中断递交和处理机制缺陷造成的I/o响应延迟以及虚拟CPU负载过高的问题。

【发明内容】

[0008]有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是虚拟机中断递交和处理机制缺陷造成的I/o响应延迟以及虚拟CPU负载过高。
[0009]为实现上述目的,本发明提供了一种基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,包括如下步骤:
[0010]步骤I:当SR1V直接分配设备通过MSI/MS1-X机制产生一个物理中断后,所述物理中断首先经由1MMU进行中断重映射,然后由硬件通过直接修改虚拟中断目的虚拟CPU的PID对应位;
[0011]步骤2:VMM使用特定的中断向量向目的虚拟CPU所在的物理CPU发送通知事件告知所述物理中断的到来;
[0012]步骤3:物理CPU收到所述通知事件并从所述PID里取出所述物理中断的信息进行处理;
[0013]步骤4:中断递交器在所述物理中断被递交到目的虚拟CPU之前将所述物理中断拦截;
[0014]步骤5:所述中断递交器根据VMM调度器中该虚拟机的所有虚拟CPU的调度信息,动态确定出该虚拟机当前正在运行的虚拟CPU,如果没有,则选择即将最先被调度的虚拟CPU;
[0015]步骤6:所述中断递交器通知硬件根据步骤I将所述物理中断直接递交至步骤5中选择的虚拟CPU,并依次执行步骤2和步骤3。
[0016]进一步地,所述步骤2前插入
[0017]步骤2-1:将所述物理中断信息直接写入硬件为各个虚拟CHJ维护的虚拟APIC页内。
[0018]进一步地,所述步骤5中所述动态确定采用基于KVM的CFS调度算法。
[0019]进一步地,所述步骤5只记录中断递交时正在运行的虚拟CPU,并不改动VMM或虚拟机操作系统,对虚拟机完全透明。
[0020]本发明提供一种基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,利用最新的APICv硬件技术和Posted Interrupt机制,结合对虚拟CPU的运行状态的全局把握与分析,将中断直接递交到正在运行的或离物理CPU最近的虚拟CPU上,同时考虑各个虚拟CPU的中断处理负载均衡,有效的降低了从中断产生到中断处理函数被触发之间的延时,提高虚拟化环境下的中断处理效率。
[0021]与现有技术相比,本发明提供的基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法具有以下有益的技术效果:
[0022](I)利用最新的硬件辅助技术,将中断信息直接写入硬件为各个虚拟CPU维护的虚拟APIC页内,再由VMM所在的物理CPU向中断目的虚拟CPU所在的物理CPU发送通知事件,减少了传统中断处理过程带来的多次VM exit操作,极大地降低了中断延时,获得了整体性能的提升。
[0023](2)基于KVM的CFS(Completely Fair Schedule)调度算法将每个虚拟CPU视为普通进程进行完全公平的调度,引入“虚拟运行时间”概念,采用红黑树来构建一个未来的进程执行的“时间轴”并且根据进程已经占用的CPU时间来动态更新红黑树的键值,每次挑选树中处于最左边的虚拟CPU进程执行的特点,将物理中断信息直接递交至该虚拟机当前正在运行的虚拟CPU,从而进一步中断目的CPU调度不当引起的中断处理延时。
[0024](3)由于本发明的方案只需要记录中断递交时正在运行的虚拟CPU,并不要求VMM或虚拟机操作系统的其他改动,对虚拟机完全透明。
[0025](4)虚拟化环境下的中断处理时造成I/O虚拟化瓶颈的重要原因,本发明有效消除了从中断产生到具体中断处理函数被调用之间的所有延时,使得虚拟机的I/O响应速率得到很大提尚。
[0026]以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
【附图说明】
[0027]图1是传统的虚拟化环境下的中断处理流程示意图;
[0028]图2是虚拟化环境下基于硬件辅助技术的中断处理流程示意图;
[0029]图3是本发明的一个较佳实施例的虚拟化环境下中断处理流程示意图。
【具体实施方式】
[0030]以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
[0031]图1是传统的虚拟化环境下的中断处理流程示意图。在虚拟化环境下,SR1V直接分配设备通过MSI/MS1-X机制产生的物理中断会被VMM截获并导致运行该虚拟机的虚拟CPU产生VM-exit操作。VMM通过修改为该虚拟机维护的虚拟中断控制寄存器和VMCS( VirtualMachine Control Structure)的值在下次VM entry时将虚拟中断注入到该虚拟机中。当虚拟机处理完中断后又要通知虚拟中断控制器End Of Interrupt信息,该特权操作会引起第二次VM exit。最后VMM完成EOI写操作并重启虚拟机。
[0032]图2是虚拟化环境下基于硬件辅助技术的中断处理流程示意图;APICv技术为在每个虚拟机的VMCS数据结果中维护了一个虚拟APIC页和Posted Interrupt Descriptor描述符,将原有的由VMM为每个虚拟机维护的虚拟中断控制器实现在了硬件层面,当SR1V直接分配设备通过MSI/MS1-X机制产生一个物理中断后,该中断直接由硬件递交至目的虚拟CPU并修改该虚拟机的的PID(Posted Interrupt Descriptor)对应位,同时由VMM向该虚拟CPU所在的物理CPU发出一个特殊的事件通知中断的到来,最后虚拟机从该页中取出中断信息直接进行处理。
[0033]图3是本发明的一个实施例的虚拟化环境下中断处理流程示意图。与现有的虚拟化环境下中断处理流程相比,本实施例的中断处理流程中采用了最新的APICv硬件辅助技术,并在硬件层面与虚拟机之间增加了中断递交器。
[0034]中断递交器从VMM的调度器中(本发明采用KVM的CFS调度器)获得当前中断目的虚拟机的所有虚拟CHJ的运行状态和调度信息。当SR1V直接分配设备通过MSI/MS1-X机制产生一个物理中断后,中断递交器截获此中断,通过从调度器里获得的虚拟CPU的运行信息,直接将中断递交至当前正在运行的虚拟CPU上,即修改该虚拟CPU的PID(Posted InterruptDescriptor)对应位,同时由VMM向该虚拟CPU所在的物理CPU发出一个特殊的事件通知中断的到来,最后虚拟机从该页中取出中断信息直接进行处理。
[0035]本发明基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法具体步骤如下:
[0036]步骤1:当SR1V直接分配设备通过MSI/MS1-X机制产生一个物理中断后(如果是SR1V直接分配设备产生的中断,需要经由1MMU进行中断重映射),由硬件直接修改虚拟中断目的虚拟CPU的PID(Posted Interrupt Descriptor)对应位从而将该中断递交至目的虚拟 CPU;
[0037]步骤2:VMM使用特定的中断向量(Notificat1n Event Vector)向目的虚拟CPU所在的物理CPU发送通知事件告知中断到来;
[0038]步骤3:物理CPU收到通知并从PID(Posted Interrupt Descriptor)里取出中断信息进行处理;
[0039]步骤4:中断递交器在物理中断被递交到目的虚拟CPU之前将物理中断拦截;
[0040]步骤5:中断递交器根据VMM调度器中该虚拟机的所有虚拟CPU的调度信息,动态确定出该虚拟机当前正在运行的虚拟CPU,如果当前没有虚拟CPU在运行,选择即将最先被调度的虚拟CPU;
[0041]步骤6:中断递交器通知硬件根据步骤I将中断直接递交至步骤5中选择的虚拟CPU,并依次执行步骤2、3;
[0042]本发明提供的基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,利用最新的APICv硬件技术,将中断信息直接写入硬件为各个虚拟CPU维护的虚拟APIC页内,再由VMM所在的物理CPU向中断目的虚拟CPU所在的物理CPU发送通知事件,减少了传统中断处理过程带来的多次VM exit操作。基于KVM的CFS(Completely Fair Schedule)调度算法将物理中断信息直接递交至该虚拟机当前正在运行的虚拟CPU,本发明有效消除了从中断产生到具体中断处理函数被调用之间的所有延时,使得虚拟机的I/o响应速率得到很大提高,获得了整体性能的提升。
[0043]以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
【主权项】
1.一种基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,其特征在于,包括如下步骤: 步骤I:当SR1V直接分配设备通过MSI/MS1-X机制产生一个物理中断后,所述物理中断首先经由1MMU进行中断重映射,然后由硬件直接修改中断目的虚拟CPU的PID对应位; 步骤2:VMM使用特定的中断向量向目的虚拟CPU所在的物理CPU发送通知事件告知所述物理中断的到来; 步骤3:物理CPU收到所述通知事件并从所述PID里取出所述物理中断的信息进行处理; 步骤4:中断递交器在所述物理中断被递交到目的虚拟CPU之前将所述物理中断拦截; 步骤5:所述中断递交器根据VMM调度器中该虚拟机的所有虚拟CPU的调度信息,动态确定出该虚拟机当前正在运行的虚拟CPU,如果没有,则选择即将最先被调度的虚拟CPU; 步骤6:所述中断递交器通知硬件根据步骤I将所述物理中断直接递交至步骤5中选择的虚拟CPU,并依次执行步骤2和步骤3。2.如权利要求1所述的基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,其特征在于,所述步骤2前插入 步骤2-1:将所述物理中断信息直接写入硬件为各个虚拟CRJ维护的虚拟APIC页内。3.如权利要求1所述的基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,其特征在于,所述步骤5中所述动态确定采用基于KVM的CFS调度算法。4.如权利要求1所述的基于硬件辅助技术和虚拟CPU运行状态的直接中断递交方法,其特征在于,所述步骤5只记录中断递交时正在运行的虚拟CPU,并不改动VMM或虚拟机操作系统,对虚拟机完全透明。
【文档编号】G06F9/48GK106095578SQ201610415947
【公开日】2016年11月9日
【申请日】2016年6月14日 公开号201610415947.8, CN 106095578 A, CN 106095578A, CN 201610415947, CN-A-106095578, CN106095578 A, CN106095578A, CN201610415947, CN201610415947.8
【发明人】管海兵, 张望, 马汝辉, 李健, 胡小康
【申请人】上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1