任务的资源调度方法及装置与流程

文档序号:12034437阅读:197来源:国知局
任务的资源调度方法及装置与流程

本发明属于数据处理领域,尤其涉及一种任务的资源调度方法及装置。



背景技术:

在传统的大数据计算中,每个需求一般包括多个任务,当需求包括的所有任务全部完成后,需求才能够在前端进行数据呈现。

目前,需求对应的任务按照先到达先计算的规则执行。往往会出现一些重要性低的需求的任务先一步到达,这些需求的任务到达后就能够占用机器资源开始计算。当重要性较低的需求的任务计算时所需时间较长且资源较大时,就可能对后续达到的一些重要性高且期望完成时间较早的需求的任务产生一定的影响。例如,当这些重要性较高的需求的任务到达时,计算集群资源已经满载,这些重要性较高的需求的任务无法及时进行计算,进而最终会影响到前台数据的呈现。



技术实现要素:

本发明提供一种任务的资源调度方法及装置,用于解决按照先到先计算的规则执行任务时重要性高的需求对应的任务无法及进行计算,影响该需求前端数据呈现的问题。

为了实现上述目的,本发明提供了一种任务的资源调度方法,包括:

确定多个任务的优先级以及规定的任务截止时间;

确定预设的资源上限;

根据任务优先级对执行多个任务的先后顺序进行调度,并使调度后的任务满足第一条件,所述第一条件为任务不存在时间资源冲突,所述时间资源冲突为一个以上任务在时间序列上存在重叠的部分,并且所述 重叠的部分的所占用的资源总和大于资源上限。

为了实现上述目的,本发明提供了一种任务的资源调度装置,包括:

确定模块,用于确定多个任务的优先级、规定的任务截止时间,以及预设的资源上限;

调度模块,用于根据任务优先级对执行多个任务的先后顺序进行调度,并使调度后的任务满足第一条件,所述第一条件为任务不存在时间资源冲突,所述时间资源冲突为一个以上任务在时间序列上存在重叠的部分,并且所述重叠的部分的所占用的资源总和大于资源上限。

本发明提供的任务的资源调度方法及装置,通过确定多个任务的优先级以及规定的任务截止时间,确定预设的资源上限,根据任务优先级对执行多个任务的先后顺序进行调度,并使调度后的任务满足第一条件,其中,第一条件为任务不存在时间资源冲突,所述时间资源冲突为一个以上任务在时间序列上存在重叠的部分,并且所述重叠的部分的所占用的资源总和大于资源上限。本实施例中执行多个任务时,不再采用现有先进先出的原则,而是根据任务的优先级来调度,通过上述调度处理,能够维持各任务按级别顺次执行,尽可能地保证级别高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求前端数据的呈现。

附图说明

图1为本发明实施例一的任务的资源调度方法的流程示意图;

图2为本发明实施例二的任务的资源调度方法的流程示意图;

图3为本发明实施例三任务的资源调度方法的流程示意图;

图4为本发明实施例四任务的资源调度方法的流程示意图;

图5为本发明实施例四的任务的资源调度方法的应用示意图之一;

图6a为本发明实施例四的任务的资源调度方法的应用示意图之二;

图6b为本发明实施例四的任务的资源调度方法的应用示意图之三;

图6c为本发明实施例四的任务的资源调度方法的应用示意图之四;

图6d为本发明实施例四的任务的资源调度方法的应用示意图之五;

图7a为本发明实施例四的任务的资源调度方法的应用示意图之六;

图7b为本发明实施例四的任务的资源调度方法的应用示意图之七;

图7c为本发明实施例四的任务的资源调度方法的应用示意图之八;

图7d为本发明实施例四的任务的资源调度方法的应用示意图之九;

图8a为本发明实施例四的任务的资源调度方法的应用示意图之十;

图8b为本发明实施例四的任务的资源调度方法的应用示意图之十一;

图8c为本发明实施例四的任务的资源调度方法的应用示意图之十二;

图8d为本发明实施例四的任务的资源调度方法的应用示意图之十三;

图9a为本发明实施例四的任务的资源调度方法的应用示意图之十四;

图9b为本发明实施例四的任务的资源调度方法的应用示意图之十五;

图10为本发明实施例五的任务的资源调度装置的结构示意图;

图11为本发明实施例六的任务的资源调度装置的结构示意图;

图12为本发明实施例七中任务的资源调度装置的结构示意图。

具体实施方式

下面结合附图对本发明实施例提供的任务的资源调度方法及装置进行详细描述。

实施例一

如图1所示,其为本发明实施例一的任务的资源调度方法的流程示意图。该任务的资源调度方法包括以下步骤:

s101、确定多个任务的优先级以及规定的任务截止时间;

本实施例中,每个任务对应的一个优先级,不同的任务可以具有相同的优先级。不同的任务可以属于同一个需求,不同需求之间的任务的优先级可以不同,而隶属于同一需求的所有任务的优先级相同。进一步地,为每个需求设置一个任务截止时间,该需求所包括的任务要在该任 务截止时间内完成。

s102、确定预设的资源上限。

为了保证执行任务的机器集群能够高效的允许,需要为执行任务的机器集群设置一个资源上限,在该资源上限内机器集群的允许效率较高,当超过该资源上限时,执行任务的过程中可能会出现异常。

s103、根据任务优先级对执行多个任务的先后顺序进行调度,并使调度后的任务满足第一条件。

其中,第一条件为任务不存在时间资源冲突,时间资源冲突为一个以上任务在时间序列上存在重叠的部分,并且所述重叠的部分的所占用的资源总和大于资源上限。时间资源冲突具体为一个以上相同类型的任务在时间序列上存在重叠的部分,并且所述重叠的部分的所占用的资源总和大于资源上限。

为了保证重要的任务尽可能先执行,需要按照确定的任务的优先级对多个任务进行排序,具体地,所述多个任务中存着类型不同的任务,不同类型的任务之间可能存在依赖关系,一般情况下,同一需求的不同类型的任务之间存在依赖关系,根据任务的优先级和任务的依赖关系对执行多个任务的先后顺序进行调度。本实施例中,对于不同需求的任务按照优先级的顺序进行调度,而同一需求的任务需要按照任务之间的依赖关系进行调度。

在进行调度后,需要保证调度后的任务满足第一条件,即任务之间不存在时间资源冲突。本实施例中,时间资源冲突为一个以上任务在时间序列上存在重叠的部分,而所述重叠的部分所占用的资源总和大于资源上限。

时间序列上重叠说明有多个任务在一个时间段内并行地执行,时间序列上重叠的多个任务的开始时间可能相同也可能不同,结束时间可能相同也可能不同,但是会在一段时间内并行执行。

进一步地,调度后的任务还满足第二条件,即所有任务的结束时间不会超出其规定的任务截止时间。也就是说,调度后的所有任务需要在规定的任务截止时间内完成。

进一步地,如果存在无法满足第一条件和第二条件的任务,则将该任务放置到对其他任务完成调度后再进行处理。

本发明提供的任务的资源调度方法,通过确定多个任务的优先级以及规定的任务截止时间,确定预设的资源上限,根据任务优先级对执行多个任务的先后顺序进行调度,并使调度后的任务满足第一条件,其中,第一条件为任务不存在时间资源冲突,所述时间资源冲突为一个以上任务在时间序列上存在重叠的部分,并且重叠的部分的所占用的资源总和大于资源上限。本实施例中执行多个任务时,不再采用现有先进先出的原则,而是根据任务的优先级来调度,通过上述调度处理,能够维持各任务按级别顺次执行,尽可能地保证级别高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求前端数据的呈现。

实施例二

如图2所示,其为本发明实施例二的任务的资源调度方法的流程示意图。该任务的资源调度方法包括以下步骤:

s200、利用调度后的任务构成已调度任务序列。

s201、向已调度任务序列中增加第一待调度任务。

其中,所述已调度任务序列中的任务的优先级高于或等于第一待调度任务的优先级,所述已调度任务序列满足第一条件,其中,第一条件为任务不存在时间资源冲突,本实施例中,所述时间资源冲突为一个以上相同类型任务在时间序列上重叠的部分所占用的资源总和大于该类型任务对应的资源上限。

本实施例中,每个任务对应的一个优先级,不同的任务可以具有相同的优先级。不同的任务可以属于同一个需求,不同需求之间的任务的优先级可以不同,而隶属于同一需求的所有任务的优先级相同。

为了保证级别的高任务优先执行,本实施例中按照任务的优先级由高到低的顺序进行资源调度。对第一待调度任务进行资源调度时,需要将该第一待调度任务增加到已调度任务序列中,其中已调度任务序列中的任务的优先级高于或者等于该第一待定调度任务的优先级。为了保证已调度任务序列中的任务能够执行,当前需要保证该已调度任务序列中 的任务之间不存在时间资源冲突。时间资源冲突为时间序列上重叠的相同类型的任务所占用的资源总和大于预设的资源上限。时间序列上重叠的判断条件为:第一待调度任务的开始时间小于等于已调度任务序列中同类型任务的结束时间,且已调度任务序列中同类型任务的开始时间小于等于第一待调度任务的结束时间。时间序列上重叠说明有多个任务在一个时间段内并行地执行,时间序列上重叠的多个任务的开始时间可能相同也可能不同,结束时间可能相同也可能不同,但是会在一段时间内并行执行。

本实施例中,预先设置一个资源上限,而时间资源冲突是指在一段时间内并行执行的相同类型的任务所占用的资源总和大于该资源上限。

s202、判断增加第一待调度任务是否导致所述时间资源冲突。

第一待调度任务需要占用一定的资源和时间,首先获取到与该第一待调度任务在时间序列上重叠的相同类型的任务,然后判断第一待调度任务和时间序列上重叠的相同类型的任务所占用的资源是否超出资源上限,也就是判断增加第一待调度任务是否导致时间资源冲突。

如果判断结果为是,执行步骤203,如果判断结果为否,执行步骤207。

s203、执行第一调度操作。

其中,第一调度操作包括:

沿着时间序列向后调整与第一待调度任务发生时间资源冲突的一个或多个第一重叠任务,或者,沿着时间序列向后调整一个或多个第一重叠任务以及在之后的时间序列上与第一待调度任务同类型的全部或部分任务,以生成满足第一条件和第二条件的调整后的任务序列。

其中,第二条件为:所有任务的结束时间不会超出其规定的任务截止时间。

执行第一调度操作中的第一种操作:沿着时间序列向后调整与第一待调度任务发生时间资源冲突的一个或多个第一重叠任务以获取满足第一条件和第二条件的调整后的任务序列的具体过程如下:

将一个或多个第一重叠任务沿着时间序列向后调整,每当向后调整 后该一个或者多个第一重叠任务与已调度任务序列中后面的任务存在时间资源冲突时,则继续向后调整该一个或多个第一重叠任务,当获取到存在满足第一条件的调度后的任务序列,则执行步骤204;如果在将该一个或多个第一重叠任务向后调整的过程中,出现了其任务的结束时间超出其规定的任务截止时间时,说明不存在满足第一条件和第二条件的调度后的任务序列,则执行步骤205。

执行第一调度操作中的第二种操作:沿着时间序列向后调整一个或多个第一重叠任务以及在之后的时间序列上与第一待调度任务同类型的全部或部分任务,以获取满足下第一条件和第二条件的调整后的任务序列。

经过第二种操作后,在沿着时间序列向后调整一个或多个第一重叠任务以及在之后的时间序列上与第一待调度任务同类型的全部或部分任务的操作中,需要保持已调度任务序列中同类型任务的先后顺序。也就是说,获取到的满足第一条件和第二条件的调整后的任务序列中同类型任务的先后顺序与已调度任务中原有任务的先后顺序。

第二种操作的具体过程如下:将一个或多个第一重叠任务作为目标任务沿着时间序列向后移动直至与目标任务发生的时间资源冲突消失后停止。如果移动后的目标任务的结束时间未超出其规定的任务截止时间,则进一步判断是否存在与移动后目标任务发生时间资源冲突的第二重叠任务,如果存在与移动后目标任务发生时间资源冲突的第二重叠任务,则将一个或多个第二重叠任务作为新的目标任务重复执行上述将目标任务沿着时间序列向后移动的操作,如果不存在与移动后目标任务发生时间资源冲突的第二重叠任务,则判定为当前调度后的任务序列满足第一条件和第二条件,则执行步骤204。

如果移动后的目标任务的结束时间超出其规定的任务截止时间,则判定为不存在满足第一条件和第二条件的调度后的任务序列,执行返回执行步骤205放弃向已调度任务序列中增加第一待调度任务的处理。

本实施例中,时间序列包括由已调度任务序列所包含的各任务的开始时间和结束时间构成的时间点,在沿着时间序列调整任务时具体为沿 着时间序列的时间点调整任务。

其中,可以将与第一待调度任务存在时间资源冲突的所有任务按照其结束时间进行从早到晚排序,然后按照从晚到早的顺序逐次从上述与第一待调度任务存在时间资源冲突的所有任务中选取一个或多个第一重叠任务任务。或者,将与第一待调度任务存在时间资源冲突的所有任务按照其开始时间进行从早到晚排序,然后按照从晚到早的顺序从上述与第一待调度任务存在时间资源冲突的所有任务中选取一个或多个第一重叠任务任务。或者,根据第一待调度任务的占用资源以及与第一待调度任务存在时间资源冲突的所有任务的占用资源,可以得知需要释放多少资源量,就可以满足第一待调度任务的资源需求。当确定出资源量后,可以从上述与第一待调度任务存在时间资源冲突的所有任务中选取一个或多个第一重叠任务任务。

此处需要说明,第二重叠任务的选取与第一重叠任务的选取过程相似,此处不再赘述。

s204、将满足第一条件和第二条件的调度后的任务序列保存为已调度任务序列。

在将第一条件和第二条件的调度后的任务序列保存为已调度任务序列后,对第一待调度任务的处理已经完成,可以执行步骤206。

s205、不存在满足第一条件和第二条件的调度后的任务序列时,放弃向已调度任务序列中增加第一待调度任务。

当未查找到满足第一条件和第二条件的调整后的任务序列保存为已调度任务序列时,则放弃向已调度任务序列中增加第一待调度任务,此时对第一待调度任务的处理已经完成,可以执行步骤206。

s206、选取新的未调度任务作为第一待调度任务,重复执行向已调度任务序列中增加第一待调度任务的处理,直至处理完全部未调度任务。

s207、将增加了第一待调度任务的任务序列保存为已调度任务序列。

进一步地,如果步骤202中判断出增加第一待调度任务未导致时间资源冲突,则可以在已调度任务序列中直接增加该第一待调度任务,并将增加了该第一待调度任务的任务序列保存为已调度任务序列。

本实施例提供的任务的资源调度方法,向已调度任务序列中增加第一待调度任务,其中,第一待调度任务的优先级要低于或者等于已调度任务中的任务的优先级,当增加第一待调度资源导致时间资源冲突时,对第一待调度任务进行第一调度操作,对已调度任务序列进行调整,以达到到调整后的任务序列不存在时间资源冲突,并且已调度任务序列中的所有任务的结束时间不会超出其规定的任务截止时间的目的。通过上述调度处理,能够维持各任务按级别序执行,尽可能地保证级别高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求前端数据的呈现。

实施例三

如图3所示,其为本发明实施例三的任务的资源调度方法的流程示意图。在上述实施例二的基础之上,所述向已调度任务序列中增加第一待调度任务之前,包括以下步骤:

s301、根据任务之间的依赖关系划分任务组。

其中,各任务组包括:检测数据状态的第一类型任务、计算数据的第二类型任务和汇总数据计算结果的第三类型任务;第二类型任务依赖第一类型任务,第三类型任务直接依赖第二类型任务,间接依赖第一类型任务。

实际应用中,同一需求的任务之间存在依赖关系,根据任务之间存在的依赖关系,对任务进行分组。一般情况下,一个任务组包括:检查数据状态的第一类型任务、计算数据的第二类型任务和汇总计算结果的第三类型任务。其中,第一类型任务用于检查数据的状态是否达到可以计算的程度,通常时检查数据的同步进度。第二类型任务用于对数据进行计算,通常耗费较长时间,第三类型任务用于对第二类型任务的计算结果进行汇总计算,以传送到前端进行数据展示。

s302、按照任务组的优先级由高到低进行排序。

在获取到各任务组后,对所有任务组进行排序。具体地,首先获取各任务组中各任务运行时长及占用资源,将每个任务运行时长与占用资源相乘,然后将每个乘积相加得到各任务组的累加值,基于各任务组的 累加值和各任务组预设的级别,获取各任务组的优先级,然后按照优先级从大到小对各任务组进行排序。任务组的优先级可以根据所对应需求的重要性进行设置。

具体地,针对每个任务组,收集设定时间段内的组内任务的历史数据,分析收集到的历史数据进行分析,获取任务组内任务的运行信息,根据任务组的运行信息获取任务组内各任务的开始时间、结束时间和运行时长。

获取任务的开始时间的过程如下:收集设定时间段内的任务开始时间的历史数据,将该时间转换为一个数字,实际应用中时间一般为unix时间,从1970年1月1日0时0分0秒到现在的累计秒数,用所有数字计算平均值和标准差,从所有历史数据中筛选出超过该平均值上下两个标准差的历史进行剔除数据后,利用剩余的历史数据重新计算平均值,再将重新得到的平均值转换为时间,以该时间作为最终的开始时间。

获取任务的运行时长的过程如下:获取任务设定时长内运行时长的历史数据,计算平均值和标准差,从所有的历史数据中筛选出超过平均值上下两个标准差的历史数据进行剔除,利用剩余的历史数据重新计算平均值,将该平均值作为任务最终的运行时长。

在获取到任务的开始时间和运行时长后,就可以得到任务的结束时间。

可选地,运行信息包括第一类型任务的开始时间、结束时间、第二类型任务和第三类型任务的运行时长。由于任务之间存在依赖关系,当获取到第一类型任务的开始时间和运行时长后,就可能获取到第二类型任务的开始时间,根据获取到的第二类型任务的运行时长,可以计算得到第二类型任务的结束时间。相应地,在获取到第二类型任务的结束时间,根据获取到的第三类型任务的运行时长,就能获取到第三类型任务的结束时间。

实际应用中,一个任务可能依赖于多个父节点任务,也可能只依赖一个父节点任务。例如,当目标任务为第二类型任务时,可能依赖于多个第一类型任务,也可能只依赖于一个第一类型任务,第一类型任务就 是目标任务的父节点任务。

当获取目标任务的开始时间时,判断第一待调度任务是否具有父节点任务,所谓父节点任务就是第一待调度任务直接依赖的上一级任务,例如当第一待调度任务为第二类型任务时,则其父节点任务就是所依赖的第一类任务。当判断出有父节点任务时,需要得到其所依赖的所有父节点任务,得到目标任务所有父节点任务的结束时间,然后将所有父节点任务最晚的结束时间作为该目标任务的开始时间,进一步地根据目标任务的历史数据获取到的运行时长就能够得到目标任务的结束时间。

本实施例中,预先为各任务组设置优先级,在排序的过程中还考虑各任务组中任务的资源占用情况以及运行时长,结合这些因素排序后,使得重要性高且任务量大的任务排在前面,而重要性低且任务量小的任务排在后面,这样重要任务能尽早地运行,从而保证重要任务的完成时间比较早。

s303、将各任务组内的任务按照任务类型进行排序。

本实施例中,对任务组进行排序后,由于组内任务之间还有依赖关系,只有当所依赖的上一级任务即父节点任务完成后,下一级任务才能执行,还需要对组内的任务进行排序,使组内任务第一类型任务排在第二类型任务之前,第二类型任务排在第三类型任务之前,这样就可以安装任务类型的顺序对任务组中的任务部署资源,从而可以达到先执行第一类型任务再执行第二类型任务最后执行第三类型任务的目的。

s304、按序从任务组中获取第一待调度任务。

在对任务组和任务组内的任务按照任务类型排序后,按序从任务组中获取第一待调度任务。例如,包括有三个任务组:任务组1、任务组2和任务组3。其中,排序后任务组2、任务组3和任务组1,排序后首先优先从任务组2中按照任务类型获取第一待调度任务、然后再是任务组3和之后再是任务组1中获取第一待调度任务。

此处需要说明,初始进行任务的资源调度时,由于未开始对待调度任务进行调度,当前已调度任务序列中未添加任务时即当前的已调度任务序列为空,首先从优先级最高的任务组中选取全部或部分任务生成已 调度任务序列,然后,按序从任务组中获取第一待调度任务进行调度处理的过程。

本实施例提供的任务的资源调度方法,在将第一待调度任务增加到已调度任务序列中之前,对任务进行分组,并且对任务组按照优先级排序,组内按照任务类型进行排序,排序后按照顺序获取第一待调度任务。本实施例中,将隶属于同一个需求的任务划分到一个组内,针对同一个任务组来说,能集中对该任务组中的同类型任务进行调度,这样该任务组中的任务可以陆续执行,而且第一待调度任务获取时按照排序获取,能够维持各任务组按照顺序执行,尽可能地保证重要性高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求前端数据的呈现。

实施例四

如图4所示,其为本发明实施例四的任务的资源调度方法的流程示意图。在上述实施例的基础上,所述放弃向已调度任务序列中增加所述第一待调度任务之后,还包括以下步骤:

s401、在处理完全部未调度任务后,选取被放弃的第一待调度任务作为第二待调度任务,执行如下第二调度操作。

其中,将第二待调度任务从已调度任务序列的尾部开始,沿着时间序列向前移动,选取满足如下第三条件的最靠前的位置作为第二待调度任务的最终位置,所述第三条件为增加了第二待调度任务后的任务序列不存在时间资源冲突。

在处理完全部待调度任务后,由于第一条件的设置,在实施例一中出现了一些第一待调度任务当时不能增加到已调度任务序列中的情况,在上述情况下,放弃第一待调度任务,但是为了保证需求的完成,则需要重新对被放弃的第一待调度任务进行如下的第二调度操作。

具体地,将被放弃的第一调度任务作为第二待调度任务,将第二待调度任务从已调度任务序列的尾部开始,沿着时间序列向前移动,选取满足如下第三条件的最靠前的位置作为第二待调度任务的最终位置。其中,第三条件为:增加了第二待调度任务后的任务序列不存在时间资源 冲突。

本实施例中,时间序列包括由已调度任务序列所包含的各任务的开始时间和结束时间构成的时间点,沿着时间序列向前移动,即将第二待调度任务从最晚的时间点开始逐次往前移动,每当移动到一个时间点上就需要判断增加了第二待调度任务后的任务序列是否满足第三条件,即增加了第二待调度任务后的任务序列是否存在时间资源冲突,如果判断出满足第三条件,则继续向前移动第二待调度任务,直到移动到的时间点处增加了第二待调度任务后的任务序列不满足第三条件为止,并且将满足第三条件的最靠前的位置作为第二待调度任务的最终位置。

在获取到该第二待调度任务的最终位置后,将该最终位置的时间点作为该第二待调度任务的开始时间。

本实施例中,将第二待调度任务沿着时间序列从后往前调整,以便于第二待调度任务尽早获取到资源,能够使得第二待调度任务的完成时间尽量接近其预设的任务截止时间,使完成时间不要晚于其截止时间太多。

为了更好地理解本实施例提供的任务的资源调度方法,下面举例进行说明:

假设需要对4个任务组进行资源部署,4个任务组分别为任务组1、任务组2、任务组3和任务组4。本示例中任务的资源调度方法的具体过程如下:

按照级别、运行时间及占用资源进行加权计算后,得到每个任务组的优先级,优先级的大小顺序为:任务组2、任务组4、任务组1、任务组3。

每个任务组包括三种类型的任务:“检查数据状态”的第一类任务,在该例子中称为a类任务、“计算数据”的第二类任务,在该例子中称为b类任务和“汇总数据计算结果”的第三类任务,在该例子中称为c类任务。三类任务存在依赖关系,b类任务依赖a类任务,c类任务直接依赖b类任务,间接依赖a类任务。

其中,任务组2中包括两个a类任务分别记为:2a1、2a2,包括两个 b类任务分别记为:2b1、2b2,其中,2b1、依赖于2a1,2b2依赖于2a2,包括一个c类任务分别记为:2c。

任务组4中包括三个a类任务分别记为:4a1、4a2,4a3,包括两个b类任务分别记为:4b1、4b2,其中,4b1、依赖于4a1,4b2依赖于4a2,4a3,包括一个c类任务分别记为:4c。

任务组1中包括一个a类任务记为:1a1,包括两个b类任务分别记为:1b1、1b2,其中,1b1和1b2均依赖于1a1,包括一个c类任务分别记为:1c。

任务组3中包括一个a类任务记为:3a1,包括一个b类任务记为:3b1,其中,3b1依赖于3a1,包括一个c类任务分别记为:3c。

此处以b类任务为例进行说明:

图5中横轴为时间轴,纵轴为资源轴,其中与横轴平行的一条加粗黑线表示预设的资源上限。图5中边框内填充网格用于表示a类任务,边框内填充正斜杠用于表示b类任务,边框内填充反斜杠表示c类任务。与纵轴平行的标有2字的加粗竖线表示任务组2的任务截止时间,与纵轴平行的虚竖线为时间点,时间点由已调度任务序列中每个任务的开始时间和结束时间构成。

当对任务组2进行调度处理时,由于资源充足只需按照任务的开始时间将任务组2中部分或者全部b类任务分别放置到对应的位置,构成已调度任务序列。其中,任务组2中每个b类任务的开始时间以其依赖的所有父节点即a类任务中的最晚的结束时间作为其开始时间,在任务组2中,2b1依赖于2a1,2b2依赖于2a2。2b1的开始时间为2a1的结束时间,2b2的开始时间为2a2的结束时间。已调度任务序列的结果如图5所示。

图6a~图6d中横坐标为时间轴,纵坐标为资源轴,其中与横轴平行的一条加粗黑线表示预设的资源上限。边框内填充网格用于表示a类任务,边框内填充正斜杠用于表示b类任务,边框内填充反斜杠表示c类任务。与纵轴平行的标有2字的加粗竖线表示任务组2的任务截止时间,与纵轴平行的标有4字的加粗竖线表示任务组4的任务截止时间。与纵 轴平行的虚竖线为时间点,时间点由已调度任务序列中每个任务的开始时间和结束时间构成。

当对任务组4进行调度处理时,如果任务组4中的任务中与任务组2中b类型的任务在时间序列上的不存在时间资源冲突,则将任务组4放置到对应的位置上,此时将增加了任务组4中b类型任务后的任务序列保存为已调度任务序列,如图6a所示。其中,4b1依赖于4a1,4b1的开始时间为4a1的结束时间。4b2依赖于4a2,4a3,4b2将以4a2和4a3中最晚的结束时间一个作为其开始时间。在图6a中可以看出,4a3的结束时间最晚,4b2将4a3的结束时间作为其开始时间。

将任务组4中的b类任务按照结束时间进行排序,在计算优先级的过程中,可以获取到每个任务的运行时长,根据开始时间和运行时长能够推算出结束时间。按照顺序依次对b类任务进行调度处理。按照结束时间排序后的顺序为:4b1、4b2。首先判断4b1与任务组2中的2b1和2b2是否存在时间资源冲突,其中,时间序列上重叠的判断条件:任务组4中4b1的开始时间≤任务组2中2b1或2b2任务的结束时间且任务组2中2b1或2b2的开始时间≤任务组4中4b1的结束时间。而且当将4b1添加到已调度任务序列中后,时间序列上重叠的部分所占用的资源总和大于资源上限,即4b1与2b1和2b2时间序列上存在时间资源冲突,时间资源冲突情况如图6b所示。

从图6b中可以得看出,当任务组4中4b1进入已调度任务序列中排队后,4b1所占用资源与任务组2中2b1和2b2在时间序列上出现冲突的部分所占用的资源总和超过资源上限,此时,需要尝试将任务组2中重叠一个b类任务进行延时,按照b类任务结束时间从晚到早的顺序依次延时任务组2中的重叠的b类任务,从图6b中可以得知2b2的结束时间要晚与2b1,首先将2b2按照时间序列向后移动,以为4b1释放一定的资源。在对2b2进行移动的过程中,按照时间点进行延时,即按照图中虚线进行延时,当2b2延时2b1的结束时间时,4b1所占用资源与任务组2中2b1和2b2在时间序列上出现冲突的部分所占用的资源总和未超过资源上限,如图6c所示。

在延时的后,需要判断任务组2中2b1的结束时间是否超出任务组2规定的任务截止时间,如果未超出就可以将4b1添加到任务序列中,将该增加了4b1的任务序列保存为已调度任务序列。

进一步地,继续对任务组4中4b2按照上述的步骤进行调度处理,首先分别判断4b2与任务组2中的2b1和2b2以及4b1是否存在时间序列上的重叠,其中,时间序列上重叠的判断条件不再赘述。当判断出4b1与前面已排队的b类任务存在时间序列的重叠,将4b2向已调度任务序列中增加后,判断时间序列上重叠的部分所占用的资源总和未超过资源上限,则将4b2添加到任务序列中,并将增加了4b2的任务序列保存为已调度任务序列,如图6d所示。

图7a~图7d中横坐标为时间轴,纵坐标为资源轴,其中与横轴平行的一条加粗黑线表示预设的资源上限。边框内填充网格用于表示a类任务,边框内填充正斜杠用于表示b类任务,边框内填充反斜杠表示c类任务。与纵轴平行的标有2字的加粗竖线表示任务组2的截止时间,与纵轴平行的标有4字的加粗竖线表示任务组4的截止时间,与纵轴平行的标有1字的加粗竖线表示任务组1的截止时间。与纵轴平行的虚竖线为时间点,时间点由每个任务的开始时间和结束时间构成。此处需要说明,图7a~图7d是在图6d的基础上进行调度处理。

当任务组1进行调度处理时,如果任务组1中的任务中1b1和1b2与与已调度任务序列中b类任务在时间序列上的不存在冲突,则将任务组1中的任务添加到已调度任务序列中,如图7a所示。其中,1b1和1b2均依赖于1a1,1b1和1b2的开始时间为1a1的结束时间。

如果任务组1中1b1和1b2与已调度任务序列中的b类任务在时间序列上的存在时间资源冲突,则需要进行调度处理。任务组1中1b1和1b2的开始时间相同,则可以选取1b1进入已调度任务序列中排队,该1b1与任务组4中的4b2存在时间资源冲突,如图7b所示。

从图7b中可以看出,1b1与中4b2在时间重叠的部分所占用的资源总和超过资源上限,此时需要尝试将任务组4中的4b2沿着时间序列向后移动,以为1b1释放一定的资源。在对4b2进行向后的过程中,按照每个时 间点进行延时,即按照虚线进行延时,当4b2延时2c的结束时间时,1b1所占用资源与4b2在时间序列上出现重叠的部分所占用的资源总和未超过资源上限,但是,由于4b2的结束时间相应延时,导致与4b2的结束时间超出了任务组4的规定b类任务的任务截止时间,即超出了标有4字的加粗竖线,如图7c所示。此时,任务组1中的1b1不能添加到已调度任务序列中进行排队,此时放弃将1b1添加到已调度任务序列中。

进一步地,继续对任务组1中1b2按照上述的步骤进行资源部署,由于任务组1中1b1和1b2的开始时间相同,则1b2与任务组4中的4b2也存在时间序列上的重叠,但是由于1b2与4b2在时间序列上重叠的部分所占用的资源总和未超过资源上限,如图7d所示,可以将1b2添加到已调度任务序列中进行排队。由于1b1未放置到已调度任务序列中,所有与其有依赖关系的1c的也不能进行排队。

图8a~图8d中横坐标为时间轴,纵坐标为资源轴,其中与横轴平行的一条加粗黑线表示预设的资源上限。边框内填充网格用于表示a类任务,边框内填充正斜杠用于表示b类任务,边框内填充反斜杠表示c类任务。与纵轴平行的标有2字的加粗竖线表示任务组2的截止时间,与纵轴平行的标有4字的加粗竖线表示任务组4的任务截止时间,与纵轴平行的标有1字的加粗竖线表示任务组1的任务截止时间,与纵轴平行的标有3字的加粗竖线表示任务组3的任务截止时间。时间点由每个任务的开始时间和结束时间构成。此处需要说明,图8a~图8d是在图7d的基础上进行调度处理。

当对任务组3进行调度处理时,如果任务组3中的任务中与已调度任务序列中相同类型的任务在时间序列上的不存在重叠,则将任务组3放置到已调度任务序列中排队就可以,如图8a所示。其中,3b1、依赖于3a1,3b1的开始时间为3a1的结束时间。

如果任务组3中3b1与已调度任务序列中的b类任务在时间序列上存在冲突,则需要进行调度处理。任务组3中3b1的开始时间为3a1的结束时间,3b1与任务组4中的4b2以及任务组1中的1b1均存在时间资源冲突,如图8b所示。

从图8b中可以看出,3b1占用资源与4b2以及1b2在时间序列上出现冲突的部分所占用的资源总和超过资源上限。将出现冲突的4b2和1b2按照结束时间从晚到早进行排序,首先将1b2沿着时间序列向后移动,以为3b1释放一定的资源。在对1b2向后移动的过程中,按照时间点进行移动,即按照虚线进行移动,当1b2移动4b2的结束时间时,1b2的结束时间超出任务组1的截止时间,而且此时3b1所占用资源与1b2在时间序列上重叠的部分所占用的资源总和仍然超过资源上限,如图8c所示。

此时需要尝试对4b2沿着时间序列向后移动,以为3b1释放一定资源。在对4b2进行移动的过程中,按照时间点进行向后移动,即按照虚线向后移动,当4b2移动到1b2的结束时间时,此时3b1所占用资源与4b2以及1b2在时间序列上重叠的部分所占用的资源总和未超过资源上限,如图8d所示。从图中可以得知,此时4b2的结束时间超出任务组4的任务截止时间,因此,不能将3b1添加到已调度任务序列中进行排队,放弃对3b1的调度。

在完成对所有任务组中任务的资源调度后,仍有任务组1中的1b1和任务组3中的3b1未能进行资源部署。此时,1b1和和3b1为第二待调度任务进行资源调度。此处需要说明,第二待调度任务的资源调度是在图7d的结果下进行的。

图9a~图9b中横坐标为时间轴,纵坐标为资源轴,其中与横轴平行的一条加粗黑线表示预设的资源上限。边框内填充网格用于表示a类任务,边框内填充正斜杠用于表示b类任务,边框内填充反斜杠表示c类任务。与纵轴平行的标有2字的加粗竖线表示任务组2的任务截止时间,与纵轴平行的标有4字的加粗竖线表示任务组4的任务截止时间,与纵轴平行的标有1字的加粗竖线表示任务组1的任务截止时间,与纵轴平行的标有3字的加粗竖线表示任务组3的任务截止时间。时间点由每个任务的开始时间和结束时间构成。

将任务组1中的1b1沿着时间序列从最后一个时间点开始尝试向已调度任务序列中进行添加,当1b1放置到4c的结束时间的虚线处未超出资源上限,则将1b1继续往前移动,当移动到1b2结束时间的虚线处时,未 超出资源上限,则可以继续往前移动,当移动到4b2的结束时间的虚线处时,超出资源上限,则该1b1最早的开始时间为1b2的结束时间,相应地,延时1c的结束时间,由于延时后1c的结束时间超出截止时间,并需要调整该任务组1的截止时间,将1c的结束时间作为任务组1的最终截止时间,如图9a所示。

进一步地,在图9a的基础上,将任务组3中的3b1沿着时间序列从最后一个时间点开始尝试向已调度任务序列中添加,当3b1放置到1c的结束时间的虚线处未超出资源上限,则将3b1继续往前移动,当移动到1b2的结束时间的虚线处时,未超出资源上限,则可以继续往前移动,当移动到4c的结束时间的虚线处时,超出资源上限,则该3b2最早的开始时间为1b2的结束时间,相应地,延时3c的结束时间,由于延时后3c的结束时间超出截止时间,需要将任务组3的最终截止时间调整为3c的结束时间,如图9b所示。

在该示例中,在对第一待调度任务进行资源调度未成功时,放弃对第一待调度任务的调度,并等待所有待调度的同类型任务完成调度后,再沿着时间序列从后往前尝试对被放弃的第一待调度任务进行资源调度,以便于所在任务组的完成时间尽量接近其预设的截止时间,尽可能使完成时间不要晚于其截止时间太多。

实施例五

如图10所示,其为本发明实施例五的任务的资源调度装置的结构示意图。该任务的资源调度装置包括:确定模块11和调度模块12。

确定模块11,用于确定多个任务的优先级、规定的任务截止时间,以及预设的资源上限。

本实施例中,每个任务对应的一个优先级,不同的任务可以具有相同的优先级。不同的任务可以属于同一个需求,不同需求之间的任务的优先级可以不同,而隶属于同一需求的所有任务的优先级相同。进一步地,为每个需求设置一个任务截止时间,该需求所包括的任务要在该任务截止时间内完成。

为了保证执行任务的机器集群能够高效的允许,需要为执行任务的 机器集群设置一个资源上限,在该资源上限内机器集群的允许效率较高,当超过该资源上限时,执行任务的过程中可能会出现异常。

调度模块12,用于根据任务优先级对执行多个任务的先后顺序进行调度,并使调度后的任务满足第一条件。

其中,第一条件为任务不存在时间资源冲突,所述时间资源冲突为一个以上任务在时间序列上存在重叠的部分,并且所述重叠的部分的所占用的资源总和大于资源上限。时间资源冲突具体为一个以上相同类型的任务在时间序列上存在重叠的部分,并且所述重叠的部分的所占用的资源总和大于资源上限。

进一步地,调度后的任务还满足第二条件:所有任务的结束时间不会超出其规定的任务截止时间。也就是说,调度后的所有任务需要在规定的任务截止时间内完成。

调度模块12,还用于如果存在无法满足所述第一条件和所述第二条件的任务,则将该任务放置到对其他任务完成调度后再进行处理。

调度模块12,用于根据任务的优先级和任务的依赖关系对执行多个任务的先后顺序进行调度。

为了保证重要的任务尽可能先执行,调度模块12需要按照确定的任务的优先级对多个任务进行排序,具体地,所述多个任务中存着类型不同的任务,不同类型的任务之间可能存在依赖关系,一般情况下,同一需求的不同类型的任务之间存在依赖关系,根据任务的优先级和任务的依赖关系对执行多个任务的先后顺序进行调度。本实施例中,对于不同需求的任务按照优先级的顺序进行调度,而同一需求的任务需要按照任务之间的依赖关系进行调度。

进一步地,如果存在无法满足第一条件和第二条件的任务,则将该任务放置到对其他任务完成调度后再进行处理。

本实施例中执行多个任务时,不再采用现有先进先出的原则,而是根据任务的优先级来调度,通过上述调度处理,能够维持各任务按级别顺次执行,尽可能地保证级别高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求前端数据的呈现。

实施例五

如图10所示,其为本发明实施例五的任务的资源调度装置的结构示意图。该任务的资源调度装置包括:确定模块11和调度模块12。

本实施例中,将调度后的任务构成已调度任务序列。

调度模块12一种可选地的结构方式,包括:

任务增加单元112、调度执行单元122、序列生成单元123和选取单元124。

其中,任务增加单元121,用于向已调度任务序列中增加第一待调度任务,所述已调度任务序列中的任务的优先级高于或等于所述第一待调度任务的优先级,所述已调度任务序列满足所述第一条件。

调度执行单元122,用于如果增加所述第一待调度任务导致所述时间资源冲突,则执行如下第一调度操作:

沿着时间序列向后调整与所述第一待调度任务发生时间资源冲突的一个或多个第一重叠任务,或者,沿着时间序列向后调整一个或多个所述第一重叠任务以及在之后的时间序列上与所述第一待调度任务同类型的全部或部分任务,以生成满足第一条件和第二条件的调整后的任务序列:

其中,所述第二条件为:所有任务的结束时间不会超出其规定的任务截止时间。

序列生成单元123,用于如果存在满足所述第一条件和所述第二条件的调度后的任务序列,则保存为已调度任务序列,如果不存在,则放弃向已调度任务序列中增加所述第一待调度任务。

选取单元124,用于选取新的未调度任务作为第一待调度任务,重复执行向已调度任务序列中增加第一待调度任务的处理,直至处理完全部未调度任务。

进一步地,序列生成单元123,还用于如果增加所述第一待调度任务未导致所述时间资源冲突,则将增加了所述第一待调度任务的任务序列保存为已调度任务序列。

进一步地,选取单元124,还用于在处理完全部未调度任务后,选取 被放弃的第一待调度任务作为第二待调度任务,执行如下第二调度操作:

将所述第二待调度任务从所述已调度任务序列的尾部开始,沿着所述时间序列向前移动,选取满足如下第三条件的最靠前的位置作为所述第二待调度任务的最终位置,所述第三条件为增加了所述第二待调度任务后的任务序列不存在时间资源冲突。

进一步地,在沿着时间序列向后调整一个或多个所述第一重叠任务以及在之后的时间序列上与第一待调度任务同类型的全部或部分任务的操作中,保持已调度任务序列中同类型任务的先后顺序。

进一步地,调度执行单元122,具体用于将一个或多个,第一重叠任务作为目标任务沿着所述时间序列向后移动直至与目标任务发生的时间资源冲突消失后停止,如果移动后的目标任务的结束时间未超出其规定的任务截止时间,则进一步判断是否存在与移动后目标任务发生时间资源冲突的第二重叠任务,如果存在,则将一个或多个所述第二重叠任务作为新的目标任务重复执行上述将所述目标任务沿着所述时间序列向后移动的操作,如果不存在,则将当前任务序列作为保存为已调度任务序列,如果移动后的所述目标任务的结束时间超出其规定的任务截止时间,则判定为不存在满足所述第一条件的调度后的任务序列,执行放弃向已调度任务序列中增加第一待调度任务的处理。

进一步地,时间序列包括由已调度任务序列所包含的各任务的开始时间和结束时间构成的时间点,沿着时间序列调整任务具体为沿着时间序列的时间点调整任务。

本实施例提供的任务的资源调度装置,向已调度任务序列中增加第一待调度任务,其中,第一待调度任务的优先级要低于或者等于已调度任务中的任务的优先级,当增加第一待调度资源导致时间资源冲突时,对第一待调度任务进行第一调度操作,对已调度任务序列进行调整,以达到到调整后的任务序列不存在时间资源冲突,并且已调度任务序列中的所有任务的结束时间不会超出其规定的任务截止时间的目的。通过上述调度处理,能够维持各任务按优先级序执行,尽可能地保证优先级高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求 前端数据的呈现。

实施例六

如图11所示,其为本发明实施例六的任务的资源调度装置的结构示意图。该任务的资源调度装置包括:确定模块11和调度模块12。调度模块12除了包括上述实施例四中的任务增加单元121、调度执行单元122、序列生成单元123和选取单元124之外,还包括:划分单元125、排序单元126和获取单元127。

其中,划分单元125,用于根据任务之间的依赖关系划分任务组;其中,各任务组包括:检测数据状态的第一类型任务、计算数据的第二类型任务和汇总数据计算结果的第三类型任务;第二类型任务依赖第一类型任务,第三类型任务直接依赖第二类型任务,间接依赖第一类型任务。

排序单元126,用于按照任务组的优先级由高到低进行排序,以及将各任务组内的任务按照任务类型进行排序。

选取单元124,用于按序从任务组中获取所述第一待调度任务,或者选取优先级最高的任务组中的全部或部分任务生成所述已调度任务序列,然后,按序从任务组中获取所述第一待调度任务。

进一步地,获取单元127,用于获取各任务组预设的截止时间,以及根据所述预设的截止时间获取到每个类型任务对应的任务截止时间。

进一步地,排序单元126,具体用于获取任务组中的各任务的运行时长,针对每个任务组,将组内任务对应的所述运行时长和预设的占用资源量相乘后累加得到任务组的累加值,基于各任务组的累加值和预先为各任务组设置的优先级,得到各任务组的优先级,对各任务组根据获取的优先级由高到低进行排序。

进一步地,排序单元126,还具体用于针对每个任务组,收集设定时间段内的组内任务的历史数据,对历史数据进行分析,获取任务组的运行信息,根据所述任务组的运行信息获取任务组内各任务的运行时长。

进一步地,获取单元127,还用于判断第一待调度任务是否存在父节点任务,如果存在所述父节点任务时,根据第一待调度任务与所在任务组中其他任务之间的依赖关系,获取第一待调度任务的所有父节点任务, 将所有父节点任务最晚的结束时间作为第一待调度任务的开始时间。

本实施例提供的任务的资源调度装置,在将第一待调度任务增加到已调度任务序列中之前,对任务进行分组,并且对任务组按照优先级排序,组内按照任务类型进行排序,排序后按照顺序获取第一待调度任务。本实施例中,将隶属于同一个需求的任务划分到一个组内,针对同一个任务组来说,能集中对该任务组中的同类型任务进行调度,这样该任务组中的任务可以陆续执行,而且第一待调度任务获取时按照排序获取,能够维持各任务组按照顺序执行,尽可能地保证重要性高的需求对应的任务优先获取资源,从而能够优先被执行,有利于该需求前端数据的呈现。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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