本申请涉及云计算技术领域,尤其涉及一种任务调度方法、装置、计算机设备及存储介质。
背景技术:
一些业务每天都有很多dag(有向无环图)调度任务,比如调度平台,如linkdo平台,每天任务调度次数达到万级,因此,优化调度算法以节省计算资源和提高应用时效意义重大。
调度平台的调度规则是到达设定的调度时间且依赖的所有上游任务都全部完成,任务才能开始执行。对于一个任务a,假设它的完成时间为ae,它的所有下游任务开始执行时间分别是b1,b2,b3……bn,那么最早执行的下游任务b的开始时间为bs=min(b1,b2,b3……bn)。当ae<bs时,在bs-ae这段时间将空闲。这种一段时间内运行的任务特别多一段时间内运行的任务特别少的情况,降低了系统的资源利用率。
技术实现要素:
本申请实施例提供了一种任务调度方法、装置、计算机设备及存储介质,可以合理安排任务调度时间,提升系统的资源利用率。
第一方面,本申请实施例提供了一种任务调度方法,包括:
根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务;
根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;
对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
可选的,所述根据任务运行日志确定待调整的目标任务以添加至目标任务队列,包括:
根据任务运行日志确定第一任务所在的运行时段以及所述第一任务关联的第二任务所在的运行时段,所述任务运行日志包括多个任务中每个任务的运行信息,所述运行信息包括所述任务所在的运行时段;
根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件;
在所述第一任务满足第二任务调整条件时,将所述第一任务确定为待调整的目标任务以添加至目标任务队列。
可选的,所述根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,包括:
在第二任务为上游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最晚运行的第二任务;
计算所述第一任务的任务开始时间与所述最晚运行的第二任务的任务结束时间之间的第一差值;
当所述第一差值大于或等于第一预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第一任务队列。
可选的,所述根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,包括:
在第二任务为下游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最早运行的第二任务;
计算所述最早运行的第二任务的任务开始时间与所述第一任务的任务结束时间之间的第二差值;
当所述第二差值大于或等于第二预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第二任务队列。
可选的,所述根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,包括:
确定所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值;
确定所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值;
根据所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值,从所述目标任务队列中确定出不满足第一任务调整条件的任务。
可选的,所述方法还包括:
从第一任务队列中确定出指定任务,并从第二任务队列中确定出所述指定任务的关联任务,所述指定任务指在第二任务队列中存在关联任务的任一任务;
在所述指定任务拟更新至的运行时段与所述关联任务拟更新至的运行时段冲突时,计算所述指定任务拟更新至的运行时段的第一资源争抢程度较指定任务所在的运行时段的第二资源争抢程度的第一下降比例,以及关联任务拟更新至的运行时段的第三资源争抢程度较关联任务所在的运行时段的第四资源争抢程度的第二下降比例;
当所述第一下降比例小于所述第二下降比例时,从所述第一任务队列移出所述指定任务;
当所述第一下降比例大于或等于第二下降比例时,从所述第二任务队列移出所述关联任务。
可选的,所述方法还包括:
确定所述第三任务队列中的第三任务拟更新至的运行时段的资源争抢程度值,第三任务为第三任务队列包括的任一任务;
当所述第三任务拟更新至的运行时段的资源争抢程度值大于或等于所述第三任务所在的运行时段的资源争抢程度值时,从所述第三任务队列移出所述第三任务,按照所述第三任务所在的运行时段调度所述第三任务。
第二方面,本申请实施例提供了一种任务调度装置,包括:
添加处理模块,用于根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务;
移出处理模块,用于根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;
调度模块,用于对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
第三方面,本申请实施例提供了一种计算机设备,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的方法。
综上所述,计算机设备可以根据任务运行日志确定待调整的目标任务,将目标任务添加至目标任务队列,并确定目标任务拟更新至的运行时段,目标任务队列为第一任务队列或第二任务队列;计算机设备根据目标任务队列中各个任务拟更新至的运行时段,从目标任务队列中确定出不满足第一任务调整条件的任务,并将不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;计算机设备对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从第三任务队列移出的任务,按照未从第三任务队列移出的任务拟更新至的运行时段,调度未从第三任务队列移出的任务,相较于现有技术一段时间内运行的任务特别多一段时间内运行的任务特别少的情况,本申请实施例能够合理安排任务调度时间,提升系统的资源利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种任务调度过程示意图;
图2是本申请实施例提供的另一种任务调度过程示意图;
图3是本申请实施例提供的一种任务调度方法的流程示意图;
图4是本申请实施例提供的另一种任务调度方法的流程示意图;
图5是本申请实施例提供的一种任务调度装置的结构示意图;
图6是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例的时间上的小于表示早于,本申请实施例的时间上的大于表示晚于。
本申请实施例所指资源争抢程度值可用于衡量对应运行时段的任务并行情况,即任务并行度,也可以说是单位时间内的运行任务数。
下面结合图1和图2对资源争抢程度的确定方式进行简要阐述。
图1所示的任务有a1、a2、a3…am,还有b1、b2、b3…bn。b1依赖a1和a。b1的调度时间为t4.2。b2依赖a2和a。b2的调度时间为t4.5。b3依赖a2、a和a3。b3的调度时间为t4.3。bn依赖am和a。bn的调度时间为t4.6。调度时间即为本申请实施例所指的任务开始时间。a1的运行区间为[t1.5,t2.8)。a2的运行区间为[t2.4,t3.5)。a3的运行区间为[t1.1,t2.4)。am的运行区间为[t2.4,t3.6)。a的运行区间为[t2,t3.3)。运行区间即为本申请实施例所指的运行时段。
由图1可以看出,依赖a的所有下游任务(b,b1,b2,b3…bn)中,最早开始调度的是任务b。b的调度时间是t4,由于b未到调度时间,所以未开始执行。b2则由于a完毕时依赖的a2还未完成,即使到了b2的调度时间也不能开始执行,会一直处于等待状态。进一步地,参见图2,以a为例,即使[t2,t3.3)很繁忙,[t3.3,t4)空闲,a也还是在t2开始调度,这就意味着a的运行时间会落在并发高峰。
例如,对于任务x,其所在的运行时段的资源争抢程度值的计算公式如下:
其中,c表示资源争抢程度值,tm表示任务x与任务m之间运行时段重合或冲突部分的时长。tm可以通过如下公式得到:
其中,e表示任务m的任务结束时间,s表示任务m的任务开始时间。
举例来说,在任务x为a时,针对任务a,可以计算得到a所在的运行时段的时长t=t3.3-t2=3.3-2.0=1.3(时间单位)。其中,t表示通用参考系下的时间点,如t2时刻到t3.3时刻相差1.3个时间单位。
在任务1为a1…任务m为am时,针对a1-am,可以计算得到t1-tm,过程如下。同样,以下t1=0.8,t2=0.9,t3=0.4……tm=0.9均为时间单位,该时间单位既可以是年、月、日也可以是时、分、秒。
t1=min(t3.3,t2.8)-max(t2,t1.5)=2.8-2.0=0.8(时间单位);
t2=min(t3.3,t3.5)-max(t2,t2.4)=3.3-2.4=0.9(时间单位);
t3=min(t3.3,t2.4)-max(t2,t1.1)=2.4-2.0=0.4(时间单位);
tm=min(t3.3,t3.6)-max(t2,t2.4)=3.3-2.4=0.9(时间单位)。
需要说明的是,本申请实施例还可以计算出各下游任务与任务a重叠部分时长为0。因此本申请实施例将t和t1-tm代入前述公式,可计算得到c=(t1 t2 t3 …tm)/t=(0.8 0.9 0.4 …0.9)/1.3≈2.31,即平均有2.31个任务与任务a争抢资源。
假设xs=8:42,xe=10:00。若a1运行在[8:12,9:30),则落在ax运行时段[8:42,10:00]内的时间范围是[8:42,9:30],共0.8h时长;若a2运行在[9:06,10:12),则落在ax运行时段内的时间范围是[9:06,10:00),共0.9h时长;若a3运行在[7:48,9:06),则落在ax运行时段内的时间范围是[8:42,9:06),共0.4h时长;若am运行在[9:06,10:18),则落在ax运行时段内的时间范围是[9:06,10:00),共0.9h时长。本申请实施例可以计算出t1 t2 t3 …tm=0.8 0.9 0.4… 0.9=3,这里的3即为所有任务与ax并行运行的总时长,可以理解为在ax运行时段[8:42,9:30]内平均每小时3/1.3≈2.31个任务与其争抢资源。
请参阅图3,为本申请实施例提供的一种任务调度方法的流程示意图。具体地,该方法可以应用于服务器等计算机设备中。该方法可以包括以下步骤:
s301、根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务。
其中,待调整的目标任务可以为待提前的目标任务或待延后的目标任务。目标任务可以为多个任务中的任一任务。目标任务队列可以为第一任务队列(如提前postpone队列)或为第二任务队列(如延后ahead队列)。任务运行日志记录了多个任务中每个任务的运行信息,如每个任务所在的运行时段。本申请实施例提及的运行时段包括任务开始时间和任务结束时间。
在一个实施例中,计算机设备根据任务运行日志确定待调整的目标任务以添加至目标任务队列的过程具体为:计算机设备根据任务运行日志确定第一任务所在的运行时段以及该第一任务关联的第二任务所在的运行时段,该任务运行日志包括多个任务中每个任务的运行信息,该运行信息包括该任务所在的运行时段;计算机设备根据该第一任务所在的运行时段以及该第二任务所在的运行时段,判断该第一任务是否满足第二任务调整条件,并在该第一任务满足第二任务调整条件时,将该第一任务确定为待调整的目标任务以添加至目标任务队列。其中,第一任务为多个任务中的任一任务,第二任务为上游任务或下游任务。例如,第一任务所在的运行时段可以为第一任务所在的预设运行时段(为第一任务对应设置的运行时段)。第二任务所在的运行时段可以为第二任务所在的预设运行时段(为第二任务对应设置的运行时段)。或,第一任务所在的运行时段可以为第一任务在历史每次运行时所在的运行时段,如为第一任务在最近7次运行每次运行时所在的运行时段。第二任务所在的运行时段可以指第二任务历史每次运行所在的运行时段,如为第二任务在最近7次每次运行时所在的运行时段。预设的运行时段可能会与实际的运行时段存在差异。
在一个实施例中,计算机设备根据该第一任务所在的运行时段以及该第二任务所在的运行时段,判断该第一任务是否满足第二任务调整条件的方式可以为:计算机设备在第二任务为上游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最晚运行的第二任务;计算机设备计算该第一任务的任务开始时间与该最晚运行的第二任务的任务结束时间之间的第一差值,并当该第一差值大于或等于第一预设值时,确定该第一任务满足第二任务调整条件;其中,该目标任务队列为第一任务队列。在一个实施例中,计算机设备可以在确定该第一任务满足第二任务调整条件后,可以将第一任务确定为待调整的目标任务,此处为待提前的目标任务。在一个实施例中,计算机设备可以在确定第一任务为待提前的目标任务后,将第一任务的任务开始时间提前至大于最晚运行的第二任务的任务结束时间(可为该最晚运行的第二任务的预设任务结束时间、最近一次运行时的任务结束时间,或(在历史运行时的最晚任务结束时间)的某个任务结束时间。
在一个实施例中,在第一任务所在的运行时段为第一任务历史每次运行时所在的运行时段,且第二任务所在的运行时段为第二任务在历史每次运行时所在的运行时段的情况下,计算机设备计算第一任务的任务开始时间与最晚运行的第二任务的任务结束时间之间的差值的过程可以为:计算机设备根据历史每次运行第一任务所在的运行时段以及历史每次运行最晚运行的第二任务所在的运行时段,计算第一任务的各任务开始时间与最晚运行的第二任务的各任务结束时间之间的第一差值。例如,计算机设备根据最近7次每次运行第一任务所在的运行时段以及最近7次每次运行最晚运行的第二任务所在的运行时段,计算第一任务的各任务开始时间与最晚运行的第二任务的各任务结束时间之间的第一差值,这样就可以得到7个第一差值,并在确定每个第一差值都大于第一预设值时,确定第一任务为待提前的目标任务。
在一个实施例中,计算机设备根据该第一任务所在的运行时段以及该第二任务所在的运行时段,判断该第一任务是否满足第二任务调整条件的方式可以如下:计算机设备在第二任务为下游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最早运行的第二任务;计算机设备计算该最早运行的第二任务的任务开始时间与该第一任务的任务结束时间之间的第二差值,并当该第二差值大于或等于第二预设值时,确定该第一任务满足第二任务调整条件;其中,该目标任务队列为第二任务队列。在一个实施例中,计算机设备可以在确定该第一任务满足第二任务调整条件后,可以将第一任务确定为待调整的目标任务,此处为待延后的目标任务。在一个实施例中,计算机设备可以在确定第一任务为待延后的目标任务后,将第一任务的任务结束时间延后至小于或等于最早运行的第二任务的任务开始时间(可为该最早运行的第二任务的预设任务开始时间、最近一次运行时的任务开始时间,或在历史运行时的最早任务开始时间)的某个任务开始时间。
在一个实施例中,在第一任务所在的运行时段为第一任务历史每次运行时所在的运行时段,且第二任务所在的运行时段为第二任务在历史每次运行时所在的运行时段的情况下,计算机设备计算最早运行的第二任务的任务开始时间与第一任务的任务结束时间之间的第二差值的过程可以为:计算机设备根据历史每次运行时第一任务所在的运行时段以及历史每次运行最早运行的第二任务所在的运行时段,计算最早运行的第二任务的各任务开始时间与第一任务的各任务结束时间之间的第二差值。例如,计算机设备根据最近7次每次运行时第一任务所在的运行时段以及最近7次每次运行最早运行的第二任务所在的运行时段,计算最早运行的第二任务的各任务开始时间与第一任务的各任务结束时间之间的第二差值,这样就可以得到7个第二差值,并在确定每个第二差值都大于第二预设值时,确定第一任务为待延后的目标任务。
在一个实施例中,为了避免因推迟上游任务影响到下游任务的任务开始时间,必须保证上游任务推迟执行后,它的任务结束时间必须比下游任务原来的任务开始时间早,所以为了安全起见,上游任务推迟执行后的任务结束时间不能比下游任务最近几次最早的任务开始时间还晚。例如,任务a关联的最早执行的下游任务为任务b。任务b最近7次的任务开始时间分别是7:30,7:10,7:15,7:35,7:42,7:20,7:05,任务a推迟执行后的任务结束时间要保证小于或等于min(7:30,7:10,7:15,7:35,7:42:7:20:7:05),也就是小于或等于7:05,这样才能不降低任务b的时效。
在一个应用场景中,假如任务a的任务开始时间为8:42,任务结束时间为10:00。任务a关联的最早执行的下游任务为任务b。任务b关联的最晚执行的上游任务为任务a。任务b的任务开始时间为11:00、任务结束时间为12:00。计算机设备可以计算任务b的任务开始时间与任务a的任务结束时间之间的差值,这里计算出的第二差值为10:00到11:00这段时间。在确定这个差值大于第二预设值时,可以确定任务a满足第二任务调整条件,进而确定任务a为待延后的目标任务。同理,在确定这个差值大于第一预设值时,可以确定任务b满足第二任务调整条件,进而确定任务b为待提前的目标任务。本申请实施例可将任务a放入第二任务队列用于后续分析推迟执行前后的并行度下降情况,或,将任务b放入第一任务队列用于后续分析提前执行前后的并行度下降情况。在得到差值后,最多可将任务a的任务结束时间推迟到11:00,最多将任务b的任务开始时间提前到10:00。
s302、根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列。
本申请实施例中,计算机设备根据该目标任务队列中各个任务拟更新至的运行时段,从该目标任务队列中确定出不满足第一任务调整条件的任务的方式可以如下:计算机设备确定该目标任务队列中各个任务所在的运行时段的资源争抢程度值,以及该目标任务队列中各个任务拟更新至的运行时段的资源争抢程度值;计算机设备根据该目标任务队列中各个任务所在的运行时段的资源争抢程度值,以及该目标任务队列中各个任务拟更新至的运行时段的资源争抢程度值,从该目标任务队列中确定出不满足第一任务调整条件的任务。计算机设备可以为在确定目标任务队列中某个任务所在的运行时段的资源争抢程度值小于或等于该任务拟更新至的运行时段的资源争抢程度值时,将该任务确定为不满足第一任务调整条件的任务。
s303、对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
本申请实施例中,计算机设备可以确定该第三任务队列中的第三任务拟更新至的运行时段的资源争抢程度值,第三任务为第三任务队列包括的任一任务;计算机设备当该第三任务拟更新至的运行时段的资源争抢程度值大于或等于该第三任务所在的运行时段的资源争抢程度值时,从该第三任务队列移出该第三任务,按照该第三任务所在的运行时段调度该第三任务。
例如,第三任务队列q中的任务t原来在[8:30,9:30]时段运行,拟调整到[8:45,9:45]执行后,由于其它任务可能也会调整到[8:45,9:45]时段执行,所以任务t调到[8:45,9:45]时段调度后,资源争抢变得更加激烈时,应该将任务t从q中移除,这时任务t不调整调度时间,还在原来的[8:30,9:30]时段执行。整个方案流程结束后,还能留在第三任务队列中的任务,也就是说未从第三任务队列移出的任务就是最终应该更新调度时间的任务。
此外,本申请实施例对于从目标任务队列移出的任务,也是根据该移出的任务所在更新前的运行时段调度该移出的任务的。
可见,图3所示的实施例中,计算机设备可以根据任务运行日志确定待调整的目标任务,将该目标任务添加至目标任务队列,并确定该目标任务拟更新至的运行时段,该目标任务队列为第一任务队列或第二任务队列,该第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务;计算机设备根据该目标任务队列中各个任务拟更新至的运行时段,从该目标任务队列中确定出不满足第一任务调整条件的任务,并将该不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;计算机设备对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从该第三任务队列移出的任务,按照未从该第三任务队列移出的任务拟更新至的运行时段,调度未从该第三任务队列移出的任务,采用该过程能够合理调整任务的调度时间,解决了现有技术因一段时间任务特征多,一段时间执行的任务特别少带来的系统资源利用率低的问题。
本申请可用于云计算技术领域,如负载均衡技术领域,本申请涉及区块链技术领域,如可将任务运行日志写入区块链中,并在需要时从区块链获取该任务运行日志。
请参阅图4,为本申请实施例提供的另一种任务调度方法的流程示意图。该方法可以应用于前述提及的服务器。具体地,该方法可以包括以下步骤:
s401、根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务。
其中,步骤s401可参见图3实施例中的步骤s301,本申请实施例在此不做赘述。
s402、确定所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值。
s403、确定所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值。
其中,所述目标任务队列中各个任务所在的运行时段可以是指目标任务队列中各个任务所在的预设运行时段(为各个任务对应设置的运行时段)。
其中,历史资源争抢程度值,是指目标任务队列中各个任务所在的运行时段的资源争抢程度值。历史资源争抢程度值可以包括在预设时间范围中每个时间的资源争抢程度,如最近7天每天的资源争抢程度值。或,历史资源争抢程度值可以包括在预设次数范围内每次的资源争抢程度值,如最近7次每次的资源争抢程度值。
s404、根据所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值,从所述目标任务队列中确定出不满足第一任务调整条件的任务。
s405、将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列。
本申请实施例中,计算机设备可以将目标任务队列中各任务拟更新至的运行时段的历史资源争抢程度值中的各个资源程度值,与目标任务队列中各任务所在的运行时段的历史资源争抢程度值中的各个资源程度值进行比较,得到比较结果,根据比较结果,从该目标任务队列中确定出不满足第一任务调整条件的任务,并将该不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列。
例如,目标任务队列包括任务a和任务b,任务a所在运行时段的历史资源争抢程度值包括最近7天每天的资源争抢程度值,任务b所在运行时段的历史资源争抢程度值包括最近7天每天的资源争抢程度值。计算机设备可以将任务a所在运行时段在最近7天中的日期1的资源争抢程度值,与任务b所在运行时段在最近7天中的日期1的资源争抢程度值进行比较;计算机设备将任务a所在运行时段在最近7天中的日期2的资源争抢程度值,与任务b所在运行时段在最近7天中的日期2的资源争抢程度值进行比较……计算机设备将任务a所在运行时段在最近7天中的日期7的资源争抢程度值,与任务b所在运行时段在最近7天中的日期7的资源争抢程度值进行比较,得到比较结果,若比较结果指示任务a所在运行时段在最近7天中有一半及以上的天数的资源争抢程度值,大于任务b所在运行时段在这一半及以上的天数的资源争抢程度值,则将a确定为不满足第一任务条件的任务。
s406、对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
其中,步骤s405可参见图3实施例中的步骤s303,本申请实施例在此不做赘述。
在一个实施例中,计算机设备还可以从第一任务队列中确定出指定任务,并从第二任务队列中确定出该指定任务的关联任务,该指定任务指在第二任务队列中存在关联任务的任一任务;计算机设备可以在该指定任务拟更新至的运行时段与该关联任务拟更新至的运行时段冲突时,计算该指定任务拟更新至的运行时段的第一资源争抢程度较指定任务所在的运行时段的第二资源争抢程度的第一下降比例,以及关联任务拟更新至的运行时段的第三资源争抢程度较关联任务所在的运行时段的第四资源争抢程度的第二下降比例;当该第一下降比例小于该第二下降比例时,从该第一任务队列移出该指定任务;当该第一下降比例大于或等于第二下降比例时,从该第二任务队列移出该关联任务;至此,计算机设备可以得到移出处理后的目标任务队列。在一个实施例中,该步骤可以在将不满足第一任务调整条件的任务从目标任务队列中移出后执行。
例如,结合图2来说,第一任务队列包括的指定任务为任务a’,指定任务在第二任务队列的关联任务为任务b3’,计算机设备可以将a推迟到任务a’的运行区间执行,即a拟更新至的运行时段为a’所在的运行时段。由图2可以看出,a’的任务结束时间te’早于任务b3的任务开始时间t4。为了不影响到下游任务的执行,a’的任务开始时间ts’可以早于t4-t=4-1.3=t2.7。
计算机设备可以采用如下公式计算a’所在的运行时段的资源争抢程度值c’:
t1’=min(t4,t2.8)-max(t2.7,t1.5)=2.8-2.7=0.1;
t2’=min(t4,t3.5)-max(t2.7,t2.4)=3.5-2.7=0.8;
t3’=0(a3的任务结束时间小于a’的任务开始时间,两者不会并行执行);
tm’=min(t4,t3.6)-max(t2.7,t2.4)=3.6-2.7=0.9;
计算机设备根据a’所在的运行时段的资源争抢程度值和a所在的运行时段的资源争抢程度值,可以确定a’所在的运行时段的资源争抢程度值较a所在的运行时段的资源争抢程度值下降
可见,图3所示的实施例中,计算机设备可以确定该目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及该目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值;计算机设备根据该目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及该目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值,从该目标任务队列中确定出不满足第一任务调整条件的任务以从目标任务队列中移出,本申请实施例采用上述过程能够避免调整任务的运行时段后,反而使任务的资源争抢程度变大的情况。
请参阅图3,为本申请实施例提供的一种任务调度装置的结构示意图。该任务调度装置可以应用于服务器。具体地,该任务调度装置可以包括:
添加处理模块301,用于根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务。
移出处理模块302,用于根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列。
调度模块303,用于对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
在一种可选的实施方式中,添加处理模块301模块根据任务运行日志确定待调整的目标任务以添加至目标任务队列,具体为根据任务运行日志确定第一任务所在的运行时段以及所述第一任务关联的第二任务所在的运行时段,所述任务运行日志包括多个任务中每个任务的运行信息,所述运行信息包括所述任务所在的运行时段;根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件;在所述第一任务满足第二任务调整条件时,将所述第一任务确定为待调整的目标任务以添加至目标任务队列。
在一种可选的实施方式中,添加处理模块301根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,具体为在第二任务为上游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最晚运行的第二任务;计算所述第一任务的任务开始时间与所述最晚运行的第二任务的任务结束时间之间的第一差值;当所述第一差值大于或等于第一预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第一任务队列。
在一种可选的实施方式中,添加处理模块301根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,具体为在第二任务为下游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最早运行的第二任务;计算所述最早运行的第二任务的任务开始时间与所述第一任务的任务结束时间之间的第二差值;当所述第二差值大于或等于第二预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第二任务队列。
在一种可选的实施方式中,添加处理模块301根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,具体为确定所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值;确定所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值;根据所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值,从所述目标任务队列中确定出不满足第一任务调整条件的任务。
在一种可选的实施方式中,移出处理模块302,还用于从第一任务队列中确定出指定任务,并从第二任务队列中确定出所述指定任务的关联任务,所述指定任务指在第二任务队列中存在关联任务的任一任务;在所述指定任务拟更新至的运行时段与所述关联任务拟更新至的运行时段冲突时,计算所述指定任务拟更新至的运行时段的第一资源争抢程度较指定任务所在的运行时段的第二资源争抢程度的第一下降比例,以及关联任务拟更新至的运行时段的第三资源争抢程度较关联任务所在的运行时段的第四资源争抢程度的第二下降比例;当所述第一下降比例小于所述第二下降比例时,从所述第一任务队列移出所述指定任务;当所述第一下降比例大于或等于第二下降比例时,从所述第二任务队列移出所述关联任务。
在一种可选的实施方式中,移出处理模块302,还用于确定所述第三任务队列中的第三任务拟更新至的运行时段的资源争抢程度值,第三任务为第三任务队列包括的任一任务;当所述第三任务拟更新至的运行时段的资源争抢程度值大于或等于所述第三任务所在的运行时段的资源争抢程度值时,从所述第三任务队列移出所述第三任务,并通过调度模块303按照所述第三任务所在的运行时段调度所述第三任务。
可见,图3所示的实施例中,文案处理装置可以根据任务运行日志确定待调整的目标任务,将目标任务添加至目标任务队列,并确定目标任务拟更新至的运行时段,目标任务队列为第一任务队列或第二任务队列;文案处理装置根据目标任务队列中各个任务拟更新至的运行时段,从目标任务队列中确定出不满足第一任务调整条件的任务,并将不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;文案处理装置对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从第三任务队列移出的任务,按照未从第三任务队列移出的任务拟更新至的运行时段,调度未从第三任务队列移出的任务,相较于现有技术一段时间内运行的任务特别多一段时间内运行的任务特别少的情况,本申请实施例能够合理安排任务调度时间,提升系统的资源利用率。
请参阅图4,为本申请实施例提供的一种计算机设备的结构示意图。本实施例中所描述的计算机设备可以包括:一个或多个处理器1000和存储器2000。处理器1000和存储器2000可以通过总线等方式连接。
处理器1000可以是中央处理模块(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器2000可以是高速ram存储器,也可为非不稳定的存储器(non-volatilememory),例如磁盘存储器。存储器2000用于存储一组程序代码,处理器1000可以调用存储器2000中存储的程序代码。具体地:
处理器1000,用于根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务;根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
在一个实施例中,处理器1000根据任务运行日志确定待调整的目标任务以添加至目标任务队列,具体为根据任务运行日志确定第一任务所在的运行时段以及所述第一任务关联的第二任务所在的运行时段,所述任务运行日志包括多个任务中每个任务的运行信息,所述运行信息包括所述任务所在的运行时段;根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件;在所述第一任务满足第二任务调整条件时,将所述第一任务确定为待调整的目标任务以添加至目标任务队列。
在一个实施例中,处理器1000根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,具体为在第二任务为上游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最晚运行的第二任务;计算所述第一任务的任务开始时间与所述最晚运行的第二任务的任务结束时间之间的第一差值;当所述第一差值大于或等于第一预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第一任务队列。
在一个实施例中,处理器1000根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,具体为在第二任务为下游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最早运行的第二任务;计算所述最早运行的第二任务的任务开始时间与所述第一任务的任务结束时间之间的第二差值;当所述第二差值大于或等于第二预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第二任务队列。
在一个实施例中,处理器1000根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,具体为确定所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值;确定所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值;根据所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值,从所述目标任务队列中确定出不满足第一任务调整条件的任务。
在一个实施例中,处理器1000,还用于从第一任务队列中确定出指定任务,并从第二任务队列中确定出所述指定任务的关联任务,所述指定任务指在第二任务队列中存在关联任务的任一任务;在所述指定任务拟更新至的运行时段与所述关联任务拟更新至的运行时段冲突时,计算所述指定任务拟更新至的运行时段的第一资源争抢程度较指定任务所在的运行时段的第二资源争抢程度的第一下降比例,以及关联任务拟更新至的运行时段的第三资源争抢程度较关联任务所在的运行时段的第四资源争抢程度的第二下降比例;当所述第一下降比例小于所述第二下降比例时,从所述第一任务队列移出所述指定任务;当所述第一下降比例大于或等于第二下降比例时,从所述第二任务队列移出所述关联任务。
在一个实施例中,处理器1000,还用于确定所述第三任务队列中的第三任务拟更新至的运行时段的资源争抢程度值,第三任务为第三任务队列包括的任一任务;当所述第三任务拟更新至的运行时段的资源争抢程度值大于或等于所述第三任务所在的运行时段的资源争抢程度值时,从所述第三任务队列移出所述第三任务,按照所述第三任务所在的运行时段调度所述第三任务。
具体实现中,本申请实施例中所描述的处理器1000可执行图1实施例、图2实施例所描述的实现方式,也可执行本申请实施例所描述的实现方式,在此不再赘述。
在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采样硬件的形式实现,也可以采样软件功能模块的形式实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的计算机可读存储介质可为易失性的或非易失性的。例如,该计算机存储介质可以为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。所述的计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
其中,本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于本申请所涵盖的范围。
1.一种任务调度方法,其特征在于,包括:
根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务;
根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;
对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
2.根据权利要求1所述的方法,其特征在于,所述根据任务运行日志确定待调整的目标任务以添加至目标任务队列,包括:
根据任务运行日志确定第一任务所在的运行时段以及所述第一任务关联的第二任务所在的运行时段,所述任务运行日志包括多个任务中每个任务的运行信息,所述运行信息包括所述任务所在的运行时段;
根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件;
在所述第一任务满足第二任务调整条件时,将所述第一任务确定为待调整的目标任务以添加至目标任务队列。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,包括:
在第二任务为上游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最晚运行的第二任务;
计算所述第一任务的任务开始时间与所述最晚运行的第二任务的任务结束时间之间的第一差值;
当所述第一差值大于或等于第一预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第一任务队列。
4.根据权利要求2所述的方法,其特征在于,所述根据所述第一任务所在的运行时段以及所述第二任务所在的运行时段,判断所述第一任务是否满足第二任务调整条件,包括:
在第二任务为下游任务且第二任务为多个时,根据多个第二任务中每个第二任务所在的运行时段,从多个第二任务中确定出最早运行的第二任务;
计算所述最早运行的第二任务的任务开始时间与所述第一任务的任务结束时间之间的第二差值;
当所述第二差值大于或等于第二预设值时,确定所述第一任务满足第二任务调整条件;其中,所述目标任务队列为第二任务队列。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,包括:
确定所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值;
确定所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值;
根据所述目标任务队列中各个任务所在的运行时段的历史资源争抢程度值,以及所述目标任务队列中各个任务拟更新至的运行时段的历史资源争抢程度值,从所述目标任务队列中确定出不满足第一任务调整条件的任务。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从第一任务队列中确定出指定任务,并从第二任务队列中确定出所述指定任务的关联任务,所述指定任务指在第二任务队列中存在关联任务的任一任务;
在所述指定任务拟更新至的运行时段与所述关联任务拟更新至的运行时段冲突时,计算所述指定任务拟更新至的运行时段的第一资源争抢程度较指定任务所在的运行时段的第二资源争抢程度的第一下降比例,以及关联任务拟更新至的运行时段的第三资源争抢程度较关联任务所在的运行时段的第四资源争抢程度的第二下降比例;
当所述第一下降比例小于所述第二下降比例时,从所述第一任务队列移出所述指定任务;
当所述第一下降比例大于或等于第二下降比例时,从所述第二任务队列移出所述关联任务。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第三任务队列中的第三任务拟更新至的运行时段的资源争抢程度值,第三任务为第三任务队列包括的任一任务;
当所述第三任务拟更新至的运行时段的资源争抢程度值大于或等于所述第三任务所在的运行时段的资源争抢程度值时,从所述第三任务队列移出所述第三任务,按照所述第三任务所在的运行时段调度所述第三任务。
8.一种任务调度装置,其特征在于,包括:
添加处理模块,用于根据任务运行日志确定待调整的目标任务,将所述目标任务添加至目标任务队列,并确定所述目标任务拟更新至的运行时段,所述目标任务队列为第一任务队列或第二任务队列,所述第一任务队列包括拟提前运行的任务,第二任务队列包括拟延后运行的任务;
移出处理模块,用于根据所述目标任务队列中各个任务拟更新至的运行时段,从所述目标任务队列中确定出不满足第一任务调整条件的任务,并将所述不满足第一任务调整条件的任务从目标任务队列中移出,得到移出处理后的目标任务队列;
调度模块,用于对移出处理后的第一任务队列和移出处理后的第二任务队列进行合并处理,得到第三任务队列,并针对未从所述第三任务队列移出的任务,按照未从所述第三任务队列移出的任务拟更新至的运行时段,调度未从所述第三任务队列移出的任务。
9.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-7任一项所述的方法。
技术总结