CN103777995B - 虚拟化环境下基于群调度的同步优化调度系统和调度方法 - Google Patents
虚拟化环境下基于群调度的同步优化调度系统和调度方法 Download PDFInfo
- Publication number
- CN103777995B CN103777995B CN201310710423.8A CN201310710423A CN103777995B CN 103777995 B CN103777995 B CN 103777995B CN 201310710423 A CN201310710423 A CN 201310710423A CN 103777995 B CN103777995 B CN 103777995B
- Authority
- CN
- China
- Prior art keywords
- cpu
- virtual machine
- vcpu
- module
- credit
- 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
Classifications
-
- 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
- Multi Processors (AREA)
Abstract
本发明公开了一种虚拟化环境下基于群调度的同步优化调度系统,包括VCPU初始映射模块、Credit分发模块、VCPU调度模块、Credit消耗模块、以及Credit历史统计模块。VCPU初始映射模块负责将VCPU映射到PCPU的运行队列。Credit分发模块根据权重将S个时间片分发个各个VM的个VCPU。VCPU调度模块负责在每个时间片将某个VCPU调度到当前PCPU运行,它根据Credit历史统计模块来确定运行并行负载的VM群调度的粒度以实施群调度策略。Credit消耗模块负责更新运行完一个时间片的VCPU的credit值的大小。Credit历史统计模块记录窗口为K的各个VCPU调度历史,并维护两种类型负载总的运行时间以提供VCPU调度模块所需要的群粒度值。本发明能够充分利用负载的类型行为来提升负载的性能,提高CPU的利用率,同时亦可减小能耗。
Description
技术领域
本发明属于计算机多核虚拟化调度领域,更具体地,涉及一种虚拟化环境下基于群调度的同步优化调度系统和调度方法。
背景技术
在虚拟化环境下,调度分为两层:一层是虚拟机(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)。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种虚拟化环境下基于群调度的同步优化调度系统的调度方法,其特征在于,包括以下步骤:
(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为群粒度的大小;群粒度的大小N的值等于当前CPU个数*P/(P+Q),其中P表示目前为止并行负载使用的CPU时间,Q表示目前为止非并行负载使用的CPU时间;
(10)Credit消耗模块减少当前虚拟机CPU的信用值减少1,同时Credit历史统计模块统计当前虚拟机CPU的减少值,然后返回步骤(4)。
2.根据权利要求1所述的调度方法,其特征在于,步骤(2)具体为,将虚拟机的第一个CPU映射到负载最低的物理CPU的运行队列中,将虚拟机的第二个CPU映射到负载倒数第二低的物理CPU的运行队列中,…,以此类推。
3.根据权利要求1所述的调度方法,其特征在于,在步骤(3)中,在某个物理CPU的负载一直最低的情况下,不同的CPU会被映射到该物理CPU的运行队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310710423.8A CN103777995B (zh) | 2013-12-20 | 2013-12-20 | 虚拟化环境下基于群调度的同步优化调度系统和调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310710423.8A CN103777995B (zh) | 2013-12-20 | 2013-12-20 | 虚拟化环境下基于群调度的同步优化调度系统和调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103777995A CN103777995A (zh) | 2014-05-07 |
CN103777995B true CN103777995B (zh) | 2017-02-01 |
Family
ID=50570273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310710423.8A Active CN103777995B (zh) | 2013-12-20 | 2013-12-20 | 虚拟化环境下基于群调度的同步优化调度系统和调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103777995B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866370B (zh) * | 2015-05-06 | 2018-02-23 | 华中科技大学 | 一种云计算环境下面向并行应用的动态时间片调度方法及系统 |
US10831556B2 (en) * | 2015-12-23 | 2020-11-10 | Intel IP Corporation | Virtual CPU consolidation to avoid physical CPU contention between virtual machines |
CN107341066B (zh) * | 2016-11-30 | 2020-07-07 | 杭州迪普科技股份有限公司 | 一种线程空转频率基准值的获取方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053858A (zh) * | 2010-12-28 | 2011-05-11 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN102541651A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 一种嵌入式虚拟机的实时调度系统 |
-
2013
- 2013-12-20 CN CN201310710423.8A patent/CN103777995B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053858A (zh) * | 2010-12-28 | 2011-05-11 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN102541651A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 一种嵌入式虚拟机的实时调度系统 |
Non-Patent Citations (1)
Title |
---|
"虚拟机协同调度问题研究";常建忠等;《计算机工程与应用》;20110214;第47卷(第6期);第38-41、48页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103777995A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102184125B (zh) | 异构多核环境下基于程序行为在线分析的负载均衡方法 | |
CN102253857B (zh) | 一种多核环境下的Xen虚拟机调度控制方法 | |
CN103064746B (zh) | 基于当前credit进行预测调度的处理器资源精确分配方法 | |
CN102890643B (zh) | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 | |
CN105302638B (zh) | 基于系统负载的mpp集群任务调度方法 | |
CN103324525B (zh) | 一种云计算环境下的任务调度方法 | |
US8752059B2 (en) | Computer data processing capacity planning using dependency relationships from a configuration management database | |
CN103678003B (zh) | 一种实时性增强的虚拟cpu调度方法 | |
CN105550040B (zh) | 基于kvm平台的虚拟机cpu资源预留算法 | |
CN102270159B (zh) | 一种虚拟化环境中的准入控制与负载均衡方法 | |
CN104199730B (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
CN103677990B (zh) | 虚拟机实时任务的调度方法、装置和虚拟机 | |
CN102508718A (zh) | 一种虚拟机负载均衡方法和装置 | |
CN104021044A (zh) | 一种作业调度方法及装置 | |
CN103777995B (zh) | 虚拟化环境下基于群调度的同步优化调度系统和调度方法 | |
CN102662636B (zh) | 一种基于两层虚拟机的并行作业调度的方法 | |
CN105068873A (zh) | 一种异构虚拟资源任务调度方法及系统 | |
CN111694675A (zh) | 任务调度方法及装置、存储介质 | |
CN106250217A (zh) | 一种多虚拟处理器间的同步调度方法及其调度系统 | |
CN102402461A (zh) | 一种基于作业规模的均衡调度方法 | |
CN105912383A (zh) | 一种高可靠性的依赖任务调度与资源配置方法 | |
CN104866370B (zh) | 一种云计算环境下面向并行应用的动态时间片调度方法及系统 | |
CN103677959A (zh) | 一种基于组播的虚拟机集群迁移方法及系统 | |
Vella et al. | A simulation framework for scheduling performance evaluation on CPU-GPU heterogeneous system | |
CN104008001B (zh) | 用于大数据支撑的虚拟机动态迁移方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |