CN103678003B - 一种实时性增强的虚拟cpu调度方法 - Google Patents
一种实时性增强的虚拟cpu调度方法 Download PDFInfo
- Publication number
- CN103678003B CN103678003B CN201310697467.1A CN201310697467A CN103678003B CN 103678003 B CN103678003 B CN 103678003B CN 201310697467 A CN201310697467 A CN 201310697467A CN 103678003 B CN103678003 B CN 103678003B
- Authority
- CN
- China
- Prior art keywords
- cpu
- virtual
- time
- real
- virtual machine
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种实时性增强的虚拟CPU调度方法,包括:虚拟机管理控制工具接受用户操作虚拟机及调度参数的命令;管理控制工具判断用户命令是否关系实时虚拟机,若涉及实时虚拟机,计算满足实时虚拟机可调度性的条件,根据计算结果对物理CPU资源进行动态划分;采用实时性增强的虚拟CPU调度方法进行调度,对运行实时虚拟机的CPU资源池使用全局最早截止时间优先调度算法,对运行非实时虚拟机的CPU资源池使用额度调度算法;对全局最早截止时间优先调度算法进行虚拟CPU缓存命中的优化。本发明在保证实时虚拟机实时性的同时,通过对CPU资源的划分带来了良好的隔离性,减少了对非实时虚拟机的性能影响。
Description
技术领域
本发明属于计算系统虚拟化技术领域,更具体地,涉及一种实时性增强的虚拟CPU调度方法。
背景技术
近年来,随着计算体系结构和软硬件技术的飞速发展,计算系统虚拟化技术也日益成熟,并成为学术界和工业界的热门技术。虚拟化技术使得计算机软件可以在一个虚拟平台上而不是真实的物理机上运行,应用程序在各自独立的空间运行而互不影响,使得一个平台可以同时运行多个操作系统,扩大了硬件容量,简化了软件重新配置的过程,从而显著提高了计算机的利用率、工作效率和安全性、灵活性。
多处理机系统为虚拟化环境带来了很大的优势。多处理机系统包括多个物理中央处理器(PCPU),多处理机虚拟化环境包括虚拟机监视器以及一台或多台虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统),每台虚拟机上运行一个客户操作系统(Guest OS),每台虚拟机又包含一个或多个虚拟中央处理器(VCPU);虚拟机监视器将虚拟机上的客户操作系统映射到某些VCPU上(VCPU的数目可以多于PCPU的数目),同时,将VCPU调度到PCPU上运行。VCPU能够在不同PCPU上运行而无需告知Guest OS。虚拟机监视器采用灵活的分配策略,以响应不断变化的负载情况。
虚拟机监视器能够将PCPU分发给Guest OS,以支持灵活的分配策略,并支持重新分配PCPU来响应不断变化的负载情况。分配策略支持Guest OS的并发操作,它也能将Guest OS映射到VCPU上(VCPU的数目可以多于PCPU),VCPU能够在PCPU之间迁移而无需通知Guest OS。这使得虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统)可以从一台机器迁移到与该机器结构不同的机器上。
Xen是当前主流的虚拟化系统之一,在数据中心中被广泛地应用于服务器整合。当前Xen的默认调度算法为额度(Credit)调度算法,它可以全局管理多个PCPU,将PCPU时间公平高效地分配给各个VCPU。它可以用SMP的方式将各个PCPU分配给每个VCPU,实现负载平衡。但其对实时性的支持较差,因为该调度算法是按比例公平共享的非抢占式的,无论客户虚拟机是实时的还是非实时的,只有当调度器运行队列中该客户虚拟机前面VCPU的时间片用完或者主动放弃PCPU,该客户虚拟机才能得到调度。SEDF(Simple Earliest Deadline First)调度算法是Xen的备选调度算法,其对实时性支持很好,但不支持SMP,这使得它在当前主流的多核处理器架构下难以得到广泛应用。
由于Xen在其设计之初没有考虑多核实时领域的需求,因此在实时性能上表现并不理想。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种实时性增强的虚拟CPU调度方法,其目的在于,在Xen虚拟化平台的基础上加以改进,既能够较好地支持传统的通用应用虚拟机,也能高效地运行实时应用虚拟机,针对虚拟机类型的不同对虚拟机区分调度,并对物理CPU资源进行划分,在保证实时虚拟机实时性的同时,通过对CPU资源的划分带来了良好的隔离性,减少了对非实时虚拟机的性能影响。
本发明是一种实时性增强的虚拟CPU调度方法,是应用在Xen虚拟化平台中用以解决Xen在多核环境下对实时应用支持不佳的问题,Xen包括虚拟机管理控制工具以及虚拟机监控器。该方法主要包括以下步骤:
(1)Xen虚拟化平台启动并初始化,通过虚拟机管理控制工具原有用户接口创建一个或多个虚拟机,并且,虚拟机管理控制工具等待接收用户发送的虚拟机控制命令;
(2)虚拟机管理控制工具接收到用户命令后,判断命令类型,若是以下三种命令之一:1)设置虚拟机类型;2)修改虚拟机调度参数;3)销毁虚拟机,则触发动态核划分机制,所述动态核划分机制通过分析用户的命令,获取指定的虚拟机的ID以及相应要修改的参数,计算满足Xen上实时虚拟机可调度性所需的物理CPU数量,并将物理CPU资源池划分为实时物理CPU池与非实时物理CPU池;
(3)利用动态核划分机制对底层物理CPU资源进行划分后,得到实时CPU池和非实时CPU池,针对非实时CPU池中的非实时虚拟机,按照Xen默认的调度算法Credit调度进行处理,针对实时CPU池中的实时虚拟机,采用全局SEDF调度算法,在调度算法数据结构上,将每个PCPU对应一个运行队列改为只采用一个全局的运行队列服务所有的PCPU,并在队列数据结构中加入队列锁以保证PCPU互斥地操作队列;在调度阶段,每个CPU从队列中获取合适的虚拟CPU运行,并在选取下一个调度的虚拟CPU结束时判断该虚拟CPU之前运行的PCPU是否是当前调度PCPU,若是,则不进行任何处理,结束调度;否则,设置该虚拟CPU的迁移标志,并将事件通道的对应关系转移到当前调度PCPU。
总体而言,与现有技术相比,本发明所构思的以上技术方案能够取得下列有益效果:
(1)能够让用户根据运行在客户虚拟机上的应用类型,灵活地设置虚拟机的类型,从而有利于虚拟机监控器对不同类型的虚拟机区别对待,更好地平衡了实时虚拟机与非实时虚拟机的性能;
(2)让用户只关心客户虚拟机的类型及调度参数的设置,而不用细化到如何手动分配资源,降低了用户管理虚拟机所带来的开销。因此本发明具有明显的优势;
(3)弥补了Xen默认的SEDF调度算法缺少的负载均衡机制,不再局限虚拟CPU固定于某个物理CPU上运行,能够让虚拟CPU运行于每个物理CPU上,平衡了物理CPU的负载,从而更好地提高了实时虚拟机的性能;
(4)保证实时虚拟机实时性的同时也兼顾了非实时虚拟机的公平性和吞吐率;
(5)既可以支持运行通用应用的虚拟机,又可以更好地支持实时虚拟机,具有良好的兼容性。
附图说明
图1为本发明实时性增强的虚拟CPU调度方法的流程图;
图2为本发明步骤(2)的细化流程图;
图3为本发明步骤(3)的细化流程图;
图4为本发明步骤(4)的细化流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
以下首先对本发明的技术术语进行解释和说明:
实时虚拟机:客户操作系统中运行对实时性要求较高的实时应用的虚拟机,运行在实时CPU资源池中。
非实时虚拟机:客户操作系统中运行对实时性无要求的通用应用的虚拟机,运行在非实时CPU资源池中。
实时虚拟CPU:实时虚拟机中的虚拟CPU。
非实时虚拟CPU:非实时虚拟机中的虚拟CPU。
实时CPU资源池:运行实时虚拟机的物理CPU集合
非实时CPU资源池:运行非实时虚拟机的物理CPU集合
本发明的整体思路在于,从区分虚拟机的类型着眼,将虚拟机按照运行应用的特征,划分为非实时虚拟机与实时虚拟机两种类型;并且,针对物理CPU资源,本发明贡献了一个动态核划分机制,对物理CPU资源进行划分,使两种类型在不同的CPU资源池中采用不同的调度算法分开调度。针对非实时CPU资源池,仍采用Credit调度算法。针对实时CPU资源池,本发明贡献了一个全局SEDF算法来达到满足实时性的目的。
本发明是一种实时性增强的虚拟CPU调度方法,是应用在Xen虚拟化平台中用以解决Xen在多核环境下对实时应用支持不佳的问题,Xen包括虚拟机管理控制工具(Xen tools)以及虚拟机监控器。如图1所示,该方法主要包括以下步骤:
(1)Xen虚拟化平台启动并初始化,通过虚拟机管理控制工具原有用户接口创建一个或多个虚拟机,并且,虚拟机管理控制工具等待接收用户发送的虚拟机控制命令;
(2)虚拟机管理控制工具接收到用户命令后,判断命令类型,若是以下三种命令之一:1)设置虚拟机类型;2)修改虚拟机调度参数;3)销毁虚拟机,则触发动态核划分机制,所述动态核划分机制通过分析用户的命令,获取指定的虚拟机的ID以及相应要修改的参数,计算满足Xen上实时虚拟机可调度性所需的物理CPU数量,并将物理CPU资源池划分为实时物理CPU池与非实时物理CPU池。其中,可调度性是指,对于单核物理CPU上的实时虚拟CPU,若满足以下公式,则该虚拟CPU集可调度:
公式中,参数slice是指虚拟CPU最差情况下的执行时间,参数period是指虚拟CPU的相对截止时间,参数n为单核物理CPU上实时虚拟CPU的总数。
如图2所示,该步骤具体包括如下子步骤:
(2-1)虚拟机管理控制工具接受用户发来的命令;
(2-2)判断用户命令类型,若为设置虚拟机类型命令则执行步骤(2-3);若为修改虚拟机调度参数命令,则转入步骤(2-7);若为销毁虚拟机命令,则转入步骤(2-5);否则转入步骤(2-12);
(2-3)虚拟机管理控制工具接受到设置虚拟机类型命令后,分析命令并获取用户所指定的虚拟机ID以及虚拟机类型;
(2-4)若指定虚拟机在实时CPU资源池且设置的虚拟机类型为非实时虚拟机,则转入步骤(2-5);若指定虚拟机在非实时CPU资源池且设置的虚拟机类型为实时虚拟机,则转入步骤(2-6);否则不进行任何处理,直接结束;
(2-5)根据指定虚拟机的虚拟机ID,通过超级调用获取该虚拟机的调度参数,根据虚拟机的调度参数计算由于该实时虚拟机变为非实时虚拟机而应该从实时CPU资源池中移除的CPU数量,转入步骤(2-11)。
具体而言,一个实时虚拟CPU的使用率为虚拟CPU的应运行的最短时间除以虚拟CPU分配的时间片,实时虚拟机的使用率为该虚拟机所拥有的虚拟CPU个数乘以一个虚拟CPU的使用率,根据可调度性分析可知,当实时虚拟机变为非实时虚拟机时,应该从实时CPU资源池中移除的CPU数量为实时虚拟机使用率向上取整。
(2-6)根据指定虚拟机的虚拟机ID,通过超级调用获取该虚拟机的调度参数,根据调度参数计算由于该非实时虚拟机变为实时虚拟机而应该从非实时CPU资源池中移除的CPU数量,计算方法同(2-5),转入步骤(2-10);
(2-7)虚拟机管理控制工具接受改变调度参数的命令后,分析命令并获取用户指定的虚拟机ID以及调度参数值;
(2-8)若指定虚拟机类型为实时虚拟机,转入步骤(2-9);否则转入步骤(2-12);
(2-9)通过虚拟机ID获取调度参数改变前后的值,并计算修改调度参数之后与之前实时虚拟机可调度性所需CPU数量的差值,若该差值大于0,转入步骤(2-10),否则转入步骤(2-11)。
具体而言,修改调度参数之后与之前实时虚拟机可调度性所需CPU的差值为:调度参数修改后该实时虚拟机应该分配的CPU数量减去调度参数修改前该虚拟机应该分配的CPU数量。若变化量为0,则不用分配;若变化量大于0,则应给实时CPU资源池分配变化量数目的CPU;若变化量小于0,则应该给非实时CPU资源池分配变化量数目的CPU。
(2-10)获取重新分配的CPU数量,从非实时CPU资源池中移除相应数量的物理CPU,移入实时CPU资源池中,转入步骤(2-12)。
具体而言,在从非实时CPU资源池中移除CPU时,遍历非实时CPU资源池的有效CPU位图,优先选择与实时CPU资源池中CPU属于同一个NUMA节点的CPU,直到相应数量的CPU都被移除。根据NUMA节点来划分CPU资源,能够同时有效的提高实时虚拟机与非实时虚拟机的性能。
(2-11)获取重新分配的CPU数量,从实时CPU资源池中移除相应数量的物理CPU,移入非实时CPU资源池中,转入步骤(2-12)。
具体而言,在从实时CPU资源池中移除CPU时,遍历实时CPU资源池的有效CPU位图,优先选择与非实时CPU资源池中CPU属于同一个NUMA节点的CPU,直到相应数量的CPU都被移除。
(2-12)调用超级调用(Hypercall)执行命令。
本步骤的优点在于:新增用户设置虚拟机类型接口,将虚拟机进行分类,并针对物理CPU资源,在满足实时虚拟机可调度性的条件下,将CPU划分为实时CPU资源池与非实时CPU资源池。这样增加了用户控制虚拟机类型的灵活性,也减少了用户管理虚拟机的开销;同时按不同虚拟机类型区别对待,优化了虚拟机的性能。
(3)利用动态核划分机制对底层物理CPU资源进行划分后,得到实时CPU池和非实时CPU池,针对非实时CPU池中的非实时虚拟机,按照Xen默认的调度算法Credit调度进行处理,针对实时CPU池中的实时虚拟机,采用全局SEDF调度算法,在调度算法数据结构上,将每个PCPU对应一个运行队列改为只采用一个全局的运行队列服务所有的PCPU,并在队列数据结构中加入队列锁以保证PCPU互斥地操作队列;在调度阶段,每个CPU从队列中获取合适的虚拟CPU运行,并在选取下一个调度的虚拟CPU结束时判断该虚拟CPU之前运行的PCPU是否是当前调度PCPU,若是,则不进行任何处理,结束调度;否则,设置该虚拟CPU的迁移标志,并将事件通道的对应关系转移到当前调度PCPU。如图3所示,本步骤具体包括以下子步骤:
(3-1)若当前运行虚拟CPU为空闲,转入步骤(3-2);否则转入步骤(3-6);
(3-2)若该虚拟CPU运行在额外队列,转入步骤(3-3);否则转入步骤(3-4);
(3-3)对该虚拟CPU采用额外队列的记账方式对该虚拟CPU进行记账,转入步骤(3-5);
(3-4)对该虚拟CPU采用运行队列的记账方式对该虚拟CPU进行记账;
(3-5)在记账阶段完成后,检查虚拟CPU的运行状态,若该虚拟CPU仍然可运行,则根据其优先级重新将其插入相应的队列,否则从队列中删除该虚拟CPU;
(3-6)对队列进行更新,根据虚拟CPU的优先级对队列进行排序。
具体而言,针对运行队列,虚拟CPU截止时间越早代表其优先级越高,针对等待队列,虚拟CPU时间片到来的时间越早代表其优先级越高。
(3-7)采用虚拟CPU缓存命中优化策略,从运行队列中选取下一个最合适运行的虚拟CPU进行调度,若找到,则返回虚拟CPU;否则返回空。
其中,虚拟CPU缓存命中优化策略是针对全局SEDF调度算法在不同的物理CPU之间调度虚拟CPU的优化方法,通过对运行物理CPU以及虚拟CPU迁移时间的限制,来减小虚拟CPU频繁地在不同物理CPU之间运行所带来的迁移及上下文切换开销,同时有效地提高了虚拟CPU缓冲命中率,从而提高了实时虚拟机的性能。
(3-8)若返回值为空且等待队列为空,转入步骤(3-12);若返回值为空且等待队列不为空,转入步骤(3-9);若返回值不为空,转入步骤(3-10);
(3-9)采用虚拟CPU缓存命中优化策略,从额外队列中选取下一个虚拟CPU进行调度;若找到,则转入步骤(3-10);否则转入步骤(3-12);
(3-10)将返回的虚拟CPU从队列中移除,判断虚拟CPU之前运行的物理CPU与当前调度物理CPU是否一致,若一致,转入步骤(3-13);否则转入步骤(3-11)。
具体而言,若虚拟CPU之前所在物理CPU与当前调度物理CPU不一致,说明该虚拟CPU是在从阻塞状态刚恢复到可运行状态,但尚未来得及被之前所在物理CPU及时调度的情况下,被当前调度CPU抢走运行,这时对应该虚拟CPU的事件通道仍绑定在之前所在物理CPU上,所以应对事件通道采取相应的转移操作;若虚拟CPU之前所在物理CPU与当前调度CPU一致,则不会出现上述问题;
(3-11)设置虚拟CPU迁移标志,并将该虚拟CPU对应的事件通道转移到当前物理CPU上;转入步骤(3-13);
(3-12)运行空闲虚拟CPU;
(3-13)调度结束。
本步骤的优点在于:全局SEDF通过修改Xen默认的SEDF算法,采用全局共享运行队列代替原有的每个物理CPU对应一个队列,弥补了其缺少的负载均衡机制,不再局限虚拟CPU固定于某个物理CPU上运行,能够让虚拟CPU运行于每个物理CPU上,平衡了物理CPU的负载,从而更好地提高了实时虚拟机的性能。
在本实施例中,步骤(3)中的虚拟CPU缓存命中优化策略是在对全局队列进行虚拟CPU选择时,为了提高缓存命中率以及减少虚拟CPU在物理CPU之间频繁地迁移所采用的策略。该策略主要通过对运行队列的两轮筛选来实现,第一轮优先选出之前在本CPU上运行的虚拟CPU,这样能够保证良好的局部缓存性,如果没有符合条件的虚拟CPU,则进行第二轮筛选,选出可运行且cache不是hot的虚拟CPU。如图4所示,所述虚拟CPU缓存命中优化策略具体包括以下子步骤:
(4-1)读取全局队列第一个虚拟CPU;
(4-2)若该虚拟CPU与当前运行CPU是同一个,则转入步骤(4-12);否则转入步骤(4-3);
(4-3)若该虚拟CPU上下文切换未完成,则转入步骤(4-4);否则转入步骤(4-5);
(4-4)判断队列是否遍历完毕,若遍历完毕,则转入步骤(4-11);否则读取全局队列的下一个虚拟CPU,转入步骤(4-2);
(4-5)判断该虚拟机上次是否运行在当前调度CPU上,若是,则转入步骤(4-12);否则转入步骤(4-4);
(4-6)开始对全局队列的第二轮遍历;
(4-7)读取全局队列第一个虚拟CPU;
(4-8)若该虚拟CPU上下文切换尚未完成,则转入步骤(4-9);否则转入步骤(4-10);
(4-9)判断队列是否遍历完毕,若遍历完毕,则转入步骤(4-11);否则,读取全局队列下一个虚拟CPU,转入步骤(4-8);
(4-10)判断该虚拟CPU是否是cache hot的,若该虚拟CPU为cachehot,则转入步骤(4-12),否则转入步骤(4-11)。
本实施例中,按如下定义虚拟CPU是否是cache hot的:虚拟CPU等待调度的时间为当前调度系统时间减去虚拟CPU上一次调度完成的时间,若虚拟CPU等待调度时间大于1ms,可认为虚拟CPU不是cache hot的,否则,虚拟CPU为cache hot。
本子步骤的优点在于:判断虚拟CPU是否cache hot然后决定是否选择该虚拟CPU到当前调度物理CPU上运行,能够有效地防止了虚拟CPU在物理CPU之间的频繁摆动,减少了缓存不命中带来的隐藏开销。从而提升了实时虚拟机的性能。
(4-11)返回空闲虚拟CPU,结束;
(4-12)返回虚拟CPU,结束。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种实时性增强的虚拟CPU调度方法,包括以下步骤:
(1)Xen虚拟化平台启动并初始化,通过虚拟机管理控制工具原有用户接口创建一个或多个虚拟机,并且,虚拟机管理控制工具等待接收用户发送的虚拟机控制命令;
(2)虚拟机管理控制工具接收到用户命令后,判断命令类型,若是以下三种命令之一:1)设置虚拟机类型;2)修改虚拟机调度参数;3)销毁虚拟机,则触发动态核划分机制,所述动态核划分机制通过分析用户的命令,获取指定的虚拟机的ID以及相应要修改的参数,计算满足Xen上实时虚拟机可调度性所需的物理CPU数量,并将物理CPU资源池划分为实时物理CPU池与非实时物理CPU池;
(3)利用动态核划分机制对底层物理CPU资源进行划分后,得到实时CPU池和非实时CPU池,针对非实时CPU池中的非实时虚拟机,按照Xen默认的调度算法Credit调度进行处理,针对实时CPU池中的实时虚拟机,采用全局SEDF调度算法,在调度算法数据结构上,将每个PCPU对应一个运行队列改为只采用一个全局的运行队列服务所有的PCPU,并在队列数据结构中加入队列锁以保证PCPU互斥地操作队列;
在调度阶段,每个CPU从队列中获取合适的虚拟CPU运行,并在选取下一个调度的虚拟CPU结束时判断该虚拟CPU之前运行的PCPU是否是当前调度PCPU,若是,则不进行任何处理,结束调度;否则,设置该虚拟CPU的迁移标志,并将事件通道的对应关系转移到当前调度PCPU。
2.根据权利要求1所述的实时性增强的虚拟CPU调度方法,步骤(2)中,所述可调度性是指,对于单核物理CPU上的实时虚拟CPU,若满足以下公式,则该虚拟CPU集可调度:
其中:n为单核物理CPU上实时虚拟CPU的总数;slice是指虚拟CPU最差情况下的执行时间;period是指虚拟CPU的相对截止时间。
3.根据权利要求1所述的实时性增强的虚拟CPU调度方法,其特征在于,步骤(2)包括以下子步骤:
(2-1)虚拟机管理控制工具接受用户发来的命令;
(2-2)判断用户命令类型,若为设置虚拟机类型命令则执行步骤(2-3);若为修改虚拟机调度参数命令,则转入步骤(2-7);若为销毁虚拟机命令,则转入步骤(2-5);否则转入步骤(2-12);
(2-3)虚拟机管理控制工具接受到设置虚拟机类型命令后,分析命令并获取用户所指定的虚拟机ID以及虚拟机类型;
(2-4)若指定虚拟机在实时CPU资源池且设置的虚拟机类型为非实时虚拟机,则转入步骤(2-5);若指定虚拟机在非实时CPU资源池且设置的虚拟机类型为实时虚拟机,则转入步骤(2-6);否则不进行任何处理,直接结束;
(2-5)根据指定虚拟机的虚拟机ID,通过超级调用获取该虚拟机的调度参数,根据虚拟机的调度参数计算由于该实时虚拟机变为非实时虚拟机而应该从实时CPU资源池中移除的CPU数量,转入步骤(2-11);
(2-6)根据指定虚拟机的虚拟机ID,通过超级调用获取该虚拟机的调度参数,根据调度参数计算由于该非实时虚拟机变为实时虚拟机而应该从非实时CPU资源池中移除的CPU数量,转入步骤(2-10);
(2-7)虚拟机管理控制工具接受改变调度参数的命令后,分析命令并获取用户指定的虚拟机ID以及调度参数值;
(2-8)若指定虚拟机类型为实时虚拟机,转入步骤(2-9);否则转入步骤(2-12);
(2-9)通过虚拟机ID获取调度参数改变前后的值,并计算修改调度参数之后与之前实时虚拟机可调度性所需CPU数量的差值,若该差值大于0,转入步骤(2-10),否则转入步骤(2-11);
(2-10)获取重新分配的CPU数量,从非实时CPU资源池中移除相应数量的物理CPU,移入实时CPU资源池中,转入步骤(2-12);
(2-11)获取重新分配的CPU数量,从实时CPU资源池中移除相应数量的物理CPU,移入非实时CPU资源池中,转入步骤(2-12);
具体而言,在从实时CPU资源池中移除CPU时,遍历实时CPU资源池的有效CPU位图,优先选择与非实时CPU资源池中CPU属于同一个NUMA节点的CPU,直到相应数量的CPU都被移除;
(2-12)调用超级调用(Hypercall)执行命令。
4.根据权利要求3所述的实时性增强的虚拟CPU调度方法,其特征在于,步骤(2-5)中,一个实时虚拟CPU的使用率为虚拟CPU的应运行的最短时间除以虚拟CPU分配的时间片,实时虚拟机的使用率为该虚拟机所拥有的虚拟CPU个数乘以一个虚拟CPU的使用率,当实时虚拟机变为非实时虚拟机时,应该从实时CPU资源池中移除的CPU数量为实时虚拟机使用率向上取整。
5.根据权利要求3所述的实时性增强的虚拟CPU调度方法,其特征在于,步骤(2-9)具体为,修改调度参数之后与之前实时虚拟机可调度性所需CPU的差值为:调度参数修改后该实时虚拟机应该分配的CPU数量减去调度参数修改前该虚拟机应该分配的CPU数量。
6.根据权利要求3所述的实时性增强的虚拟CPU调度方法,其特征在于,步骤(2-10)中,在从非实时CPU资源池中移除CPU时,遍历非实时CPU资源池的有效CPU位图,优先选择与实时CPU资源池中CPU属于同一个NUMA节点的CPU,直到相应数量的CPU都被移除。
7.根据权利要求1所述的实时性增强的虚拟CPU调度方法,其特征在于,步骤(3)具体包括以下子步骤:
(3-1)若当前运行虚拟CPU为空闲,转入步骤(3-2);否则转入步骤(3-6);
(3-2)若该虚拟CPU运行在额外队列,转入步骤(3-3);否则转入步骤(3-4);
(3-3)对该虚拟CPU采用额外队列的记账方式对该虚拟CPU进行记账,转入步骤(3-5);
(3-4)对该虚拟CPU采用运行队列的记账方式对该虚拟CPU进行记账;
(3-5)在记账阶段完成后,检查虚拟CPU的运行状态,若该虚拟CPU仍然可运行,则根据其优先级重新将其插入相应的队列,否则从队列中删除该虚拟CPU;
(3-6)对队列进行更新,根据虚拟CPU的优先级对队列进行排序;
(3-7)采用虚拟CPU缓存命中优化策略,从运行队列中选取下一个最合适运行的虚拟CPU进行调度,若找到,则返回虚拟CPU;否则返回空;
(3-8)若返回值为空且等待队列为空,转入步骤(3-12);若返回值为空且等待队列不为空,转入步骤(3-9);若返回值不为空,转入步骤(3-10);
(3-9)采用虚拟CPU缓存命中优化策略,从额外队列中选取下一个虚拟CPU进行调度;若找到,则转入步骤(3-10);否则转入步骤(3-12);
(3-10)将返回的虚拟CPU从队列中移除,判断虚拟CPU之前运行的物理CPU与当前调度物理CPU是否一致,若一致,转入步骤(3-13);否则转入步骤(3-11);
(3-11)设置虚拟CPU迁移标志,并将该虚拟CPU对应的事件通道转移到当前物理CPU上;转入步骤(3-13);
(3-12)运行空闲虚拟CPU;
(3-13)调度结束。
8.根据权利要求7所述的实时性增强的虚拟CPU调度方法,其特征在于,步骤(3-6)中,针对运行队列,虚拟CPU截止时间越早代表其优先级越高;针对等待队列,虚拟CPU时间片到来的时间越早代表其优先级越高。
9.根据权利要求7所述的实时性增强的虚拟CPU调度方法,其中,所述虚拟CPU缓存命中优化策略具体包括以下子步骤:
(4-1)读取全局队列第一个虚拟CPU;
(4-2)若该虚拟CPU与当前运行CPU是同一个,则转入步骤(4-12);否则转入步骤(4-3);
(4-3)若该虚拟CPU上下文切换未完成,则转入步骤(4-4);否则转入步骤(4-5);
(4-4)判断队列是否遍历完毕,若遍历完毕,则转入步骤(4-11);否则读取全局队列的下一个虚拟CPU,转入步骤(4-2);
(4-5)判断该虚拟机上次是否运行在当前调度CPU上,若是,则转入步骤(4-12);否则转入步骤(4-4);
(4-6)开始对全局队列的第二轮遍历;
(4-7)读取全局队列第一个虚拟CPU;
(4-8)若该虚拟CPU上下文切换尚未完成,则转入步骤(4-9);否则转入步骤(4-10);
(4-9)判断队列是否遍历完毕,若遍历完毕,则转入步骤(4-11);否则,读取全局队列下一个虚拟CPU,转入步骤(4-8);
(4-10)判断该虚拟CPU是否是cache hot的,若该虚拟CPU为cache hot,则转入步骤(4-12),否则转入步骤(4-11);
(4-11)返回空闲虚拟CPU,结束;
(4-12)返回虚拟CPU,结束。
10.根据权利要求9所述的实时性增强的虚拟CPU调度方法,步骤(4-10)中,按如下定义虚拟CPU是否是cache hot的:虚拟CPU等待调度的时间为当前调度系统时间减去虚拟CPU上一次调度完成的时间,若虚拟CPU等待调度时间大于1ms,认为虚拟CPU不是cachehot的,否则,虚拟CPU为cache hot。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310697467.1A CN103678003B (zh) | 2013-12-18 | 2013-12-18 | 一种实时性增强的虚拟cpu调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310697467.1A CN103678003B (zh) | 2013-12-18 | 2013-12-18 | 一种实时性增强的虚拟cpu调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678003A CN103678003A (zh) | 2014-03-26 |
CN103678003B true CN103678003B (zh) | 2016-08-31 |
Family
ID=50315655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310697467.1A Active CN103678003B (zh) | 2013-12-18 | 2013-12-18 | 一种实时性增强的虚拟cpu调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103678003B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955397B (zh) * | 2014-04-28 | 2017-01-04 | 浙江大学 | 一种基于微架构感知的虚拟机调度多策略选择方法 |
CN103995733B (zh) * | 2014-05-27 | 2017-02-15 | 西安交通大学 | 一种基于物理资源穿透机制的轻量级嵌套虚拟化实现方法 |
CN104123174B (zh) * | 2014-08-06 | 2017-06-16 | 华中科技大学 | 一种虚拟化环境下动态实时cpu调度系统 |
CN104503838B (zh) * | 2014-11-23 | 2017-06-27 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN104461735B (zh) * | 2014-11-28 | 2018-03-27 | 杭州华为数字技术有限公司 | 一种虚拟化场景下分配cpu资源的方法和装置 |
CN104615480A (zh) * | 2015-02-04 | 2015-05-13 | 上海交通大学 | 基于numa高性能网络处理器负载的虚拟处理器调度方法 |
US10002016B2 (en) | 2015-07-23 | 2018-06-19 | Red Hat, Inc. | Configuration of virtual machines in view of response time constraints |
GB2545507B (en) * | 2015-12-18 | 2019-07-17 | Imagination Tech Ltd | Controlling scheduling of a GPU |
CN108037994B (zh) * | 2017-11-15 | 2020-12-22 | 中国电子科技集团公司第三十二研究所 | 一种支持异构环境下多核并行处理的调度机制 |
CN108762929B (zh) * | 2018-05-30 | 2022-03-22 | 郑州云海信息技术有限公司 | 在sql数据库下管理处理器核心数的方法和装置 |
CN108958157B (zh) * | 2018-07-09 | 2020-09-18 | 北京东土科技股份有限公司 | 控制程序控制调度方法、装置、计算机设备以及存储介质 |
CN110362411B (zh) * | 2019-07-25 | 2022-08-02 | 哈尔滨工业大学 | 一种基于Xen系统的CPU资源调度方法 |
CN111427669A (zh) * | 2020-04-27 | 2020-07-17 | 安谋科技(中国)有限公司 | 计算机设备上的虚拟机的管理方法、装置、介质和系统 |
CN112667356B (zh) * | 2020-12-30 | 2023-01-31 | 上海交通大学 | 时延可预测的NVMe存储虚拟化方法和系统 |
CN112667364B (zh) * | 2021-01-05 | 2022-07-01 | 烽火通信科技股份有限公司 | 绑核与非绑核虚拟混合部署方法、装置、设备及存储介质 |
CN113419820A (zh) * | 2021-07-02 | 2021-09-21 | 广州市品高软件股份有限公司 | 实时虚拟机的部署方法和云平台 |
CN113687909B (zh) * | 2021-07-28 | 2024-01-30 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于微内核的分时vcpu多核调度方法及系统 |
US11900146B2 (en) * | 2021-08-31 | 2024-02-13 | Apple Inc. | Memory controller with separate transaction table for real time transactions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
CN101765225A (zh) * | 2008-12-24 | 2010-06-30 | 华为技术有限公司 | 一种虚拟化的集群管理方法和集群节点 |
CN102135903A (zh) * | 2011-03-09 | 2011-07-27 | 上海交通大学 | 基于硬件虚拟化的Xen实时性增强系统及其方法 |
CN103067425A (zh) * | 2011-10-20 | 2013-04-24 | 中国移动通信集团公司 | 虚拟机创建方法、虚拟机管理系统及相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9817695B2 (en) * | 2009-04-01 | 2017-11-14 | Vmware, Inc. | Method and system for migrating processes between virtual machines |
-
2013
- 2013-12-18 CN CN201310697467.1A patent/CN103678003B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
CN101765225A (zh) * | 2008-12-24 | 2010-06-30 | 华为技术有限公司 | 一种虚拟化的集群管理方法和集群节点 |
CN102135903A (zh) * | 2011-03-09 | 2011-07-27 | 上海交通大学 | 基于硬件虚拟化的Xen实时性增强系统及其方法 |
CN103067425A (zh) * | 2011-10-20 | 2013-04-24 | 中国移动通信集团公司 | 虚拟机创建方法、虚拟机管理系统及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103678003A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678003B (zh) | 一种实时性增强的虚拟cpu调度方法 | |
Kc et al. | Scheduling hadoop jobs to meet deadlines | |
CN102662763B (zh) | 基于服务质量的虚拟机资源调度方法 | |
Polo et al. | Performance-driven task co-scheduling for mapreduce environments | |
CN102279771B (zh) | 一种虚拟化环境中自适应按需资源分配的方法及系统 | |
Kazempour et al. | AASH: an asymmetry-aware scheduler for hypervisors | |
CN103646006B (zh) | 一种处理器的调度方法、装置和系统 | |
WO2017107091A1 (en) | Virtual cpu consolidation to avoid physical cpu contention between virtual machines | |
Polo et al. | Deadline-based MapReduce workload management | |
CN102270159B (zh) | 一种虚拟化环境中的准入控制与负载均衡方法 | |
US20080270199A1 (en) | Methods and apparatus for management of heterogeneous workloads | |
EP2921957A1 (en) | Method and apparatus for allocating core resource, and many-core system | |
Wen et al. | Merge or separate? Multi-job scheduling for OpenCL kernels on CPU/GPU platforms | |
CN104503838A (zh) | 一种虚拟cpu调度方法 | |
Vaishnav et al. | Heterogeneous resource-elastic scheduling for CPU+ FPGA architectures | |
Garefalakis et al. | Neptune: Scheduling suspendable tasks for unified stream/batch applications | |
CN101976201B (zh) | 基于cpu亲和力的虚拟cpu动态绑定方法 | |
CN104090826B (zh) | 基于相关性的任务优化部署方法 | |
CN109240795A (zh) | 一种适用于超融合it基础设施的云计算资源池模型的资源调度方法 | |
CN103262035A (zh) | 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 | |
CN102662636B (zh) | 一种基于两层虚拟机的并行作业调度的方法 | |
Menouer et al. | Opportunistic scheduling and resources consolidation system based on a new economic model | |
CN105912383A (zh) | 一种高可靠性的依赖任务调度与资源配置方法 | |
KR20120019330A (ko) | 멀티코어 시스템의 스케쥴링 장치 및 방법 | |
KR101534137B1 (ko) | 가상머신을 위한 협력 스케줄링 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |