法律状态公告日
法律状态信息
法律状态
2017-02-01
授权
授权
2014-06-04
实质审查的生效 IPC(主分类):G06F9/455 申请日:20131220
实质审查的生效
2014-05-07
公开
公开
技术领域
本发明属于计算机多核虚拟化调度领域,更具体地,涉及一种虚拟化 环境下基于群调度的同步优化调度系统和调度方法。
背景技术
在虚拟化环境下,调度分为两层:一层是虚拟机(Virtural Machine, 简称VM)内部的进程调度,一层是虚拟机管理器(Virtural Machine Manager,简称VMM)对虚拟处理器(Virtual CPU,简称VCPU)的调度。 VM对进程的调度相对于VMM基本是透明的,VMM仅根据当前VCPU中是否有 任务运行来判断当前VCPU是否可被调度。由于进程运行状态信息无法直接 通过VCPU反应给VMM,导致VMM对VCPU的调度和VM对进程的调度之间容 易产生理解偏差,对系统性能产生较大影响。
一般情况下用户会在虚拟化环境下运行大量并行负载,并行负载需要 锁机制进行同步,其中一个主要的锁是自旋锁。由于VCPU会被VMM抢断以 运行其它VCPU,使得可能持有自旋锁的VCPU被外层调度抢断,导致将来某 个时间片需要该锁的VCPU试图请求该自旋锁,而该锁已经被不在运行的 VCPU占有,这样会导致忙等待,从而浪费当前CPU时间片,最终导致线程 同步开销增大,系统性能下降,这个问题称之为锁持有问题(Lock Holder Problem,简称LHP)。
目前业界通过群调度来解决LHP问题,它的主要思想是同时调度并行 程序集合来减少同步延迟。同时调度VM上的所有VCPU,使其像原生系统一 样运行,不会抢断VM上的VCPU,这使得一个VCPU尝试获得自旋锁时持有 该锁的VCPU是正在运行的,从而减少同步开销。但是群调度有一个很致命 的缺点,即CPU碎片问题:当前的物理CPU资源不够但是还有空闲的CPU 时群调度并不会调度任何VCPU,即使当前有空闲的CPU资源,也会减少CPU 利用率和延迟VCPU的执行。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种虚拟化环境 下基于群调度的同步优化调度系统和调度方法,其目的在于,解决现有群 调度中存在CPU碎片的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种虚拟化环境下 基于群调度的同步优化调度系统的调度方法,包括以下步骤:
(1)VCPU初始映射模块判断当前虚拟机的类型是并行虚拟机还是非并 行虚拟机,如果是并行虚拟机,则转入步骤(2),否则转入步骤(3);
(2)VCPU初始映射模块依次将当前虚拟机的每个CPU映射到不同的物 理CPU的运行队列中,然后进入步骤(4);
(3)VCPU初始映射模块依次将当前虚拟机的每个CPU映射到负载最低 的物理CPU的运行队列中;
(4)Credit分发模块每隔S个时间片根据所有虚拟机的权重为所有虚 拟机的CPU分配信用值,其中S为正整数;具体而言,当前虚拟机的每个 CPU获得的信用值的大小等于(当前虚拟机的权重/所有虚拟机的权重之和) *S/当前虚拟机的CPU数量;
(5)VCPU调度模块获取当前物理CPU的运行队列中信用值最大的虚拟 机CPU作为当前虚拟机CPU;
(6)VCPU调度模块判断当前虚拟机CPU的类型是并行CPU还是非并行 CPU,如果是并行CPU,则转入步骤(7),如果是非并行CPU,则进入步骤 (8);
(7)VCPU调度模块判断当前虚拟机CPU是否为该虚拟机的第一个CPU, 若是则转入步骤(9),否则获取当前物理CPU的运行队列中信用值仅次于 当前虚拟机CPU的虚拟机CPU作为当前虚拟机CPU,并返回步骤(6);
(8)VCPU调度模块将当前物理CPU提供给非并行CPU使用,然后进入 步骤(10);
(9)VCPU调度模块发送重新调度中断到其它物理CPU,以让系统能够 同时调度该虚拟机的前N个CPU,其中N为群粒度的大小;
(10)Credit消耗模块减少当前虚拟机CPU的信用值减少1,同时 Credit历史统计模块统计当前虚拟机CPU的减少值,然后返回步骤(4)。
优选地,步骤(2)具体为,将虚拟机的第一个CPU映射到负载最低的 物理CPU的运行队列中,将虚拟机的第二个CPU映射到负载倒数第二低的 物理CPU的运行队列中,…,以此类推。
优选地,在步骤(3)中,在某个物理CPU的负载一直最低的情况下, 不同的CPU会被映射到该物理CPU的运行队列中。
优选地,群粒度的大小N的值等于当前CPU个数*P/(P+Q),其中P 表示目前为止并行负载使用的CPU时间,Q表示目前为止非并行负载使用的 CPU时间。
按照本发明的另一方面,提供了一种虚拟化环境下基于群调度的同步 优化调度系统,包括VCPU初始映射模块、Credit分发模块,VCPU调度模 块,Credit消耗模块、以及Credit历史统计模块,VCPU初始映射模块用 于判断当前虚拟机的类型是并行虚拟机还是非并行虚拟机,如果是并行虚 拟机,则依次将当前虚拟机的每个CPU映射到不同的物理CPU的运行队列 中,否则依次将当前虚拟机的每个CPU映射到负载最低的物理CPU的运行 队列中,Credit分发模块用于每隔S个时间片根据所有虚拟机的权重为所 有虚拟机的CPU分配信用值,其中S为正整数;具体而言,当前虚拟机的 每个CPU获得的信用值的大小等于(当前虚拟机的权重/所有虚拟机的权重 之和)*S/当前虚拟机的CPU数量,VCPU调度模块用于获取当前物理CPU的 运行队列中信用值最小的虚拟机CPU作为当前虚拟机CPU,并判断当前虚拟 机CPU的类型是并行CPU还是非并行CPU,如果是并行CPU,则判断当前虚 拟机CPU是否为该虚拟机的第一个CPU,若是则重新调度中断到其它物理 CPU,以让其调度该虚拟机的其它CPU,然后过程结束,否则获取当前物理 CPU的运行队列中信用值仅次于当前虚拟机CPU的虚拟机CPU作为当前虚拟 机CPU;如果是非并行CPU,则将当前物理CPU提供给非并行CPU使用,然 后进入Credit消耗模块,Credit消耗模块用于将当前虚拟机CPU的信用值 减少1,Credit历史统计模块用于统计当前虚拟机CPU的减少值。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够 取得下列有益效果:
1、由于本发明通过统计CPU调度历史记录动态调整群粒度的大小,因 此能够更好地缓解群调度带来的CPU碎片问题,提高CPU利用率,同时亦 可减小能耗。
2、由于本发明结合了信用调度算法和群调度算法,因此解决了Xen虚 拟化环境下LHP问题,减少并行负载的同步延迟,提高了并行负载的性能。
3、由于本发明对运行不同类型负载的虚拟机采用了不同的调度策略, 因此能够更好地适用不同负载,亦可提高CPU利用率,提升负载的性能。
附图说明
图1是本发明虚拟化环境下基于群调度的同步优化调度系统的模块框 图。
图2是本发明虚拟化环境下基于群调度的同步优化调度方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图 及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体 实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的 本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可 以相互组合。
以下首先对本发明涉及到的术语进行定义和说明。
信用值(Credit)::Xen Credit算法中用于衡量使用物理CPU时间 的值。
群调度:一种目前主流解决LHP的调度算法,即调度一个VM上的所有 VCPU,使其像原生系统一样运行。
如图2所示,本发明虚拟化环境下基于群调度的同步优化调度系统的 调度方法包括以下步骤:
(1)VCPU初始映射模块判断当前虚拟机的类型是并行虚拟机还是非并 行虚拟机,如果是并行虚拟机,则转入步骤(2),否则转入步骤(3); 具体而言,VCPU初始映射模块读取虚拟机的配置文件中的参数,以判断该 虚拟机的类型;
(2)VCPU初始映射模块依次将当前虚拟机的每个CPU映射到不同的物 理CPU的运行队列中,然后进入步骤(4);具体而言,将虚拟机的第一个 CPU映射到负载最低的物理CPU的运行队列中(即运行队列中任务最少的物 理CPU),将虚拟机的第二个CPU映射到负载倒数第二低的物理CPU的运行 队列中,…,以此类推;
本步骤的优点在于,可以提高并行虚拟机的CPU同时运行的可能性。
(3)VCPU初始映射模块依次将当前虚拟机的每个CPU映射到负载最低 的物理CPU的运行队列中;具体而言,本步骤和步骤(2)区别在于,在某 个物理CPU的负载一直最低的情况下,不同的CPU会被映射到该物理CPU 的运行队列中;
(4)Credit分发模块每隔S个时间片根据所有虚拟机的权重为所有虚 拟机的CPU分配信用值,其中S为正整数,取值范围是10至100;具体而 言,当前虚拟机的每个CPU获得的信用值的大小等于(当前虚拟机的权重/ 所有虚拟机的权重之和)*S/当前虚拟机的CPU数量;
本步骤的优点在于,根据权重的大小来决定虚拟机的物理CPU资源。
(5)VCPU调度模块获取当前物理CPU的运行队列中信用值最大的虚拟 机CPU作为当前虚拟机CPU;
(6)VCPU调度模块判断当前虚拟机CPU的类型是并行CPU还是非并行 CPU,如果是并行CPU,则转入步骤(7),如果是非并行CPU,则进入步骤 (8);
(7)VCPU调度模块判断当前虚拟机CPU是否为该虚拟机的第一个CPU, 若是则转入步骤(9),否则获取当前物理CPU的运行队列中信用值仅次于 当前虚拟机CPU的虚拟机CPU作为当前虚拟机CPU,并返回步骤(6);
(8)VCPU调度模块将当前物理CPU提供给非并行CPU使用,然后进入 步骤(10);
(9)VCPU调度模块发送重新调度中断到其它物理CPU,以让系统能够 同时调度该虚拟机的前N个CPU,其中N为群粒度的大小;具体而言,N的 值等于当前CPU个数*P/(P+Q),其中P和Q为步骤(10)中Credit历史 统计模块;
本步骤的优点在于,根据负载的行为动态地调节群粒度的大小,可以缓解CPU碎片问题。
(10)Credit消耗模块减少当前虚拟机CPU的信用值减少1,同时 Credit历史统计模块统计当前虚拟机CPU的减少值(即为1),然后返回 步骤(4);具体而言,Credit历史统计模块记录两个值P和Q,其中P表 示目前为止并行负载使用的CPU时间,Q表示目前为止非并行负载使用的 CPU时间,P和Q初始值1,Credit历史统计模块根据当前虚拟机CPU的 类型对P或者Q加1。
如图1所示,本发明虚拟化环境下基于群调度的同步优化调度系统包 括VCPU初始映射模块1、Credit分发模块2,VCPU调度模块3,Credit消 耗模块4、以及Credit历史统计模块5。
VCPU初始映射模块1用于判断当前虚拟机的类型是并行虚拟机还是非 并行虚拟机,如果是并行虚拟机,则依次将当前虚拟机的每个CPU映射到 不同的物理CPU的运行队列中,否则依次将当前虚拟机的每个CPU映射到 负载最低的物理CPU的运行队列中;具体而言,VCPU初始映射模块读取虚 拟机的配置文件中的参数,以判断该虚拟机的类型;
Credit分发模块2用于每隔S个时间片根据所有虚拟机的权重为所有 虚拟机的CPU分配信用值,其中S为正整数,取值范围是10至100;具体 而言,当前虚拟机的每个CPU获得的信用值的大小等于(当前虚拟机的权 重/所有虚拟机的权重之和)*S/当前虚拟机的CPU数量;
VCPU调度模块3用于获取当前物理CPU的运行队列中信用值最小的虚 拟机CPU作为当前虚拟机CPU,并判断当前虚拟机CPU的类型是并行CPU还 是非并行CPU,如果是并行CPU,则判断当前虚拟机CPU是否为该虚拟机的 第一个CPU,若是则重新调度中断到其它物理CPU,以让其调度该虚拟机的 其它CPU,然后过程结束,否则获取当前物理CPU的运行队列中信用值仅次 于当前虚拟机CPU的虚拟机CPU作为当前虚拟机CPU;如果是非并行CPU, 则将当前物理CPU提供给非并行CPU使用,然后进入Credit消耗模块4。
Credit消耗模块4用于将当前虚拟机CPU的信用值减少1。
Credit历史统计模块5用于统计当前虚拟机CPU的减少值(即为1)。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等 同替换和改进等,均应包含在本发明的保护范围之内。
机译: 在基于容器的虚拟化环境中管理和调度GPU内存资源的GPU方法和系统
机译: 在基于容器的虚拟化环境中管理和调度GPU内存资源的GPU方法和系统
机译: 多核环境下基于优先级的实时操作系统的任务调度方法