CN108123850A - 针对中断持有者抢占问题的综合调度方法及装置 - Google Patents
针对中断持有者抢占问题的综合调度方法及装置 Download PDFInfo
- Publication number
- CN108123850A CN108123850A CN201711419235.4A CN201711419235A CN108123850A CN 108123850 A CN108123850 A CN 108123850A CN 201711419235 A CN201711419235 A CN 201711419235A CN 108123850 A CN108123850 A CN 108123850A
- Authority
- CN
- China
- Prior art keywords
- virtual
- cpu
- holder
- interruption
- virtual cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/103—Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明发现并定义了虚拟对称多处理环境下中断重映射机制可能存在的一个问题:中断持有者抢占(IHP,Interruptability Holder Preemption)问题。该问题导致中断重映射机制失效,降低了虚拟机的I/O性能。为了解决IHP问题,本发明提供一种前摄性的、基于中断持有者信息的VCPU综合调度方法。该方法基于目前广泛使用的KVM(Kernel‑Based Virtual Machine)及其半虚拟化网络模型,通过对中断持有者运行状态的全局把握与分析,并兼顾***的全局调度公平性,构建一种VCPU综合调度方法,有效消除IHP问题,显著提升虚拟机的I/O性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种针对中断持有者抢占问题的综合调度方法及装置。
背景技术
***虚拟化为允许多个虚拟机同时运行在一个物理服务器上创造了环境。虚拟机监控器(VMM,Virtual Machine Monitor)将底层硬件抽象为虚拟资源,并管理虚拟机的运行。I/O虚拟化是***虚拟化的重要分支,负责为虚拟机提供I/O设备。随着网络互联速度的持续增加,I/O虚拟化已经成为云数据中心的关键议题之一。
虚拟对称多处理(VSMP,Virtual Symmetric Multiprocessing)技术使得一个虚拟机可以拥有多个虚拟处理器(VCPU,VirtualCPU),这不仅带来了更高的并发度和资源利用率,也有利于进一步提升I/O吞吐量和响应性。基于硬件的中断递交技术,如MessageSignaling 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上,并将其记录为 FavoredVCPU(优选虚拟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。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (8)
1.一种针对中断持有者抢占问题的综合调度方法,其特征在于,包括以下步骤:
步骤1:当虚拟网络设备接收到数据包时,从多个虚拟CPU中选择一个虚拟CPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达;
步骤2:分析所述虚拟中断的信息,并将所述目标虚拟CPU标记为中断持有者;
步骤3:目标虚拟CPU接收所述虚拟中断,触发对应的中断处理函数,关闭所述虚拟网络设备的中断并进入轮询模式读取数据包;
步骤4:当要将一虚拟CPU调离出物理CPU时,判断所述虚拟CPU是否被标记为中断持有者,若是,则继续调度该虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU;
步骤5:以轮询方式判断优选虚拟CPU是否已经开启虚拟网络设备的中断,若已打开,则立即将所述优选虚拟CPU调离物理CPU。
2.根据权利要求1所述的针对中断持有者抢占问题的综合调度方法,其特征在于,步骤1中根据中断重映射机制选择一虚拟CPU作为目标虚拟CPU。
3.根据权利要求1所述的针对中断持有者抢占问题的综合调度方法,其特征在于,步骤4中,当要被调离出物理CPU的虚拟CPU未被标记为中断持有者,则立即将该虚拟CPU调离出物理CPU。
4.根据权利要求1所述的针对中断持有者抢占问题的综合调度方法,其特征在于,步骤5中,在VM Exit处理函数中判断优选虚拟CPU是否已经打开虚拟网络设备的中断。
5.一种针对中断持有者抢占问题的综合调度装置,其特征在于,包括:
多个虚拟CPU;
选择模块,用于当虚拟网络设备接收到数据包时,从多个虚拟CPU中选择一个虚拟CPU作为目标虚拟CPU,然后注入虚拟中断通知数据包的到达,所述目标虚拟CPU用于接收所述虚拟中断,触发对应的中断处理函数,关闭所述虚拟网络设备的中断并进入轮询模式读取数据;
中断持有者检测模块,用于分析所述虚拟中断的信息,并将所述目标虚拟CPU标记为中断持有者;
调度模块,与所述中断持有者检测模块连接,用于当要将一虚拟CPU调离出物理CPU时,根据所述中断持有者检测模块标记的中断持有者信息,判断所述虚拟CPU是否被标记为中断持有者,若是,则继续调度该虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU,并且当优选虚拟CPU开启虚拟网络设备的中断后,立即将所述优选虚拟CPU调离物理CPU;
判断模块,与所述调度模块连接,用于以轮询方式判断优选虚拟CPU是否已经开启虚拟网络设备的中断,并将判断信息发送至调度模块。
6.根据权利要求5所述的针对中断持有者抢占问题的综合调度装置,其特征在于,所述选择模块用于根据中断重映射机制选择一虚拟CPU作为目标虚拟CPU。
7.根据权利要求5所述的针对中断持有者抢占问题的综合调度装置,其特征在于,所述调度模块包括:延时调度单元,与所述终端持有者检测模块连接,用于继续调度被标记为中断持有者的虚拟CPU运行在物理CPU上,并将该虚拟CPU记录为优选虚拟CPU;即时调度单元,与所述判断模块连接,用于将未被标记为中断持有者的虚拟CPU和已关闭虚拟网络设备中断的优选虚拟CPU立即调离物理CPU;常规调度单元,与所述延时调度单元连接,用于将需要调离的未被标记为中断持有者的虚拟CPU立即调离出物理CPU。
8.根据权利要求5所述的针对中断持有者抢占问题的综合调度装置,其特征在于,所述判断模块用于在VM Exit处理函数中判断优选虚拟CPU是否已经开启虚拟网络设备的中断。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711419235.4A CN108123850B (zh) | 2017-12-25 | 2017-12-25 | 针对中断持有者抢占问题的综合调度方法及装置 |
US16/467,933 US11269675B2 (en) | 2017-12-25 | 2018-06-25 | Comprehensive scheduling method and device for problem of interruptability holder preemption |
PCT/CN2018/092618 WO2019128158A1 (zh) | 2017-12-25 | 2018-06-25 | 针对中断持有者抢占问题的综合调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711419235.4A CN108123850B (zh) | 2017-12-25 | 2017-12-25 | 针对中断持有者抢占问题的综合调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108123850A true CN108123850A (zh) | 2018-06-05 |
CN108123850B CN108123850B (zh) | 2020-04-24 |
Family
ID=62231742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711419235.4A Active CN108123850B (zh) | 2017-12-25 | 2017-12-25 | 针对中断持有者抢占问题的综合调度方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11269675B2 (zh) |
CN (1) | CN108123850B (zh) |
WO (1) | WO2019128158A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800073A (zh) * | 2019-01-28 | 2019-05-24 | Oppo广东移动通信有限公司 | 实时进程的调度方法、装置、终端及存储介质 |
WO2019128158A1 (zh) * | 2017-12-25 | 2019-07-04 | 上海交通大学 | 针对中断持有者抢占问题的综合调度方法及装置 |
CN111124608A (zh) * | 2019-12-17 | 2020-05-08 | 上海交通大学 | 一种面向多核虚拟机的精确低延迟中断重定向方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1449522A (zh) * | 2000-06-30 | 2003-10-15 | 英特尔公司 | 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 |
CN101968746A (zh) * | 2010-09-02 | 2011-02-09 | 北京航空航天大学 | 一种内核虚拟机组织架构模式的实现方法 |
EP2575040A1 (de) * | 2011-09-28 | 2013-04-03 | Siemens Aktiengesellschaft | Verfahren für die Verarbeitung von Unterbrechungsanforderungen eines Datenverarbeitungsgerätes und Virtualisierungssteuerung für ein Datenverarbeitungsgerät |
US20150067220A1 (en) * | 2013-09-04 | 2015-03-05 | Jory Schwach | Real-time embedded system |
CN106095578A (zh) * | 2016-06-14 | 2016-11-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5352848B2 (ja) * | 2008-11-28 | 2013-11-27 | 株式会社日立製作所 | 仮想計算機の制御方法及び計算機装置 |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
US9378162B2 (en) | 2013-05-21 | 2016-06-28 | Arm Limited | Handling and routing interrupts to virtual processors |
CN103744716B (zh) * | 2014-01-15 | 2016-09-07 | 上海交通大学 | 一种基于当前vcpu调度状态的动态中断均衡映射方法 |
US10437308B2 (en) * | 2017-06-05 | 2019-10-08 | Red Hat, Inc. | Predictive virtual machine halt |
CN108123850B (zh) | 2017-12-25 | 2020-04-24 | 上海交通大学 | 针对中断持有者抢占问题的综合调度方法及装置 |
-
2017
- 2017-12-25 CN CN201711419235.4A patent/CN108123850B/zh active Active
-
2018
- 2018-06-25 US US16/467,933 patent/US11269675B2/en active Active
- 2018-06-25 WO PCT/CN2018/092618 patent/WO2019128158A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1449522A (zh) * | 2000-06-30 | 2003-10-15 | 英特尔公司 | 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 |
CN101968746A (zh) * | 2010-09-02 | 2011-02-09 | 北京航空航天大学 | 一种内核虚拟机组织架构模式的实现方法 |
EP2575040A1 (de) * | 2011-09-28 | 2013-04-03 | Siemens Aktiengesellschaft | Verfahren für die Verarbeitung von Unterbrechungsanforderungen eines Datenverarbeitungsgerätes und Virtualisierungssteuerung für ein Datenverarbeitungsgerät |
US20150067220A1 (en) * | 2013-09-04 | 2015-03-05 | Jory Schwach | Real-time embedded system |
CN106095578A (zh) * | 2016-06-14 | 2016-11-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019128158A1 (zh) * | 2017-12-25 | 2019-07-04 | 上海交通大学 | 针对中断持有者抢占问题的综合调度方法及装置 |
US11269675B2 (en) | 2017-12-25 | 2022-03-08 | Shanghai Jiao Tong University | Comprehensive scheduling method and device for problem of interruptability holder preemption |
CN109800073A (zh) * | 2019-01-28 | 2019-05-24 | Oppo广东移动通信有限公司 | 实时进程的调度方法、装置、终端及存储介质 |
CN109800073B (zh) * | 2019-01-28 | 2021-06-18 | Oppo广东移动通信有限公司 | 实时进程的调度方法、装置、终端及存储介质 |
CN111124608A (zh) * | 2019-12-17 | 2020-05-08 | 上海交通大学 | 一种面向多核虚拟机的精确低延迟中断重定向方法 |
Also Published As
Publication number | Publication date |
---|---|
US11269675B2 (en) | 2022-03-08 |
WO2019128158A1 (zh) | 2019-07-04 |
CN108123850B (zh) | 2020-04-24 |
US20210149698A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100383740C (zh) | 挂起线程执行直到发生指定的存储器访问的方法和设备 | |
US7810083B2 (en) | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer | |
CN111367679B (zh) | 人工智能算力资源复用方法及装置 | |
CN108123850A (zh) | 针对中断持有者抢占问题的综合调度方法及装置 | |
CN101944013B (zh) | 用于执行安全嵌入式容器的处理器扩展 | |
KR100992291B1 (ko) | 가상 머신 모니터와 정책 가상 머신 간의 양방향 통신 방법 및 장치와, 가상 머신 호스트 | |
CN103761145B (zh) | 用于各个处理器的辅助中断虚拟化的访客中断控制器 | |
CN104376036B (zh) | 具有减少时延的分组处理的套接字管理 | |
CN104169879B (zh) | 用于动态中断重新配置的方法和计算机*** | |
CN104011680B (zh) | 在物理处理单元中调度虚拟机的虚拟中央处理单元 | |
US8065441B2 (en) | Method and apparatus for supporting universal serial bus devices in a virtualized environment | |
US7861245B2 (en) | Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment | |
CN103744716B (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
US9594419B2 (en) | Method and device for prolonging sleeping time of CPU | |
CN106598801A (zh) | 一种协程监控方法及装置 | |
CN102446119B (zh) | 基于Passthrough I/O的虚拟机动态迁移方法 | |
CN101859258A (zh) | ***管理模式处理器间中断重定向 | |
CN102750192B (zh) | 一种数据平面异常检测的方法和装置 | |
US9727364B2 (en) | Virtual device hypervisor memory limited receive queuing | |
CN102750132A (zh) | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 | |
CN108762886A (zh) | 虚拟机的故障检测恢复方法及*** | |
US7748003B2 (en) | Hard real-time response | |
TWI295011B (zh) | ||
TW200905470A (en) | Workload management in virtualized data processing environment | |
CN107515772A (zh) | 一种检测kvm虚拟机挂死的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |