一种提高多工作流可靠性的节能调度方法与流程

文档序号:20163297发布日期:2020-03-24 21:14阅读:217来源:国知局
一种提高多工作流可靠性的节能调度方法与流程

本发明涉及云计算技术领域,具体涉及一种提高多工作流可靠性的节能调度方法。



背景技术:

云计算作为一种新型计算模式的出现,因其可提供分布式计算、存储应用服务及其按需收费的特点,受到了广泛的关注。随着越来越多的企业和用户将自身的应用请求提交到云端,数据中心需要处理的云计算科学工作流数量和消耗的电能也急剧增加,而且面临着多个云工作流同时提交的难题。通常不同的用户会具有不同的时间和可靠性要求,虚拟机在实际运行过程中,随时可能会发生故障,任务在虚拟机上执行的可靠性难以保障,进而导致工作流的可靠性降低,难以满足用户的可靠性要求。传统提高工作流调度可靠性的方式是采取硬件冗余技术,但是由于系统搭建的复杂性和费用较高,大大降低了其在数据中心的实用性。因此更合适的方法是采用软件技术,设计合适的可靠性调度方案,在满足用户时间约束的前提下,将任务分配到满足可靠性要求的虚拟机上执行。目前,多工作流的调度方法研究只针对用户提出的时间约束、花费约束或两者同时约束的情况,提出了解决方法,但针对用户的可靠性约束尚未给出合适的解决方法,现有的多工作流可靠性的调度方法,未考虑多工作流的可靠性。

可见,传统调度方法中,数据中心运行能耗大,未考虑用户提出的可靠性约束,任务排序中只考虑时间因素,任务可靠性分解方法中未考虑任务实际调度过程中由于机器故障等原因造成的工作流可靠性降低,因此提高多工作流的可靠性和应用的调度成功率,同时采用较低的数据中心运行能耗是数据中心面临的重大挑战。



技术实现要素:

有鉴于此,本发明提供了一种提高多工作流可靠性的节能调度方法,基于用户的可靠性和截止时间要求,通过工作流预调度和任务重调度两个阶段,提高多个用户提交的工作流可靠性的同时使用虚拟机调频技术降低数据中心的能耗。

本发明的一种提高多工作流可靠性的节能调度方法,包括以下步骤:

步骤1,云数据中心同时接收多个用户提交的带有截止时间约束dc和可靠性约束rc的工作流,按照dc的大小对工作流进行升序排序,存入集合w中,此时可用虚拟机集合为p;

步骤2,选择dc最小的工作流wh进行预调度,包括如下子步骤:

步骤2.1,考虑可靠性权重因子和截止时间约束计算工作流wh中每个任务的优先级权值;将wh中的所有任务按优先级权值降序排序,组成集合t;

步骤2.2,选取任务集合t中优先级权值最高的任务th作为当前待调度任务,并实时为该任务分配可靠性目标值;

其中,任务th的可靠性目标值rgoal(th)为该任务的可靠性约束值rc(th)和该任务在所有虚拟机上的可获得的最大可靠性值之间的较小值,其中pk为第k个可用虚拟机;任务th的可靠性约束值rc(th)为:

其中,allot表示已调度任务集合,unallot表示未调度任务集合;rc(wh)表示工作流wh的可靠性约束;表示所有已调度任务实际可靠性的乘积,其中ar(ta)表示已调度任务ta的实际可靠性;avr(th)表示任务th在集合p中所有虚拟机上的平均可靠性;表示所有未调度任务在集合p中所有虚拟机上的平均可靠性的乘积,其中avr(tua)表示未调度任务tua在集合p中所有虚拟机上的平均可靠性;

步骤2.3,使用heft中的最早完成时间和处理器插空策略,为任务th预分配虚拟机,并将th在t中删除,若t不为空,返回步骤2.2;若t为空,在w中删除wh,若w不为空,返回步骤2,否则得到所有任务与虚拟机的映射关系,执行步骤3;

步骤3,判断步骤2得到的所有任务与虚拟机的映射关系下,集合w中每个工作流实际可靠性是否均大于或等于设定的工作流可靠性约束,若是则将当前所有任务与虚拟机之间的映射关系作为最终调度结果进行调度;否则进行步骤4;

步骤4,对工作流进行重调度:重新调整所有任务与虚拟机之间的映射关系,获得最终调度结果进行调度,包括如下子步骤:

步骤4.1,获得步骤2得到的所有任务与虚拟机的映射关系下每个任务的实际开始时间和实际完成时间,将所有任务按照任务实际完成时间降序排序存储在集合t1中;

步骤4.2,在集合t1中选择优先级权值最大的任务tcurr作为当前待调度任务;根据有向无环图模型中任务的相互依赖约束和已获得的任务与虚拟机之间的映射关系及任务的实际开始时间和实际完成时间,计算任务tcurr在每个虚拟机上的最早开始时间est(tcurr,pk),最晚结束时间lft(tcurr,pk)以及在每个虚拟机上的空闲时间scurr,k,进一步计算得到任务tcurr可以在虚拟机pk执行的最早开始时间est'(tcurr,pk)和最晚完成时间lft'(tcurr,pk);

步骤4.3,对于任务tcurr,根据任务tcurr在p集合中各个虚拟机可以执行的最早开始时间和最晚完成时间,获得能执行任务tcurr的虚拟机集合p';

其中,对于虚拟机pk,如果最晚结束与最早开始时间之差大于或者等于任务在虚拟机上的执行时间lft'(tcurr,pk)-est'(tcurr,pk)≥wcurr,k,则说明当前虚拟机pk能执行该任务,否则说明当前虚拟机pk不能执行该任务,将能执行任务tcurr的虚拟机添加到p'中;

判断p'是否为空,若p'不为空,进行步骤4.4;若p'为空,放弃调整tcurr,直接将当前调度中任务tcurr与虚拟机的映射关系作为最终tcurr与虚拟机之间的映射关系,执行步骤4.6;

步骤4.4,计算任务tcurr在p'中各个虚拟机上的最大可靠性,判断是否存在最大可靠性大于任务tcurr可靠性目标值的虚拟机;

若不存在,则在集合p'中直接为任务tcurr选择最大可靠性的虚拟机pmax作为目标虚拟机,此时的最优频率为该虚拟机的最大运行频率fmax;

若存在,则对所有最大可靠性大于任务tcurr可靠性目标值的虚拟机进行降频,直至任务tcurr在各个虚拟机上的可靠性均与任务tcurr的可靠性目标值相等,找到此时能耗最小的虚拟机,作为目标虚拟机pgoal,目标虚拟机pgoal此时的频率即为最优频率fgoal;

步骤4.5,将任务tcurr在目标虚拟机pgoal上以最优频率fgoal执行,按照步骤4.4获得的目标虚拟机及该虚拟机的最优频率fgoal,更新预调度中任务与虚拟机之间的映射关系;基于更新后的预调度中任务与虚拟机之间的映射关系,更新任务tcurr的实际开始时间ast(tcurr)和实际完成时间aft(tcurr);

步骤4.6,将tcurr在集合t1中删除,若t1不为空,返回步骤4.2;若t1为空,则将当前所有任务与虚拟机映射关系作为获最终调度结果进行调度。

其中,所述步骤2中,工作流wh中任务ti的优先级权值计算方式具体如下:

步骤2.1.1,获得任务ti的预测开始时间pst(ti):

式中,pred(ti)为工作流有向无环图模型中任务ti的父代任务的集合,任务tj表示ti的其中一个父代任务,表示父代任务tj在给定的有限虚拟机上的平均执行时间,其中wj,k表示tj在虚拟机pk上的执行时间,m为给定的虚拟机集合的大小,tt(tj,i)表示任务tj到ti的数据传输时间;

步骤2.1.2,计算工作流wh中预测开始时间小于任务ti预测开始时间的所有任务的平均可靠性的乘积:

其中,avr(tj)表示任务tj在给定虚拟机上集合p上的平均可靠性;

步骤2.1.3,预测任务ti在不同虚拟机上的相对处理时间:

其中,分别表示任务ti所在工作流wh给定的截止时间约束和可靠性约束值,r(ti,pk)表示任务ti在虚拟机pk上以最大频率运行的最大可靠性,(r(ti,pk)/(rcwh/pcr(ti)))表示任务ti的可靠性权重因子;

步骤2.1.4,根据预测的任务ti在虚拟机上的相对处理时间,获得任务ti的优先级权值与该任务所有子代任务优先级权值的关系为:

其中,succ(ti)表示任务ti的所有子代任务集合,其中任务ts表示ti的一个子代任务,表示预测得到的任务ti在所有虚拟机的相对处理时间的最小值;

步骤2.1.5,基于出口任务的优先级权值及任务ti的优先级权值与该任务所有子代任务优先级权值的关系,利用出口任务的优先级权值进行迭代,得到任务ti的优先级权值。

其中,所述工作流wh的实际可靠性计算方式如下:

其中,i=1,2…n,n为工作流wh中的任务总数,ar(ti)为工作流wh中包含的任务ti的实际可靠性。

其中,所述步骤2.1.2中,假设虚拟机的故障概率情况服从泊松分布,任务tj在给定的虚拟机集合p的平均可靠性表示任务在虚拟机pk上的可靠性,其中,λk表示虚拟机pk每单位时间出现故障的概率,wj,k表示任务tj在虚拟机pk上的执行时间。

其中,使用替换其中m表示虚拟机集合的大小。

有益效果:

本发明基于预调度和重调度两阶段的多工作流节能调度算法,其中,在工作流预调度阶段优化了工作流任务排序和工作流可靠性约束分解;在任务重调度阶段依据预调度阶段获得的任务可靠性目标值,使用虚拟机调频技术,为任务重新选择满足可靠性目标值且能耗最小的虚拟机,获取优化的任务与虚拟机之间的映射关系,从而提高多工作流的可靠性,同时降低数据中心的运行能耗。

附图说明

图1为本发明提高多工作流可靠性的节能调度方法中工作流预调度的流程图;

图2为本发明提高多工作流可靠性的节能调度方法中任务重调度的流程图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供的提高多工作流可靠性的节能调度方法包括工作流预调度和任务重调度阶段。图1为本发明提高多工作流可靠性的节能调度方法中工作流预调度的流程图;图2为本发明提高多工作流可靠性的节能调度方法中任务重调度的流程图。

在工作流预调度阶段,包括预测任务的开始时间、考虑截止时间和可靠性权重因子优化计算任务优先级权值、使用最早完成时间和插空算法给出任务与虚拟机的映射关系;根据已调度任务的实际可靠性实时计算更新待调度任务的可靠性目标值为后续任务重调度阶段提供可靠性目标以尽可能降低能耗。其中,通过预测任务的开始时间,考虑工作流的截止时间和任务可靠性权重因子,采用从下到上的迭代方法计算,优化了任务排序,得到更加合理的任务调度顺序;工作流可靠性约束分解时,根据已调度任务的实际可靠性以及待调度任务可靠性与所有未调度任务可靠性之间比例关系实时更新当前任务的可靠性目标值,当已分配任务因虚拟机故障等原因造成的实际可靠性过低时,实时计算更新待调度任务的可靠性目标值值,提高对未调度任务的可靠性要求,为任务重调度阶段在满足任务可靠性约束的前提下,尽可能降低数据中心的运行能耗提供基础。

在重调度阶段,包括根据工作流截止时间约束和任务依赖关系确定任务在虚拟机上的可执行时间、根据任务的可靠性目标值确定可用虚拟机集合、利用虚拟机调频技术,为任务重新分配最优目标虚拟机并获得最优的执行频率,进一步更新优化任务与虚拟机之间的映射关系。其中,将预调度完成的多个工作流的任务全部重新调度。利用工作流的截止时间约束和虚拟机空闲约束,获得任务在虚拟机上的最早开始和最晚结束时间,基于预调度阶段获得的任务可靠性目标值,使用虚拟机动态调频技术,为任务重新分配满足可靠性目标值且能耗最小的虚拟机并获取该虚拟机的最优运行频率,进一步调整更新多工作流中任务与虚拟机之间的映射关系,从而解决了多个具有可靠性约束工作流同时提交至云数据中心且运行能耗大的调度难题,提高了多个工作流的调度可靠性,降低数据中心的能源消耗。

本实施例中,设置的多个工作流数量为75,包含了五种真实工作流linearalgebra,gaussianelimination,diamondgraph,completebinarytree以及fastfouriertransform,每种工作流数量均为15,可用虚拟机的个数m为64。本实施例工作流调度算法具体步骤如下:

步骤1,云数据中心同时接收多个用户提交的带有截止时间约束(dc)和可靠性约束(rc)的工作流,按照dc的大小对工作流进行升序排序,存入集合w中,此时可用虚拟机集合为p;

步骤2,选择dc最小的工作流wh进行预调度,包括如下子步骤:

步骤2.1,考虑可靠性权重因子和截止时间约束计算工作流wh中每个任务的优先级权值,对于工作流wh中任务ti的优先级权值计算方式具体如下:

步骤2.1.1,获得任务的预测开始时间,其中任务ti的预测开始时间pst(ti)为:

式中,pred(ti)为工作流有向无环图模型中任务ti的父代任务的集合,任务tj表示ti的其中一个父代任务,表示父代任务tj在给定的有限虚拟机上的平均执行时间,其中wj,k表示tj在虚拟机pk上的执行时间,m为给定的虚拟机集合的大小,tt(tj,i)表示任务tj到ti的数据传输时间。注意工作流的入口任务tentry的开始时间为pst(tentry)=0,假设75个工作流到达的初始时间为0。

步骤2.1.2,计算工作流wh中预测开始时间小于任务ti预测开始时间的所有任务的平均可靠性的乘积:

式中表示任务tj在给定的虚拟机集合p的平均可靠性,表示任务在虚拟机pk上的可靠性,其中,λk表示虚拟机pk每单位时间出现故障的概率,wj,k表示任务tj在虚拟机pk上的执行时间,这里假设虚拟机的故障概率情况服从泊松分布。

步骤2.1.3,根据工作流的截止时间和可靠性约束预测任务ti在不同虚拟机上的相对处理时间:

式中,分别表示任务ti所在工作流wh给定的截止时间约束和可靠性约束值,r(ti,pk)表示任务ti在虚拟机pk上以最大频率运行的最大可靠性,表示预测得到的工作流剩余空闲时间,表示预测得到的工作流的剩余可靠性,表示任务ti的可靠性权重因子;

步骤2.1.4,根据预测的任务ti在不同虚拟机上的相对处理时间,获得任务ti的优先级权值与该任务所有子代任务优先级权值的关系为:

其中,succ(ti)表示任务ti的所有子代任务集合,任务ts表示任务ti的其中一个子代任务,为预测得到的任务ti在所有虚拟机上的相对处理时间的最小值;的引入,考虑了截止时间和可靠性权重因子的影响,为可靠性要求较高的任务设置了较高的优先级,优化了任务优先级权值的计算,其中也可以使用来替换。

步骤2.1.5,基于出口任务的优先级权值及任务ti优先级权值与该任务所有子代任务优先级权值的关系,利用出口任务的优先级权值进行迭代,计算得到任务ti的优先级权值;将wh中的任务按优先级权值rankr降序排序,放到任务集合t中。

步骤2.2,选取任务集合t中最高优先级权值的任务th,计算任务th的可靠性约束值rc(th)和可靠性目标值值rgoal(th)如下:

其中,allot表示已调度完成的任务集合,unallot表示未调度的任务集合,表示已调度任务的实际可靠性乘积,表示待调度任务th在所有给定的虚拟机上的平均可靠性,其中m表示给定的虚拟机集合的大小。表示未调度任务tua在所有给定的虚拟机上的平均可靠性,表示剩余未调度任务的平均可靠性乘积,表示当前工作流wh可靠性约束下,所有未调度任务的可靠性约束乘积。根据实时调度结果,考虑当前待调度任务th的平均可靠性占所有未调度任务平均可靠性乘积的比例实时更新待调度任务th的可靠性约束,避免了由于虚拟机故障等原因造成已分配任务实际可靠性降低而导致整体工作流可靠性过低无法满足用户要求。

根据实际情况,任务th的可靠性目标值rgoal(th)为分解得到的可靠性约束rc(th)之间与任务th在所有虚拟机上可获得的最大可靠性的较小值即

本发明调度过程中实时计算得到待调度任务的可靠性约束,充分考虑了已分配任务可靠性变化对未分配任务可靠性约束值的影响,当已调度任务的实际可靠性达不到要求时,通过提高对未分配任务的可靠性要求,尽可能的满足工作流整体的可靠性要求,克服了传统任务可靠性分解方法在调度之前将所有任务的可靠性约束值直接给出,遭遇机器故障时,任务可靠性无法满足要求,进而导致整体工作流可靠性较低,无法满足用户要求的缺点。

步骤2.3,使用heft算法中的最早完成时间和处理器插空策略,对任务th进行预调度,分配虚拟机并在t中删除th,若t不为空,返回步骤2.2;若t为空,在w中删除wh,若w不为空,返回步骤2,否则得到所有任务与虚拟机的映射关系,与每个任务的实际开始时间和实际完成时间,执行步骤3;

在计算任务优先级权值时,考虑了时间和可靠性权重因子,能够根据工作流的剩余空闲时间和可靠性权重因子为可靠性要求较高的任务分配较长的相对时间和较高的优先级,避免了传统任务优先级排序中,只考虑时间对于任务优先级排序的影响,忽略任务可靠性要求的缺点。

步骤3,判断步骤2得到的所有任务与虚拟机的映射关系下,集合w中每个工作流实际可靠性是否均大于或等于设定的工作流可靠性约束,若是则将当前所有任务与虚拟机之间的映射关系作为最终调度结果进行调度;否则进行步骤4;其中预调度得到的工作流实际可靠性为式(6)所示:

其中,ar(wh)、ar(ti)分别为为预调度中工作流wh的可靠性与wh中任务ti的实际可靠性。

步骤4,对工作流进行重调度:重新调整所有任务与虚拟机之间的映射关系,获得最终调度结果进行调度,包括如下子步骤:

步骤4.1,获得步骤2得到的所有任务与虚拟机的映射关系下每个任务的实际开始时间和实际完成时间,将所有任务按照任务实际完成时间降序排序存储在集合t1中;

步骤4.2,在集合t1中选择优先级权值最大的任务tcurr作为当前待调度任务;根据有向无环图模型中任务的相互依赖约束和已获得的任务与虚拟机之间的映射关系及任务的实际开始时间和实际完成时间,计算任务tcurr在每个虚拟机上的最早开始时间est(tcurr,pk),最晚结束时间lft(tcurr,pk)以及在每个虚拟机上的空闲时间scurr,k,进一步计算得到任务tcurr可以在虚拟机pk执行的最早开始时间est'(tcurr,pk)=max{est(tcurr,pk),ts(scurr,k)}和最晚完成时间lft'(tcurr,pk)=min{lft(tcurr,pk),te(scurr,k)};

步骤4.3,对于任务tcurr,根据任务tcurr在p集合中各个虚拟机执行的最早开始时间和最晚完成时间,获得能执行任务tcurr的虚拟机集合p';

其中,对于虚拟机pk,如果最晚结束与最早开始时间之差大于或者等于任务在虚拟机上的执行时间lft'(tcurr,pk)-est'(tcurr,pk)≥wcurr,k,则说明当前虚拟机pk能执行该任务,否则说明当前虚拟机pk不能执行该任务,将能执行任务tcurr的虚拟机添加到p'中;

判断pk是否为空,若p'不为空,进行步骤4.4;若p'为空,放弃调整tcurr,直接获得当前调度中任务tcurr与虚拟机的映射关系作为最终tcurr与虚拟机之间的映射关系,执行步骤4.6;

步骤4.4,计算任务tcurr在p'中各个虚拟机上的最大可靠性,判断是否存在最大可靠性大于任务tcurr可靠性目标值rgoal(tcurr)的虚拟机;

若不存在,则在集合p'中直接为任务tcurr选择最大可靠性的虚拟机pmax作为目标虚拟机pgoal,此时的最优频率fgoal为该虚拟机的最大运行频率fmax;

若存在,则对所有最大可靠性大于任务tcurr可靠性目标值的虚拟机进行降频,直至任务tcurr在各个虚拟机上的可靠性均与任务tcurr的可靠性目标值相等,找到此时能耗最小的虚拟机,作为目标虚拟机pgoal,目标虚拟机pgoal此时的频率即为最优频率fgoal;该步骤能够在满足任务tcurr可靠性目标值的基础上,充分利用截止时间的空余,通过动态调整虚拟机频率技术,最大程度的降低数据中心的能源消耗。

步骤4.5,将任务tcurr在目标虚拟机pgoal上以最优频率fgoal执行,按照步骤4.4获得的目标虚拟机及该虚拟机的最优频率fgoal,更新预调度中任务与虚拟机之间的映射关系;基于更新后的预调度中任务与虚拟机之间的映射关系,更新任务tcurr的实际开始时间ast(tcurr)和实际完成时间aft(tcurr);

步骤4.6,将tcurr在集合t1中删除,若t1不为空,返回步骤4.2;若t1为空,则将当前所有任务与虚拟机映射关系作为获最终调度取值进行调度。

利用上述方法能够在多工作流具有可靠性约束下得到近似最优的任务与虚拟机之间的映射关系,降低云数据中心运行能源消耗,提高多工作流调度的可靠性和云数据中心的服务成功率。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1