一种任务调度方法、装置和用于任务调度的装置与流程

    专利2022-07-08  111


    本发明涉及网络技术领域,尤其涉及一种任务调度方法、装置和用于任务调度的装置。



    背景技术:

    目前,在执行计算任务时,例如,在执行采用整体同步并行计算(bulksynchronousparallel,bsp)模型的任务时,是多个批任务串行调度,一个批任务内的任务并行调度。这样,在执行过程中,一个批任务内的子任务往往是同时占用计算资源,或者是同时占用网络资源,以交换中间数据。

    但是,这种并行调度的方式,会导致计算资源及网络资源无法得到有效利用,吞吐效率较低。



    技术实现要素:

    本发明实施例提供一种任务调度方法、装置和用于任务调度的装置,可有效解决上述提出的问题。

    为了解决上述问题,本发明实施例公开了一种任务调度方法,所述方法包括:

    接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    根据所述子任务的调度时刻,调度执行所述子任务。

    另一方面,本发明实施例公开了一种任务调度装置,所述装置包括:

    接收模块,用于接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    第一确定模块,用于根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    调度模块,用于根据所述子任务的调度时刻,调度执行所述子任务。

    再一方面,本发明实施例公开了一种用于任务调度的装置,包括有存储器,以及一个或者一个以上程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

    接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    根据所述子任务的调度时刻,调度执行所述子任务。

    又一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如前述一个或多个所述的任务调度方法。

    本发明实施例包括以下优点:

    通过接收待执行的批任务;批任务中包含至少两个执行过程相同的待并行执行的子任务,根据预设的调度策略,确定子任务的调度时刻;其中,调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,使用序列用于表征计算节点在历史批任务的执行过程中各个时刻下的工作状态,历史批任务中包含的历史子任务与待执行批任务中包含的子任务的执行过程相同,根据子任务的调度时刻,调度执行子任务。相较于直接同时并行调度所有子任务,本发明实施例中,基于计算节点在历史批任务各个时刻下的工作状态确定的调度策略,针对待执行的批任务中各个子任务,分别按照各个子任务的调度时刻,依次调度执行子任务。这样,通过错峰调度,可以有效利用计算资源及网络资源,使得系统的吞吐量得到大幅提升。

    附图说明

    为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

    图1是本发明的一种任务调度方法实施例的步骤流程图;

    图2是本发明实施例提供的一种流程示意图;

    图3是本发明实施例提供的一种计算资源使用时序数据的示意图;

    图4是本发明的一种任务调度装置实施例的结构框图;

    图5是本发明的一种用于任务调度的装置800的框图;及

    图6是本发明的一些实施例中服务器的结构示意图。

    具体实施方式

    下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

    方法实施例

    参照图1,示出了本发明的一种任务调度方法实施例的步骤流程图,所述方法包括如下步骤:

    步骤101、接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务。

    步骤102、根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同。

    步骤103、根据所述子任务的调度时刻,调度执行所述子任务。

    本发明实施例的任务调度方法中,接收待执行的批任务;批任务中包含至少两个执行过程相同的待并行执行的子任务,根据预设的调度策略,确定子任务的调度时刻;其中,调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,使用序列用于表征计算节点在历史批任务的执行过程中各个时刻下的工作状态,历史批任务中包含的历史子任务与待执行批任务中包含的子任务的执行过程相同,根据子任务的调度时刻,调度执行子任务。相较于直接同时并行调度所有子任务,本发明实施例中,基于计算节点在历史批任务各个时刻下的工作状态确定的调度策略,针对待执行的批任务中各个子任务,分别按照各个子任务的调度时刻,依次调度执行子任务。这样,通过错峰调度,一定程度上可以缩短批任务的整体运行时间,有效利用计算资源及网络资源,使得系统的吞吐量得到大幅提升。

    同时,通过依次错开调度待执行的批任务中的子任务,一定程度上可以使得子任务之间分别错开占用计算资源/网络资源,进而一定程度上可以提高资源利用率以及任务执行效率。

    在本发明实施例的一种可选实现方式中,上述调度策略可以通过下述步骤s11~步骤s14预先生成:

    步骤s11、获取历史批任务的计算资源使用时序数据;所述计算资源使用时序数据用于表征所述历史批任务在各个时刻下耗费的计算资源量;所述历史批任务中包括m个并行执行的历史子任务,m为不小于2的整数。

    步骤s12、根据所述计算资源使用时序数据,确定计算节点在所述历史批任务的各个历史子任务的执行过程中对应的使用序列,得到m个使用序列。

    步骤s13、根据所述m个使用序列,确定所述历史子任务的调度时刻;所述历史子任务的调度时刻为使所述计算资源的利用率满足预设条件的调度时刻。

    步骤s14、根据所述历史子任务的调度时刻,生成所述调度策略。

    其中,批任务可以表征一个batch的任务。实际应用场景中,批任务可以为多个,各个批任务之间可以是迭代运行,即,一个批任务的运行依赖上一个批任务的结果。进一步地,历史批任务可以是根据实际需求选择的,本发明实施例对此不作限定。历史批任务中包含的历史子任务数量可以不小于待执行的批任务中包含的子任务的数量。计算资源可以是中央处理器(centralprocessingunit,cpu)使用率,或者是其他能够表征计算资源的参数,例如,磁盘占用率,等等。使用序列可以用于表征在历史子任务的执行过程中,计算节点是否是否被使用。进一步地,预设条件可以根据实际需求设置,例如,预设条件可以为计算节点的计算资源的利用率最大、计算节点的计算资源的利用率大于预设利用率阈值,等等。相应地,确定历史子任务的调度时刻时,可以选择能够使计算资源的利用率满足预设条件的时刻,作为调度时刻。

    本发明实施例中,通过获取表征历史批任务的计算资源使用时序数据,根据计算资源使用时序数据确定计算节点在各个历史子任务的执行过程中对应的使用序列,根据m个使用序列,确定使计算资源的利用率满足预设阈值的调度时刻作为历史子任务的调度时刻,最后,根据历史子任务的调度时刻,生成调度策略。这样,一定程度可以使得调度策略中针对子任务设置的调度时刻能够使计算资源较为充分的被利用,进而一定程度上可以提高基于该调度策略进行错峰调度时的调度效果。

    可选的,在本发明实施例的一种实现方式中,上述获取历史批任务的计算资源使用时序数据的操作,可以具体包括:

    步骤s21、在所述历史批任务的运行过程中监控各个时刻下所述计算节点的cpu使用率。

    步骤s22、根据各个时刻下所述计算节点的cpu使用率,生成所述历史批任务的cpu使用率时序数据作为所述计算资源使用时序数据。

    具体实施时,可以从历史批任务开始运行至结束运行的整个运行过程进行监控,以获取运行过程中各个时刻下计算节点的cpu使用率。具体的,可以通过预设的资源监控模块进行资源监控和资源数据更新,以获取cpu使用率。接着,可以基于获取到的各个cpu使用率对应的时刻,按照时序顺序依次记录各个时刻对应的cpu使用率,得到cpu使用率时序数据,进而得到计算资源使用时序数据。

    可选的,图2是本发明实施例提供的一种系统流程示意图,如图2所示,可以先分发一个批任务,该批任务即为上述历史批任务。资源监控模块可以在内部对该批任务进行资源监控以及资源数据更新,以获取该批任务运行时的计算资源使用时序数据。相应地,调度器可以从资源监控模块中请求该时序数据。资源监控模块可以接受时序数据查询请求,并返回时序数据,使得调度器可以获取时序数据。调度器可以进行时序数据分解以及调度策略求解,然后基于调度策略对剩余的批任务进行分发。其中,剩余的批任务即为后续待执行的批任务。

    本发明实施例中,通过在历史批任务的运行过程中监控各个时刻下计算节点的cpu使用率,根据各个时刻下计算节点的cpu使用率,生成历史批任务的cpu使用率时序数据作为计算资源使用时序数据。

    可选的,所述根据计算资源使用时序数据,确定计算节点在历史批任务的各个历史子任务的执行过程中对应的使用序列的步骤,可以具体包括:

    步骤s31、根据所述计算资源使用时序数据,确定所述历史批任务的执行过程中的计算时段以及通信时段。

    步骤s32、对于任一所述计算时段,计算所述计算时段下所述历史批任务中各个历史子任务对应执行的指令数量。

    步骤s33、根据各个所述计算时段下对应的指令数量,生成第一指令数量序列。

    步骤s34、根据所述第一指令数量序列、预设参数以及各个所述计算时段之间的通信时段的时长,生成所述历史批任务中各个历史子任务的执行过程的使用序列;所述预设参数用于表征所述计算节点的cpu在单位时间内所能处理的指令数量。

    由于历史批任务的运行过程中不采取错峰调度,在未使用错峰调度的时候,由于任务会并发,因此计算节点会在同一时刻开始进入网络繁忙的状态,并在完成同步后同一时刻进入cpu繁忙的状态,因此我们考虑两次网络通信之间的计算过程,作为计算时段。其中,计算时段可以是计算节点执行指令,即,执行子任务时的时段。通信时段可以是进行网络通信的时段。计算时段对应的cpu使用率往往会较高,通信时段对应的cpu使用率往往会较低。在执行的指令越多时,所需的计算资源相应越多,相应地,cpu使用率就会越高。反之,在执行的指令越少时,所需的计算资源相应越少,相应地,cpu使用率就会越低。因此,本发明实施例中,可以具体结合计算时段的cpu使用率,确定计算时段对应的指令数量,即,在该计算时段下具体执行了多少条指令。假设有n个计算时段,每个计算时段对应的指令数量分别为insp1,insp2,insp3…inspn,那么第一指令数量序列可以确定为insv={insp1,insp2,insp3…inspn}。

    进一步地,可以先根据第一指令数量序列以及预设参数确定用于表征各个计算时段对应的执行时长的时间序列tcv。其中,预设参数的具体值可以预先通过cpu的主频确定。示例的,以p表示预设参数,tcv可以为:{insp1/p,insp2/p,insp3/p…inspn/p}。接着,插入各个计算时段间隔的通信时段的时长,即可得到使用序列。示例的,使用序列可以为:tv={insp1/p,tn1,insp2/p,tn2,insp3/p,tn3,…,inspn/p}。其中,tn1,tn2,tn3,…表示通信时段的时长。

    本发明实施例中,根据计算资源使用时序数据,确定历史批任务的执行过程中的计算时段以及通信时段,然后计算各个计算时段下历史批任务中各个历史子任务对应执行的指令数量,接着,根据各个计算时段下对应的指令数量,生成第一指令数量序列,最后根据预设参数以及各个计算时段之间的通信时段的时长,生成历史批任务中各个历史子任务的执行过程的使用序列。由于计算节点的计算资源往往是在计算节点执行指令时被占用,因此,本发明实施例中,结合各个计算时段下对应的指令数量,生成使用序列,一定程度上可以确保确定的使用序列的准确性。

    可选的,在本发明实施例的一种实现方式中,上述计算计算时段下历史批任务中各个历史子任务对应执行的指令数量,可以包括:

    步骤s41、根据所述计算资源使用时序数据,确定所述计算时段中各个单位时间下对应的cpu使用率。

    步骤s42、对于任一所述单位时间,计算所述预设参数、所述单位时间下对应的cpu使用率以及所述单位时间之间的乘积,得到各个所述单位时间对应的乘积。

    步骤s43、将各个所述单位时间对应的乘积之和与所述m的比值,确定为所述指令数量。

    其中,单位时间的具体长度可以是根据实际需求设置的,示例的,单位时间可以为每分钟,等等。示例的,图3是本发明实施例提供的一种计算资源使用时序数据的示意图。如图3所示,示意图中的表征cpu使用率大小变化的曲线,在部分时段的cpu使用率均处于较高水平,在部分时段的cpu使用率均处于较低水平。其中,dt表示一个单位时间,“cpuusage”表示cpu使用率,“time”表示时间,tn1,tn2表示通信时段,通信时段之间的部分为一个计算时段。相应地,本发明实施例中,可以将cpu使用率均大于第一预设阈值的时段作为计算时段,将cpu使用率均小于第二预设阈值的时段作为通信时段。其中,第一预设阈值以及第二预设阈值可以是根据实际需求设置的。

    进一步地,单位时间下对应的cpu使用率可以为单位时间的起始时间点与结束时间点对应的使用率的均值,或者是整个单位时间内各个时间点对应的使用率的均值,等等。示例的,以dt表示单位时间,df表示单位时间下对应的cpu使用率,那么单位时间对应的乘积可以表示为dt*df*p。该乘积表示用于表征该单位时间dt内处理的cpu指令的数量。接着,可以将所有单位时间对应的乘积加和,得到乘积之和ins=sum(dt*df*p)。进一步地,由于子任务的执行过程是相同的,因此,可以得到insp=ins/n,也就是得到单个子任务在两次网络通信之间运行时计算资源所执行的指令数量。

    本发明实施例中,通过计算资源使用时序数据,确定计算时段中各个单位时间下对应的cpu使用率,然后将预设参数、单位时间下对应的cpu使用率以及单位时间之间的乘积,作为单位时间对应的乘积。最后将各个单位时间对应的乘积之和与m的比值,确定为指令数量。这样,针对执行过程相同的历史子任务,通过直接计算乘积之和与m的比值,即可得到各个历史子任务对应的指令数量,进而一定程度上可以在较为准确确定出指令数量的同时,提高确定指令数量的确定效率。

    可选的,上述根据m个使用序列,确定历史子任务的调度时刻的步骤,可以包括:

    步骤s51、对各个所述使用序列进行离散化;其中,离散化后的所述使用序列包括第一标识和第二标识,所述第一标识表示所述计算节点处于执行计算状态,所述第二标识表示所述计算节点处于通信状态。

    步骤s52、选择一个子任务的离散化后的使用序列作为基础序列,将其余的子任务的离散化后的使用序列作为插入序列。

    步骤s53、确定所述插入序列在所述基础序列中的插入时刻,使得第二标识被第一标识覆盖。

    其中,第一标识以及第二标识的具体内容可以根据实际需求设置,示例的,第一标识可以为“1”,第二标识可以为“0”。示例的,假设tv=(2,5,3,4,4,5,1),其中,tcv=(2,3,4,1),各个计算时段之间的通信时段的时长分别为(5,4,5),离散化之后的使用序列可以为:(1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1)。

    选择基础序列时,可以将任务序号为1的使用序列作为基准序列,或者是随机选择一个使用序列作为基准序列,本发明实施例对此不作限定。进一步地,可以根据插入序列以及基础序列,确定可选插入时刻以及各个可选插入时刻对应的cpu使用率,确定各个所述可选插入时刻对应的cpu使用率中的最大cpu使用率,并将与所述最大cpu使用率对应的可选插入时刻作为所述插入时刻。示例的,可以采用贪心策略选择最优的可选插入时刻。

    具体实施时,可以按照各个插入序列的任务序号,依次确定插入序列的插入时刻。具体的,对于任一插入序列,可以将能够使得基础序列中第二标识对应的时刻作为一个可选插入时刻。可选插入时刻对应的cpu使用率可以是根据在该可选插入时刻插入基础序列后,插入后的基础序列中第二标识的数量确定的。其中,第二标识的数量越少,可选插入时刻对应的cpu使用率越大。示例的,假设基础序列a为(1,0,0,1),剩余的两个插入序列b及c均为(1,0,0,1)。那么针对第2个历史子任务对应的插入序列b,可选插入时刻可以包括时刻1以及时刻2,相应地,若在时刻1插入,插入后的基础序列a更新为(1,1,0,1,1),若在时刻2插入,插入后的基础序列a更新为(1,0,1,1,0,1)。由于可选时刻中,时刻1插入时可以使计算节点处于执行计算状态的时间更长,即使cpu使用率最大,因此,可以将时刻1确定为该插入序列b的插入时刻。进一步地,对于第3个历史子任务对应的插入序列c,基础序列更新为(1,1,0,1,1),相应地,可选插入时刻可以包括时刻2以及时刻5。相应地,若在时刻2插入,插入后的基础序列a更新为(1,1,1,1,1,1),若在时刻5插入,插入后的基础序列a更新为(1,1,0,1,1,1,0,0,1)。由于可选时刻中,时刻2插入时可以使计算节点处于执行计算状态的时间更长,使cpu使用率最大,因此,可以将时刻2确定为该插入序列c的插入时刻。

    本发明实施例中,先对各个使用序列进行离散化,使得基于使用序列可以便捷的表征计算节点的具体状态,接着,通过划分基础序列以及插入序列,确定插入序列在基础序列中的插入时刻,作为调度时刻,一定程度上可以确保确定的历史子任务的调度时刻下计算资源的利用率满足预设条件,进而确保调度时刻的准确性。

    可选的,在本发明的一种实现方式中,上述根据历史子任务的调度时刻,生成调度策略的步骤,可以包括:

    步骤s61、根据各个插入序列对应的插入时刻以及各个插入序列对应的任务序号,确定任务序号与插入时刻的映射关系。

    步骤s62、将所述映射关系确定为所述调度策略。

    示例的,假设任务序号为2的历史子任务的插入序列对应的插入时刻为时刻1,任务序号为3的历史子任务的插入序列对应的插入时刻为时刻2,那么可以生成表征任务序号为2与时刻1对应,任务序号为3与时刻2对应…的映射关系。最后将映射关系确定为调度策略。相应地,该调度策略可以用于表征第i个子任务对应的调度时刻。其中,i表示任务序号。

    本发明实施例中,根据各个插入序列对应的插入时刻以及各个插入序列对应的任务序号,

    确定任务序号与插入时刻的映射关系,将该映射关系确定为调度策略,可以使得后续步骤中可以便捷的根据调度策略确定调度时刻。

    进一步地,本发明实施例中的调度时刻是基于上述单位时间dt划分的,相应地,根据子任务的调度时刻,调度执行子任务的步骤,可以包括:

    步骤s71、在起始时间点调度所述批任务中的初始子任务;所述初始子任务为所述批任务中任务序号为1的子任务。

    步骤s72、对于任一剩余的子任务,在所述批任务中的初始子任务被调度目标时长之后,调度所述剩余的子任务;所述目标时长为所述剩余的子任务对应的调度时刻与所述单位时间的乘积。

    其中,起始时间点可以是根据实际需求确定的,示例的,可以将接收到开始指令的时间点作为起始时间点。对于待执行的批任务中的第1个子任务,可以在该起始时间点调度第1个子任务。进一步地,假设单位时间为1分钟,剩余的子任务包括第2个子任务,第2个子任务对应的调度时刻为时刻1,那么可以在第1个子任务被调度1分钟之后,调度第2个子任务。

    实际应用场景中,当子任务错开调度的间隔过长时,会导致所有批任务运行完成所需的整体时间变长,吞吐量变小。当子任务错开调度的间隔过短时,会导致错峰调度方案效果较差。本发明实施例中,通过在起始时间点调度批任务中的初始子任务,根据剩余的各个子任务在调度策略中对应的调度时刻,确定具体调度时间,进而一定程度上可以在实现错峰调度的同时,确保错峰调度的调度效果。

    装置实施例

    参照图4,示出了本发明的一种任务调度装置实施例的结构框图,所述装置具体可以包括:

    接收模块201,用于接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    第一确定模块202,用于根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    调度模块203,用于根据所述子任务的调度时刻,调度执行所述子任务。

    可选的,所述装置还包括:

    获取模块,用于获取历史批任务的计算资源使用时序数据;所述计算资源使用时序数据用于表征所述历史批任务在各个时刻下耗费的计算资源量;所述历史批任务中包括m个并行执行的历史子任务,m为不小于2的整数;

    第二确定模块,用于根据所述计算资源使用时序数据,确定计算节点在所述历史批任务的各个历史子任务的执行过程中对应的使用序列,得到m个使用序列;

    第三确定模块,用于根据所述m个使用序列,确定所述历史子任务的调度时刻;所述历史子任务的调度时刻为使所述计算资源的利用率满足预设条件的调度时刻;

    生成模块,用于根据所述历史子任务的调度时刻,生成所述调度策略。

    可选的,所述获取模块,具体用于:

    在所述历史批任务的运行过程中监控各个时刻下所述计算节点的cpu使用率;

    根据各个时刻下所述计算节点的cpu使用率,生成所述历史批任务的cpu使用率时序数据作为所述计算资源使用时序数据。

    可选的,所述第二确定模块,具体用于:

    根据所述计算资源使用时序数据,确定所述历史批任务的执行过程中的计算时段以及通信时段;

    对于任一所述计算时段,计算所述计算时段下所述历史批任务中各个历史子任务对应执行的指令数量;

    根据各个所述计算时段下对应的指令数量,生成第一指令数量序列;

    根据所述第一指令数量序列、预设参数以及各个所述计算时段之间的通信时段的时长,生成所述历史批任务中各个历史子任务的执行过程的使用序列;所述预设参数用于表征所述计算节点的cpu在单位时间内所能处理的指令数量。

    可选的,所述第二确定模块,还具体用于:

    根据所述计算资源使用时序数据,确定所述计算时段中各个单位时间下对应的cpu使用率;

    对于任一所述单位时间,计算所述预设参数、所述单位时间下对应的cpu使用率以及所述单位时间之间的乘积,得到各个所述单位时间对应的乘积;

    将各个所述单位时间对应的乘积之和与所述m的比值,确定为所述指令数量。

    可选的,所述第三确定模块,具体用于:

    对各个所述使用序列进行离散化;其中,离散化后的所述使用序列包括第一标识和第二标识,所述第一标识表示所述计算节点处于执行计算状态,所述第二标识表示所述计算节点处于通信状态;

    选择一个历史子任务的离散化后的使用序列作为基础序列,将其余的历史子任务的离散化后的使用序列作为插入序列;

    确定所述插入序列在所述基础序列中的插入时刻,使得第二标识被第一标识覆盖。

    可选的,所述第三确定模块,还具体用于:

    根据所述插入序列以及所述基础序列,确定可选插入时刻以及各个可选插入时刻对应的cpu使用率;

    确定各个所述可选插入时刻对应的cpu使用率中的最大cpu使用率,并将与所述最大cpu使用率对应的可选插入时刻作为所述插入时刻。

    可选的,所述生成模块,具体用于:

    根据各个所述插入序列对应的插入时刻以及各个插入序列对应的任务序号,确定任务序号与插入时刻的映射关系;

    将所述映射关系确定为所述调度策略。

    可选的,所述调度时刻是基于所述单位时间划分的;所述调度模块203,具体用于:

    在起始时间点调度所述批任务中的初始子任务;所述初始子任务为所述批任务中任务序号为1的子任务;

    对于任一剩余的子任务,在所述批任务中的初始子任务被调度目标时长之后,调度所述剩余的子任务;所述目标时长为所述剩余的子任务对应的调度时刻与所述单位时间的乘积。

    对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

    本发明实施例的任务调度装置,可以接收待执行的批任务;批任务中包含至少两个执行过程相同的待并行执行的子任务,根据预设的调度策略,确定子任务的调度时刻;其中,调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,使用序列用于表征计算节点在历史批任务的执行过程中各个时刻下的工作状态,历史批任务中包含的历史子任务与待执行批任务中包含的子任务的执行过程相同,根据子任务的调度时刻,调度执行子任务。相较于直接同时并行调度所有子任务,本发明实施例中,基于计算节点在历史批任务各个时刻下的工作状态确定的调度策略,针对待执行的批任务中各个子任务,分别按照各个子任务的调度时刻,依次调度执行子任务。这样,通过错峰调度,可以有效利用计算资源及网络资源,使得系统的吞吐量得到大幅提升。

    本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

    关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

    本发明实施例提供了一种用于任务调度的装置,包括有存储器,以及一个或者一个以上程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;根据所述子任务的调度时刻,调度执行所述子任务。

    图5是根据一示例性实施例示出的一种用于任务调度的装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

    参照图5,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及通信组件816。

    处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。

    存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

    电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。

    多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

    音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当装置800处于操作模式,如呼叫模式、记录模式和语音信息处理模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。

    i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

    传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

    通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频信息处理(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

    在示例性实施例中,装置800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

    在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

    图6是本发明的一些实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。

    服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

    一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行上述任务调度方法。

    一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行上述任务调度方法。

    本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

    应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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

    以上对本发明所提供的一种任务调度方法、一种任务调度装置和一种用于任务调度的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。


    技术特征:

    1.一种任务调度方法,其特征在于,所述方法包括:

    接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    根据所述子任务的调度时刻,调度执行所述子任务。

    2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

    获取历史批任务的计算资源使用时序数据;所述计算资源使用时序数据用于表征所述历史批任务在各个时刻下耗费的计算资源量;所述历史批任务中包括m个并行执行的历史子任务,m为不小于2的整数;

    根据所述计算资源使用时序数据,确定计算节点在所述历史批任务的各个历史子任务的执行过程中对应的使用序列,得到m个使用序列;

    根据所述m个使用序列,确定所述历史子任务的调度时刻;所述历史子任务的调度时刻为使所述计算资源的利用率满足预设条件的调度时刻;

    根据所述历史子任务的调度时刻,生成所述调度策略。

    3.根据权利要求2所述的方法,其特征在于,所述获取历史批任务的计算资源使用时序数据,包括:

    在所述历史批任务的运行过程中监控各个时刻下所述计算节点的cpu使用率;

    根据各个时刻下所述计算节点的cpu使用率,生成所述历史批任务的cpu使用率时序数据作为所述计算资源使用时序数据。

    4.根据权利要求2或3所述的方法,其特征在于,所述根据所述计算资源使用时序数据,确定计算节点在所述历史批任务的各个历史子任务的执行过程中对应的使用序列,包括:

    根据所述计算资源使用时序数据,确定所述历史批任务的执行过程中的计算时段以及通信时段;

    对于任一所述计算时段,计算所述计算时段下所述历史批任务中各个历史子任务对应执行的指令数量;

    根据各个所述计算时段下对应的指令数量,生成第一指令数量序列;

    根据所述第一指令数量序列、预设参数以及各个所述计算时段之间的通信时段的时长,生成所述历史批任务中各个历史子任务的执行过程的使用序列;所述预设参数用于表征所述计算节点的cpu在单位时间内所能处理的指令数量。

    5.根据权利要求4所述的方法,其特征在于,所述计算所述计算时段下所述历史批任务中各个历史子任务对应执行的指令数量,包括:

    根据所述计算资源使用时序数据,确定所述计算时段中各个单位时间下对应的cpu使用率;

    对于任一所述单位时间,计算所述预设参数、所述单位时间下对应的cpu使用率以及所述单位时间之间的乘积,得到各个所述单位时间对应的乘积;

    将各个所述单位时间对应的乘积之和与所述m的比值,确定为所述指令数量。

    6.根据权利要求2所述的方法,其特征在于,所述根据所述m个使用序列,确定所述历史子任务的调度时刻,包括:

    对各个所述使用序列进行离散化;其中,离散化后的所述使用序列包括第一标识和第二标识,所述第一标识表示所述计算节点处于执行计算状态,所述第二标识表示所述计算节点处于通信状态;

    选择一个历史子任务的离散化后的使用序列作为基础序列,将其余的历史子任务的离散化后的使用序列作为插入序列;

    确定所述插入序列在所述基础序列中的插入时刻,使得第二标识被第一标识覆盖。

    7.根据权利要求6所述的方法,其特征在于,所述确定所述插入序列在所述基础序列中的插入时刻,包括:

    根据所述插入序列以及所述基础序列,确定可选插入时刻以及各个可选插入时刻对应的cpu使用率;

    确定各个所述可选插入时刻对应的cpu使用率中的最大cpu使用率,并将与所述最大cpu使用率对应的可选插入时刻作为所述插入时刻。

    8.一种任务调度装置,其特征在于,所述装置包括:

    接收模块,用于接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    第一确定模块,用于根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    调度模块,用于根据所述子任务的调度时刻,调度执行所述子任务。

    9.一种用于任务调度的装置,其特征在于,包括有存储器,以及一个或者一个以上程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

    接收待执行的批任务,所述批任务中包含至少两个执行过程相同的待并行执行的子任务;

    根据预设的调度策略,确定所述子任务的调度时刻;其中,所述调度策略是根据历史批任务执行过程中计算节点对应的使用序列确定的,所述使用序列用于表征所述计算节点在所述历史批任务的执行过程中各个时刻下的工作状态;其中,所述历史批任务中包含的历史子任务与所述待执行批任务中包含的子任务的执行过程相同;

    根据所述子任务的调度时刻,调度执行所述子任务。

    10.一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1至7任一所述的任务调度方法。

    技术总结
    本发明实施例提供一种任务调度方法、装置和用于任务调度的装置。其中的方法包括:接收待执行的批任务,批任务中包含至少两个执行过程相同的待并行执行的子任务,根据预设的调度策略,确定子任务的调度时刻,根据子任务的调度时刻,调度执行子任务。相较于直接同时并行调度所有子任务,本发明实施例中,基于计算节点在历史批任务各个时刻下的工作状态确定的调度策略,针对待执行的批任务中各个子任务,分别按照各个子任务的调度时刻,依次调度执行子任务。这样,通过错峰调度,可以有效利用计算资源及网络资源,使得系统的吞吐量得到大幅提升。

    技术研发人员:李浒;苏乐
    受保护的技术使用者:华控清交信息科技(北京)有限公司
    技术研发日:2020.12.17
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22993.html

    最新回复(0)