CN111124608B - 一种面向多核虚拟机的精确低延迟中断重定向方法 - Google Patents
一种面向多核虚拟机的精确低延迟中断重定向方法 Download PDFInfo
- Publication number
- CN111124608B CN111124608B CN201911303463.4A CN201911303463A CN111124608B CN 111124608 B CN111124608 B CN 111124608B CN 201911303463 A CN201911303463 A CN 201911303463A CN 111124608 B CN111124608 B CN 111124608B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- vcpu
- virtual machine
- submitted
- recorded
- 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.)
- Active
Links
Images
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/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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明提出一种面向多核虚拟机的精确低延迟中断重定向方法,是对现有中断重定向方法的改进,其特征在于,其核心思想是当无法确定目标虚拟机中最先运行的vCPU时,先推迟中断递交,并记录下待递交中断,等发现并确定所述目标虚拟机最先运行的vCPU时再实施中断递交。本发明的有益效果是,目标虚拟机的待递交中断可以精确地被递交给最先运行的vCPU,确保I/O响应性,而且这种精确的低延迟中断重定向方法不会带来副作用。
Description
技术领域
本发明涉及虚拟化与云计算领域,尤其涉及一种面向多核虚拟机的精确低延迟中断重定向方法。
背景技术
系统虚拟化允许多个虚拟机同时运行在一个物理服务器上,极大提升了硬件资源的利用率,是云计算的重要支撑技术。虚拟对称多处理(Virtual SymmetricMultiprocessing,VSMP)技术使得一个虚拟机可以拥有多个虚拟处理器(virtual CPU,vCPU),也即成为多核虚拟机。多核虚拟机可以灵活地使用系统计算资源,尤其在高负载时可以具备同时使用多个物理CPU核的能力。
在VSMP环境下,同一个物理CPU核通常被多个vCPU复用以提高资源利用率,但这种复用方式也给I/O响应性带来了挑战:当虚拟机监控器(Virtual Machine Monitor,VMM)将某个I/O事件递交给目标虚拟机的某个vCPU处理时,该vCPU可能已经被调度走(即当时未在运行),那么该I/O事件只有等到目标vCPU重新被调度运行时才能被处理,造成I/O事件处理延迟,降低了I/O响应性。
现有的针对VSMP环境下I/O响应性提升的解决方案大致可以分为以下三类。第一类是旁核(side core)策略,也称为I/O专有核策略,其基本思想是使用专门的物理CPU核来处理虚拟机的I/O事件,避免vCPU调度延迟引发的I/O延迟。旁核策略虽然可以保证I/O性能,但容易造成计算资源的浪费。第二类是调度相关策略,如使用更小的调度时间片来减少vCPU在调度队列中的等待时间,从而减少I/O事件处理延迟。但该方法会造成频繁的vCPU切换,不利于CPU密集型任务的运行。第三类是中断重定向,通过将I/O设备的中断事件智能地重定向至虚拟机多个vCPU中最合适的一个,既能提升I/O性能,也不会引入其它副作用。
目前,中断重定向已经成为VSMP环境下I/O性能提升的重要解决方案之一。在选择最合适的目标vCPU时,可以将负载均衡作为优化方向,也可以将低延迟作为优化方向。低延迟中断重定向通常的做法是预测目标虚拟机多个vCPU中最先运行的vCPU,将其作为中断重定向的目标vCPU。一种简单的预测方法是,平均情况下(即每个物理核上运行同样数量的vCPU),目标虚拟机中多个vCPU中等待时间最长的那一个vCPU最先运行的概率最高。但预测准确率取决于具体的调度环境和调度策略,如果预测失败,可能反而会增加I/O延迟。
发明内容
本发明要解决的问题是现有的低延迟中断重定向方法中预测准确率取决于具体的调度环境和调度策略、预测失败可能反而会增加I/O延迟的问题。
为解决上述问题,本发明提出一种面向多核虚拟机的精确低延迟中断重定向方法,是对现有中断重定向方法的改进,其核心思想是当无法确定目标虚拟机中最先运行的vCPU时,先推迟中断递交,并记录下待递交中断,等发现并确定所述目标虚拟机中最先运行的vCPU时再实施中断递交。
进一步地,所述方法包含以下两个步骤:
步骤1、推迟中断递交并记录所述待递交中断;
步骤2、发现最先运行的vCPU并实施中断递交。
进一步地,中断重定向以低延迟为优化方向,选取所述目标虚拟机中最先运行的vCPU作为新的目标vCPU,如果目标虚拟机的所有vCPU当前均未在运行,也即无法直接确定最先运行的vCPU,不去做预测并递交中断,而是推迟中断递交。
进一步地,实施中断递交的时机是当VMM调度vCPU运行时,被调度即将运行的vCPU就是所述目标虚拟机中最先运行的vCPU。
进一步地,所述待递交中断是以虚拟机为单位被记录的。
进一步地,如果所述待递交中断被记录而未被递交时,相同的中断事件再次到来,新的中断事件无需再记录。
进一步地,如果所述待递交中断被记录而未被递交时,相同的中断事件再次到来,新的中断事件直接合并至已记录的所述待递交中断。
进一步地,所述待递交中断被记录在描述虚拟机的数据结构中。
进一步地,实施中断递交的方法是,在VMM触发调度vCPU之前,检测该vCPU所对应的虚拟机是否有前期记录的所述待递交中断,如果有则在调度的同时注入所述待递交中断,由于每个vCPU在被调度之前都会执行检测,目标虚拟机的待递交中断可以精确地被递交给最先运行的vCPU。
进一步地,所述待递交中断被递交后,该中断的记录被清除。
本发明的有益效果是,目标虚拟机的待递交中断可以精确地被递交给最先运行的vCPU,确保I/O响应性,而且这种精确的低延迟中断重定向方法不会带来副作用。首先,不会造成中断丢失,如果待递交中断被记录而未被递交时,相同的中断事件再次到来,新的中断事件无需再被记录,而是直接被合并至已记录的待递交中断,现今的I/O设备驱动(中断处理程序)有能力处理合并的中断事件;其次,其开销较低,由于是在vCPU调度时执行是否有待递交中断的检测,执行检测的开销相比于vCPU上下文切换的开销可以忽略不计。
附图说明
图1是本发明的一个较佳实施例的示意图;
具体实施方式
以下参考说明书附图介绍本发明的优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
如图1所示,本发明的一个较佳实施例,平台采用KVM虚拟化环境以及当前主流的VIRTIO半虚拟化网络I/O模型,半虚拟化网卡的前端驱动位于虚拟机,半虚拟化网卡的后端驱动位于虚拟机监控器,面向多核虚拟机的精确低延迟中断重定向方法包括以下详细步骤:
步骤1、半虚拟化网卡后端驱动完成来自前端驱动的I/O请求或者接收到来自外界的数据包,产生一个虚拟中断,该中断的目的是通知目标虚拟机某个I/O请求已经完成或者有新数据包到达。
步骤2、该虚拟中断被中断重定向模块截获,中断重定向的目的是为该虚拟中断重新选择最合适的目标vCPU,选取标准是选择正在运行或者最快运行的vCPU作为目标,从而能够最快的处理该中断事件,降低延迟。
步骤3、如果目标虚拟机当前没有vCPU正在运行,无法确定最优vCPU(即最先运行的vCPU),则推迟中断递交,并记录下待递交中断。待递交中断以虚拟机为单位进行记录,比如可以记录到描述虚拟机的数据结构中去,对于KVM Hypervisor中,该数据结构可以是“struct kvm”,在其中新添加一个域用于记录待递交中断的中断向量。
步骤4、在记录待递交中断时,如果发现相同的中断已经被记录过(表明相同的中断被多次产生),则无需再记录,因为多次中断事件(对应多个数据包)可以聚合到一次中断处理函数中进行处理。
步骤5:当虚拟机监控器的调度器在进行vCPU调度时,增加中断递交检测模块。对于KVM Hypervisor,可以在kvm_sched_in函数中进行添加,该函数在vCPU将被调度之前触发。
步骤6:针对每个vCPU,在触发调度之前(如kvm_sched_in函数中),中断递交检测模块执行如下:根据vCPU定位其所属虚拟机,在虚拟机结构体(如struct kvm)中检测是否有前期记录的待递交中断,如果有则注入中断并清除待递交中断记录。
步骤7:如果某个vCPU在触发调度之前被注入待递交中断,当其被调度运行时,在VM Entry处理中检测到注入的中断,即可立即处理该中断。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (7)
1.一种面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,所述方法包括以下步骤:
步骤1、中断重定向模块截获中断;
步骤2、所述中断重定向模块为中断选择最先运行的vCPU;
步骤3、当无法确定目标虚拟机中最先运行的vCPU时,先推迟中断递交,并记录下待递交中断;
步骤4、当发现并确定所述目标虚拟机中最先运行的vCPU时,实施中断递交;实施中断递交的时机是当VMM调度vCPU运行时,被调度即将运行的vCPU就是所述目标虚拟机中最先运行的vCPU;实施中断递交的方法是,在VMM触发调度vCPU之前,检测该vCPU所对应的虚拟机是否有前期记录的所述待递交中断,如果有则在调度的同时注入所述待递交中断,由于每个vCPU在被调度之前都会执行检测,目标虚拟机的待递交中断精确地被递交给最先运行的vCPU。
2.如权利要求1所述的面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,中断重定向以低延迟为优化方向,选取所述目标虚拟机中最先运行的vCPU作为新的目标vCPU,如果目标虚拟机的所有vCPU当前均未在运行,不去做预测并递交中断,而是推迟中断递交。
3.如权利要求1所述的面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,所述待递交中断是以虚拟机为单位被记录的。
4.如权利要求1所述的面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,如果所述待递交中断被记录而未被递交时,相同的中断事件再次到来,新的中断事件无需再记录。
5.如权利要求1所述的面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,如果所述待递交中断被记录而未被递交时,相同的中断事件再次到来,新的中断事件直接合并至已记录的所述待递交中断。
6.如权利要求1所述的面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,所述待递交中断被记录在描述虚拟机的数据结构中。
7.如权利要求1所述的面向多核虚拟机的精确低延迟中断重定向方法,其特征在于,所述待递交中断被递交后,该中断的记录被清除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911303463.4A CN111124608B (zh) | 2019-12-17 | 2019-12-17 | 一种面向多核虚拟机的精确低延迟中断重定向方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911303463.4A CN111124608B (zh) | 2019-12-17 | 2019-12-17 | 一种面向多核虚拟机的精确低延迟中断重定向方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124608A CN111124608A (zh) | 2020-05-08 |
CN111124608B true CN111124608B (zh) | 2023-03-21 |
Family
ID=70499362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911303463.4A Active CN111124608B (zh) | 2019-12-17 | 2019-12-17 | 一种面向多核虚拟机的精确低延迟中断重定向方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124608B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253679A (zh) * | 2020-09-24 | 2022-03-29 | 广州慧睿思通科技股份有限公司 | 中断事件处理方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744716A (zh) * | 2014-01-15 | 2014-04-23 | 上海交通大学 | 一种基于当前vcpu调度状态的动态中断均衡映射方法 |
CN106095578A (zh) * | 2016-06-14 | 2016-11-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108123850B (zh) * | 2017-12-25 | 2020-04-24 | 上海交通大学 | 针对中断持有者抢占问题的综合调度方法及装置 |
-
2019
- 2019-12-17 CN CN201911303463.4A patent/CN111124608B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744716A (zh) * | 2014-01-15 | 2014-04-23 | 上海交通大学 | 一种基于当前vcpu调度状态的动态中断均衡映射方法 |
CN106095578A (zh) * | 2016-06-14 | 2016-11-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
Non-Patent Citations (1)
Title |
---|
Xiaokang Hu.QTLS: High-Performance TLS Asynchronous Of load Framework with Intel ® QuickAssist Te chnology.2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111124608A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI494850B (zh) | 通透地提供給作業系統之非對稱多核心處理器系統 | |
EP1899810B1 (en) | System and method to optimize os context switching by instruction group trapping | |
US9697041B2 (en) | Method for dynamic interrupt balanced mapping based on current scheduling states of VCPUs | |
Song et al. | Schedule processes, not VCPUs | |
US8312195B2 (en) | Managing interrupts using a preferred binding between a device generating interrupts and a CPU | |
US9792137B2 (en) | Real-time performance apparatus and method for controlling virtual machine scheduling in real-time | |
US8352946B2 (en) | Managing migration ready queue associated with each processor based on the migration ready status of the tasks | |
US9836324B2 (en) | Interleave-scheduling of correlated tasks and backfill-scheduling of depender tasks into a slot of dependee tasks | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
US9201823B2 (en) | Pessimistic interrupt affinity for devices | |
CN106293881B (zh) | 一种基于非一致性i/o访问构架的性能监控器及其监控方法 | |
Ahn et al. | Micro-sliced virtual processors to hide the effect of discontinuous cpu availability for consolidated systems | |
US9785466B2 (en) | Managing data segments in memory for context switching with standalone fetch and merge services | |
US5784711A (en) | Data cache prefetching under control of instruction cache | |
US9361159B2 (en) | Runtime chargeback in a simultaneous multithreading (SMT) environment | |
US20150227394A1 (en) | Detection of time points to voluntarily yield resources for context switching | |
Zeng et al. | An improved xen credit scheduler for i/o latency-sensitive applications on multicores | |
CN111124608B (zh) | 一种面向多核虚拟机的精确低延迟中断重定向方法 | |
CN108123850B (zh) | 针对中断持有者抢占问题的综合调度方法及装置 | |
Gottschlag et al. | Mechanism to mitigate avx-induced frequency reduction | |
Zhang et al. | Lock-Visor: An efficient transitory co-scheduling for MP guest | |
Miao et al. | FlexCore: Dynamic virtual machine scheduling using VCPU ballooning | |
US10929164B2 (en) | Enhancing ability of a hypervisor to detect an instruction that causes execution to transition from a virtual machine to the hypervisor | |
US20050283586A1 (en) | Stepping a virtual machine guest | |
US20110231637A1 (en) | Central processing unit and method for workload dependent optimization thereof |
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 |