一种实时性增强的虚拟cpu调度方法

文档序号:6524295阅读:432来源:国知局
一种实时性增强的虚拟cpu调度方法
【专利摘要】本发明公开了一种实时性增强的虚拟CPU调度方法,包括:虚拟机管理控制工具接受用户操作虚拟机及调度参数的命令;管理控制工具判断用户命令是否关系实时虚拟机,若涉及实时虚拟机,计算满足实时虚拟机可调度性的条件,根据计算结果对物理CPU资源进行动态划分;采用实时性增强的虚拟CPU调度方法进行调度,对运行实时虚拟机的CPU资源池使用全局最早截止时间优先调度算法,对运行非实时虚拟机的CPU资源池使用额度调度算法;对全局最早截止时间优先调度算法进行虚拟CPU缓存命中的优化。本发明在保证实时虚拟机实时性的同时,通过对CPU资源的划分带来了良好的隔离性,减少了对非实时虚拟机的性能影响。
【专利说明】一种实时性增强的虚拟CPU调度方法
【技术领域】
[0001]本发明属于计算系统虚拟化【技术领域】,更具体地,涉及一种实时性增强的虚拟CPU
调度方法。
【背景技术】
[0002]近年来,随着计算体系结构和软硬件技术的飞速发展,计算系统虚拟化技术也日益成熟,并成为学术界和工业界的热门技术。虚拟化技术使得计算机软件可以在一个虚拟平台上而不是真实的物理机上运行,应用程序在各自独立的空间运行而互不影响,使得一个平台可以同时运行多个操作系统,扩大了硬件容量,简化了软件重新配置的过程,从而显著提高了计算机的利用率、工作效率和安全性、灵活性。
[0003]多处理机系统为虚拟化环境带来了很大的优势。多处理机系统包括多个物理中央处理器(PCPU),多处理机虚拟化环境包括虚拟机监视器以及一台或多台虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统),每台虚拟机上运行一个客户操作系统(Guest OS),每台虚拟机又包含一个或多个虚拟中央处理器(VCPU);虚拟机监视器将虚拟机上的客户操作系统映射到某些VCPU上(VCPU的数目可以多于PCPU的数目),同时,将VCPU调度到PCPU上运行。VCPU能够在不同PCPU上运行而无需告知Guest OS。虚拟机监视器采用灵活的分配策略,以响应不断变化的负载情况。
[0004]虚拟机监视器能够将PCPU分发给Guest OS,以支持灵活的分配策略,并支持重新分配PCPU来响应不断变化的负载情况。分配策略支持Guest OS的并发操作,它也能将Guest OS映射到VCPU上(VCPU的数目可以多于PCPU),VCPU能够在PCPU之间迁移而无需通知Guest OS。这使得虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统)可以从一台机器迁移到与该机器结构不同的机器上。
[0005]Xen是当前主流的虚拟化系统之一,在数据中心中被广泛地应用于服务器整合。当前Xen的默认调度算法为额度(Credit)调度算法,它可以全局管理多个PCPU,将PCPU时间公平高效地分配给各个VCPU。它可以用SMP的方式将各个PCPU分配给每个VCPU,实现负载平衡。但其对实时性的支持较差,因为该调度算法是按比例公平共享的非抢占式的,无论客户虚拟机是实时的还是非实时的,只有当调度器运行队列中该客户虚拟机前面VCPU的时间片用完或者主动放弃PCPU,该客户虚拟机才能得到调度。SEDF (Simple EarliestDeadline First)调度算法是Xen的备选调度算法,其对实时性支持很好,但不支持SMP,这使得它在当前主流的多核处理器架构下难以得到广泛应用。
[0006]由于Xen在其设计之初没有考虑多核实时领域的需求,因此在实时性能上表现并不理想。

【发明内容】

[0007]针对现有技术的以上缺陷或改进需求,本发明提供了一种实时性增强的虚拟CPU调度方法,其目的在于,在Xen虚拟化平台的基础上加以改进,既能够较好地支持传统的通用应用虚拟机,也能高效地运行实时应用虚拟机,针对虚拟机类型的不同对虚拟机区分调度,并对物理CPU资源进行划分,在保证实时虚拟机实时性的同时,通过对CPU资源的划分带来了良好的隔离性,减少了对非实时虚拟机的性能影响。
[0008]本发明是一种实时性增强的虚拟CPU调度方法,是应用在Xen虚拟化平台中用以解决Xen在多核环境下对实时应用支持不佳的问题,Xen包括虚拟机管理控制工具以及虚拟机监控器。该方法主要包括以下步骤:
[0009](I )Xen虚拟化平台启动并初始化,通过虚拟机管理控制工具原有用户接口创建一个或多个虚拟机,并且,虚拟机管理控制工具等待接收用户发送的虚拟机控制命令;
[0010](2)虚拟机管理控制工具接收到用户命令后,判断命令类型,若是以下三种命令之一:1)设置虚拟机类型;2)修改虚拟机调度参数;3)销毁虚拟机,则触发动态核划分机制,所述动态核划分机制通过分析用户的命令,获取指定的虚拟机的ID以及相应要修改的参数,计算满足Xen上实时虚拟机可调度性所需的物理CPU数量,并将物理CPU资源池划分为实时物理CPU池与非实时物理CPU池;
[0011](3)利用动态核划分机制对底层物理CPU资源进行划分后,得到实时CPU池和非实时CPU池,针对非实时CPU池中的非实时虚拟机,按照Xen默认的调度算法Credit调度进行处理,针对实时CPU池中的实时虚拟机,采用全局SEDF调度算法,在调度算法数据结构上,将每个PCPU对应一个运行队列改为只采用一个全局的运行队列服务所有的PCPU,并在队列数据结构中加入队列锁以保证PCPU互斥地操作队列;在调度阶段,每个CPU从队列中获取合适的虚拟CPU运行,并在选取下一个调度的虚拟CPU结束时判断该虚拟CPU之前运行的PCPU是否是当前调度PCPU,若是,则不进行任何处理,结束调度;否则,设置该虚拟CPU的迁移标志,并将事件通道的对应关系转移到当前调度PCPU。
[0012]总体而言,与现有技术相比,本发明所构思的以上技术方案能够取得下列有益效果:
[0013](I)能够让用户根据运行在客户虚拟机上的应用类型,灵活地设置虚拟机的类型,从而有利于虚拟机监控器对不同类型的虚拟机区别对待,更好地平衡了实时虚拟机与非实时虚拟机的性能;
[0014](2)让用户只关心客户虚拟机的类型及调度参数的设置,而不用细化到如何手动分配资源,降低了用户管理虚拟机所带来的开销。因此本发明具有明显的优势;
[0015](3)弥补了 Xen默认的SEDF调度算法缺少的负载均衡机制,不再局限虚拟CPU固定于某个物理CPU上运行,能够让虚拟CPU运行于每个物理CPU上,平衡了物理CPU的负载,从而更好地提高了实时虚拟机的性能;
[0016](4)保证实时虚拟机实时性的同时也兼顾了非实时虚拟机的公平性和吞吐率;
[0017](5)既可以支持运行通用应用的虚拟机,又可以更好地支持实时虚拟机,具有良好的兼容性。
【专利附图】

【附图说明】
[0018]图1为本发明实时性增强的虚拟CPU调度方法的流程图;
[0019]图2为本发明步骤(2)的细化流程图;
[0020]图3为本发明步骤(3 )的细化流程图;[0021]图4为本发明步骤(4)的细化流程图。
【具体实施方式】
[0022]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
[0023]以下首先对本发明的技术术语进行解释和说明:
[0024]实时虚拟机:客户操作系统中运行对实时性要求较高的实时应用的虚拟机,运行在实时CPU资源池中。
[0025]非实时虚拟机:客户操作系统中运行对实时性无要求的通用应用的虚拟机,运行在非实时CPU资源池中。
[0026]实时虚拟CPU:实时虚拟机中的虚拟CPU。
[0027]非实时虚拟CPU:非实时虚拟机中的虚拟CPU。
[0028]实时CPU资源池:运行实时虚拟机的物理CPU集合
[0029]非实时CPU资源池:运行非实时虚拟机的物理CPU集合
[0030]本发明的整体思路在于,从区分虚拟机的类型着眼,将虚拟机按照运行应用的特征,划分为非实时虚拟机与实时虚拟机两种类型;并且,针对物理CPU资源,本发明贡献了一个动态核划分机制,对物理CPU资源进行划分,使两种类型在不同的CPU资源池中采用不同的调度算法分开调度。针对非实时CPU资源池,仍采用Credit调度算法。针对实时CPU资源池,本发明贡献了一个全局SEDF算法来达到满足实时性的目的。
[0031]本发明是一种实时性增强的虚拟CPU调度方法,是应用在Xen虚拟化平台中用以解决Xen在多核环境下对实时应用支持不佳的问题,Xen包括虚拟机管理控制工具(Xentools)以及虚拟机监控器。如图1所示,该方法主要包括以下步骤:
[0032](I )Xen虚拟化平台启动并初始化,通过虚拟机管理控制工具原有用户接口创建一个或多个虚拟机,并且,虚拟机管理控制工具等待接收用户发送的虚拟机控制命令;
[0033](2)虚拟机管理控制工具接收到用户命令后,判断命令类型,若是以下三种命令之一:1)设置虚拟机类型;2)修改虚拟机调度参数;3)销毁虚拟机,则触发动态核划分机制,所述动态核划分机制通过分析用户的命令,获取指定的虚拟机的ID以及相应要修改的参数,计算满足Xen上实时虚拟机可调度性所需的物理CPU数量,并将物理CPU资源池划分为实时物理CPU池与非实时物理CPU池。其中,可调度性是指,对于单核物理CPU上的实时虚拟CPU,若满足以下公式,则该虚拟CPU集可调度:
【权利要求】
1.一种实时性增强的虚拟CPU调度方法,包括以下步骤: (1)Xen虚拟化平台启动并初始化,通过虚拟机管理控制工具原有用户接口创建一个或多个虚拟机,并且,虚拟机管理控制工具等待接收用户发送的虚拟机控制命令; (2)虚拟机管理控制工具接收到用户命令后,判断命令类型,若是以下三种命令之一:I)设置虚拟机类型;2)修改虚拟机调度参数;3)销毁虚拟机,则触发动态核划分机制,所述动态核划分机制通过分析用户的命令,获取指定的虚拟机的ID以及相应要修改的参数,计算满足Xen上实时虚拟机可调度性所需的物理CPU数量,并将物理CPU资源池划分为实时物理CPU池与非实时物理CPU池; (3)利用动态核划分机制对底层物理CPU资源进行划分后,得到实时CPU池和非实时CPU池,针对非实时CPU池中的非实时虚拟机,按照Xen默认的调度算法Credit调度进行处理,针对实时CPU池中的实时虚拟机,采用全局SEDF调度算法,在调度算法数据结构上,将每个PCPU对应一个运行队列改为只采用一个全局的运行队列服务所有的PCPU,并在队列数据结构中加入队列锁以保证PCPU互斥地操作队列; 在调度阶段,每个(PU从队列中获取合适的虚拟CPU运行,并在选取下一个调度的虚拟CPU结束时判断该虚拟CPU之前运行的PCPU是否是当前调度PCPU,若是,则不进行任何处理,结束调度;否则,设置该虚拟CPU的迁移标志,并将事件通道的对应关系转移到当前调度 PCPU。
2.根据权利要求1所述的实时性增强的虚拟CPU调度方法,步骤(2)中,所述可调度性是指,对于单核物理CPU上的实时虚拟CPU,若满足以下公式,则该虚拟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数量的差值,若该差值大于O,转入步骤(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为cachehot,则转入步骤(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。
【文档编号】G06F9/455GK103678003SQ201310697467
【公开日】2014年3月26日 申请日期:2013年12月18日 优先权日:2013年12月18日
【发明者】吴松, 金海 , 付丹青, 周理科 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1