针对中断持有者抢占问题的综合调度方法及装置与流程

文档序号:14594582发布日期:2018-06-05 03:52阅读:600来源:国知局

本发明涉及计算机技术领域,尤其涉及一种针对中断持有者抢占问题的综合调度方法及装置。



背景技术:

系统虚拟化为允许多个虚拟机同时运行在一个物理服务器上创造了环境。虚拟机监控器(VMM,Virtual Machine Monitor)将底层硬件抽象为虚拟资源,并管理虚拟机的运行。I/O虚拟化是系统虚拟化的重要分支,负责为虚拟机提供I/O设备。随着网络互联速度的持续增加,I/O虚拟化已经成为云数据中心的关键议题之一。

虚拟对称多处理(VSMP,Virtual Symmetric Multiprocessing)技术使得一个虚拟机可以拥有多个虚拟处理器(VCPU,VirtualCPU),这不仅带来了更高的并发度和资源利用率,也有利于进一步提升I/O吞吐量和响应性。基于硬件的中断递交技术,如Message Signaling Interrupt、PostedInterrupt等,可以将I/O 设备中断高效地递交至目标虚拟机进行处理。然而,在VSMP环境下,由于多个VCPU需要时分共享一个物理CPU核,这使得虚拟中断的处理过程变得复杂:负责处理虚拟中断的VCPU可能会被VMM调度器调度出去,导致中断事件的处理延迟,进而影响虚拟机的I/O性能。

很多已有研究致力于提升虚拟对称多处理环境下的I/O吞吐量和响应性。现有的解决方案大致可以分为三种:旁核(side-core)策略、调度相关策略以及中断重映射机制。旁核策略使用一个单独的CPU核专用于虚拟机的I/O处理,虽然可以保证I/O性能,但很容易造成CPU资源的浪费。调度相关策略通过减少VMM调度器的时间片来减少每个VCPU在运行队列中的等待时间,从而降低I/O延迟,但该方法会造成频繁的上下文切换,不利于CPU密集型 (PU-intensive)任务的运行。相比之下,中断重映射机制通过将I/O设备中断智能地重映射至虚拟机多个VCPU中最合适的一个,既能提升I/O性能,也不会引入其它副作用。

目前,中断重映射机制已经成为虚拟对称多处理环境下最具有吸引力的I/O性能解决方案之一。但是,在实际过程中,中断重映射机制可能会发生失效的风险,如何避免中断重映射机制失效是目前亟待解决的问题。



技术实现要素:

如背景技术中所述,中断重映射机制会发生失效的风险。发明人对此进行研究,发现,如果虚拟机运行的是Linux操作系统,该系统中针对网络I/O设备的NAPI处理模式可能会和中断重映射机制发生冲突,使得中断重映射机制失效。NAPI是Linux上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后关闭设备中断进入轮询(POLL)模式读取数据,等轮询模式结束时再开启设备中断。由于NAPI需要操作I/O设备的可中断性,而中断重映射需要修改设备中断的目的地址,如果不加以协调,会产生冲突以致中断重映射失效。

至此,发明人首先发现并定义了虚拟对称多处理环境下中断重映射机制可能存在的问题:中断持有者抢占(IHP,Interruptability Holder Preemption)问题。

IHP问题的定义:假设虚拟机的某个VCPU当前正在处理某个网络I/O设备的中断,并进入了NAPI处理过程的轮询(POLL)模式,则该设备的可中断性被关闭,此时称该VCPU为中断持有者(IH,Interruptability Holder)。如果此时该IH被VMM调度器调度出去,那么就发生了IHP问题。在IH被再次调度并重新开启设备中断的这段时间里,该网络I/O设备无法产生中断,即使它收到了外界的数据包。由于没有中断产生,中断重映射失效,该设备收到的数据包无法被即使处理,降低了I/O性能。

因此,发明人在上述研究的基础上提出一种针对虚拟多对称处理环境下中端持有者抢占问题的综合调度方法及装置,以解决IHP问题,该方法基于目前广泛使用的KVM(Kernel-Based Virtual Machine)及其半虚拟化网络模型,通过对中断持有者运行状态的全局把握与分析,并兼顾系统的全局调度公平性,构建一种VCPU综合调度方法,有效消除IHP问题,显著提升虚拟机的I/O性能。

本发明的技术方案提供一种针对中断持有者抢占问题的综合调度方法,包括如下步骤:步骤1:当虚拟网络设备接收到数据包时,从多个虚拟CPU中选择一个虚拟CPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达;步骤2:分析所述虚拟中断的信息,并将所述目标虚拟CPU标记为中断持有者;步骤3:目标虚拟CPU接收所述虚拟中断,触发对应的中断处理函数,关闭所述虚拟网络设备的中断并进入轮询模式读取数据包;步骤4:当要将一虚拟CPU 调离出物理CPU时,判断所述虚拟CPU是否被标记为中断持有者,若是,则继续调度该虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟 CPU;步骤5:以轮询方式判断优选虚拟CPU是否已经开启虚拟网络设备的中断,若已打开,则立即将所述优选虚拟CPU调离物理CPU。

可选的,步骤1中根据中断重映射机制选择一虚拟CPU作为目标虚拟 CPU。

可选的,步骤4中,当要被调离出物理CPU的虚拟CPU未被标记为中断持有者,则立即将该虚拟CPU调离出物理CPU。

可选的,步骤5中,在VM Exit处理函数中判断优选虚拟CPU是否已经打开虚拟网络设备的中断。

本发明的技术方案还提供一种针对中断持有者抢占问题的综合调度装置,包括:多个虚拟CPU;选择模块,用于当虚拟网络设备接收到数据包时,从多个虚拟CPU中选择一个虚拟CPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达,所述目标虚拟CPU用于接收所述虚拟中断,触发对应的中断处理函数,关闭所述虚拟网络设备的中断并进入轮询模式读取数据;中断持有者检测模块,用于分析所述虚拟中断的信息,并将所述目标虚拟CPU标记为中断持有者;调度模块,与所述中断持有者检测模块连接,用于当要将一虚拟 CPU调离出物理CPU时,根据所述中断持有者检测模块标记的中断持有者信息,判断所述虚拟CPU是否被标记为中断持有者,若是,则继续调度该虚拟 CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU,并且当优选虚拟CPU开启虚拟网络设备的中断后,立即将所述优选虚拟CPU调离物理 CPU;判断模块,与所述调度模块连接,用于以轮询方式判断优选虚拟CPU 是否已经开启虚拟网络设备的中断,并将判断信息发送至调度模块。

可选的,所述选择模块用于根据中断重映射机制选择一虚拟CPU作为目标虚拟CPU。

可选的,所述调度模块包括:延时调度单元,与所述终端持有者检测模块连接,用于继续调度被标记为中断持有者的虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU;即时调度单元,与所述判断模块连接,用于将未被标记为中断持有者的虚拟CPU和已关闭虚拟网络设备中断的优选虚拟CPU立即调离物理CPU;常规调度单元,与所述延时调度单元连接,用于将需要调离的未被标记为中断持有者的虚拟CPU立即调离出物理CPU。

可选的,所述判断模块用于在VM Exit处理函数中判断优选虚拟CPU是否已经开启虚拟网络设备的中断。

本发明提供的一种前摄性的、基于中断持有者信息的VCPU综合调度方法具有以下有益的技术效果:

(1)本发明采用中断重映射机制将虚拟中断递交至目前正在运行的虚拟 CPU上,显著降低了由于虚拟CPU的调度延时引起的虚拟机网络响应性下降的问题。

(2)本发明的方案只需要记录虚拟中断的目的VCPU信息,并不涉及虚拟机操作系统的改动,对虚拟机完全透明。

(3)中断持有者抢占问题是造成中断重映射机制失效的根本原因,也是造成I/O虚拟化性能瓶颈的重要原因,本发明完全消除了中断重映射机制中断持有者抢占问题,使得虚拟机的网络I/O性能得到极大提高。

附图说明

图1为传统的半虚拟化环境下的中断处理流程示意图;

图2为本发明所述的中断持有者抢占问题的一个实例图;

图3为本发明的一个实施例的针对中断持有者抢占问题的综合调度方法的流程示意图;

图4为本发明的一个实施例的针对中断持有者抢占问题的综合调度装置的结构示意图。

具体实施方式

下面结合附图对本发明提供的一种针对中断持有者抢占问题的综合调度方法和调度装置的实施例做详细说明。所述实施例在本发明技术方案的前提下进行实施,并给出详细实施方式和具体操作过程,但是适用的平台不仅限于下述实施例。

本实施例基于目前广泛使用的KVM(Kernel-Based Virtual Machine)及其半虚拟化网络I/O模型(由虚拟机中的前端驱动和VMM中的后端驱动构成)。

请参考图1,为传统的半虚拟化环境下的中断处理流程示意图。

在半虚拟化环境下,虚拟机的网络设备由运行在虚拟机内部的前端驱动和运行在VMM中的后端驱动两部分组成。其中,前端驱动通过共享内存与后端驱动进行数据和控制信息的共享。当后端设备从物理网卡或虚拟交换机接收到网络数据包并将其拷贝至共享内存后(路径①),VMM会向虚拟机注入一个虚拟中断来触发数据包接收。虚拟中断目的虚拟CPU0的模拟LAPIC(Local Advanced Programmable Interrupt Controller)接收到该虚拟中断(路径②)并触发存储在客户机IDT(Interrupt Descriptor Table)中的中断处理函数(路径③)。中断处理函数首先发起一次EOI(End of Interrupt)写操作通知模拟LAPIC 该虚拟中断已经处理完成(路径④),接着,中断处理函数进入NAPI处理过程(路径⑤),关闭设备(后端驱动)中断(路径⑥)并进入轮询(POLL)模式机制从共享内存中读取数据(路径⑦)。需要注意的是,NAPI机制利用一个 softirq线程来轮询访问共享内存中的网络数据包。一旦数据包接收完毕,虚拟 CPU0会设置前端驱动退出轮询模式并打开其中断能力(路径⑧),等待接收下一次虚拟中断注入。

请参考图2,为本发明所述的IHP问题的一个实例图。

在虚拟对称多处理架构下,虚拟机V共有两个VCPU(虚拟CPU 0和虚拟 CPU 1),虚拟CPU 0首先收到一个虚拟中断并在T0时刻禁用了前端设备的中断能力。如果虚拟CPU 0在T1时刻被调度器调离物理CPU 0,由于此时前端设备禁止中断,后续的经由中断重映射机制重定向的虚拟CPU 1处理的网络 I/O事件将不能被及时递交至虚拟机V,直到VCPU 0在T2时刻重新被调回物理CPU 1并打开前端设备的中断能力。因此,在T1至T2的时间段中,中断重映射机制完全失效,虚拟机的网络I/O性能依然受制于VCPU的调度延迟,造成了本发明前文所述的中断持有者抢占问题。

请参考图3,为本发明的针对中断持有者抢占问题的综合调度方法的流程示意图,包括如下步骤:

步骤S1:当虚拟网络设备收到数据包时,从客户机即虚拟机的多个虚拟 CPU中选择一个虚拟CPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达。在该实施例中,虚拟机网络设备由前端驱动和后端驱动两部分组成,包括多个虚拟CPU。具体的,运行在VMM中的虚拟机后端驱动从网桥或虚拟交换机接收到网络数据包并将数据包拷贝至前端驱动的共享内存中,VMM利用中断重映射机制为对应虚拟机选择一个合适的VCPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达。在其他具体实施例中,也可以采用其他方式选择合适的VCPU作为目标虚拟CPU。

步骤S2:分析所述虚拟中断的信息,并将所述目标虚拟CPU标记为中断持有者。具体的,位于VMM内部的中断持有者检测模块分析该虚拟中断的信息并标记目标虚拟CPU为中断持有者(IH),并形成IH信息。

步骤S3:目标虚拟CPU接收所述虚拟中断,触发对应的中断处理函数,关闭所述虚拟网络设备的中断并进入轮询模式读取数据包。具体的,该虚拟中断由目标虚拟CPU接收并触发相应的中断处理函数,进入NAPI处理过程,关闭设备(后端驱动)中断并进入轮询(POLL)模式从共享内存中读取数据。

步骤S4:当要将一虚拟CPU调离出物理CPU时,判断所述虚拟CPU是否被标记为中断持有者,若是,则继续调度该虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU。具体的,当要将步骤S2中记录的中断持有者(VCPU)调离物理CPU时,位于VMM内部的延迟调度模块基于中断持有者检测模块提供的IH信息,判断该虚拟CPU是否为中断持有者。如果是,则该延迟调度模块将继续调度该虚拟CPU运行在物理CPU上,并将其记录为 Favored VCPU(优选虚拟CPU)。如果不是,则立即将该虚拟CPU调离出物理CPU。

步骤S5:以轮询方式判断优选虚拟CPU是否已经开启虚拟网络设备的中断,若已打开,则立即将所述优选虚拟CPU调离物理CPU。具体的,位于VMM 内部的即时调度模块在频繁发生的VM Exit处理函数中判断步骤S4中所记录的Favored VCPU是否已经打开后端驱动的中断能力。对于已经打开设备中断的Favored VCPU,即时调度模块立即将调离物理CPU。本发明利用Intel VT-x 技术中的VM Exit机制,在VM Exit处理函数中,以一种类轮询方式判断Favored VCPU是否已经打开设备中断,一旦中断能力被打开,即时调度模块立即将该Favored VCPU调离物理CPU,为系统内其他进程提供运行机会,既充分保证系统的全局调度公平性又能完全避免IHP问题,获得整体性能的提升。

与传统的半虚拟化环境下中断处理流程相比,本实施例的中断处理流程中加入了中断持有者信息的监控以及更加精细、综合的VCPU调度策略。

请参考图4,为本发明的实施例提供的针对中断持有者抢占问题的综合调度装置的结构示意图。

所述综合调度装置包括:多个虚拟CPU501、选择模块502、中断持有者检测模块503、调度模块504以及判断模块505。

所述选择模块502用于当虚拟网络设备接收到数据包时,从多个虚拟 CPU501中选择一个虚拟CPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达,所述目标虚拟CPU用于接收所述虚拟中断,触发对应的中断处理函数,关闭所述虚拟网络设备的中断并进入轮询模式读取数据。所述选择模块502可以根据中断重映射机制选择一虚拟CPU作为目标虚拟CPU。

中断持有者检测模块503,与所述选择模块连接,用于分析所述虚拟中断的信息,并将所述选择模块502选择的目标虚拟CPU标记为中断持有者。

调度模块504,与所述中断持有者检测模块503连接,用于当要将一虚拟 CPU调离出物理CPU时,根据所述中断持有者检测模块503标记的中断持有者信息,判断所述虚拟CPU是否被标记为中断持有者,若是,则继续调度该虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU,并且当优选虚拟CPU开启虚拟网络设备的中断后,立即将所述优选虚拟CPU调离物理CPU。

判断模块505,与所述调度模块504连接,用于以轮询方式判断调度模块 504记录的优选虚拟CPU是否已经开启虚拟网络设备的中断,并将判断信息发送至调度模块504。所述判断模块505利用Intel VT-x技术中的VM Exit机制,在频繁发生的VM Exit处理函数中,以一种类轮询方式判断Favored VCPU是否已经打开设备中断。

该具体实施方式中,所述调度模块504,包括:延时调度单元5041,与所述终端持有者检测模块503和判断模块505连接,用于继续调度被标记为中断持有者的虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU,并将优选虚拟CPU的记录信息发送给判断模块505;即时调度单元5042,与所述判断模块505连接,用于将已关闭虚拟网络设备中断的优选虚拟CPU立即调离物理CPU;常规调度单元5043,与所述延时调度单元5041连接,用于将需要调离的未被标记为中断持有者的虚拟CPU立即调离出物理CPU。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1