掌桥专利:专业的专利平台
掌桥专利
首页

一种任务调度方法

文献发布时间:2023-06-19 09:27:35



技术领域

本发明涉及计算机技术领域,具体涉及一种任务调度方法。

背景技术

在大规模计算场景下,需要解决的一个普遍问题是将所有节点的资源(例如CPU、内存、存储空间等)组合成资源池,根据资源的空闲和负载情况,将任务调度到合适的节点,分配硬件资源进行计算。当计算完成后,释放该节点的资源,然后调度其它任务。通常计算任务之间并不是平等的,可以划分成很多优先级,系统应当优先调度优先级高的任务,以获得较好的用户响应体验。

业界有很多调度系统如SGE、PBS、Kubernettes、Mesos等可以实现上述任务的调度功能。这些调度系统大都采用下述方法:

(1)通过获取各个目标系统中的各个节点的所有资源的准确信息,然后采用一定的算法,得到具体的调度计划。业界几乎所有的调度系统都是采用该方法,差别只在于根据资源信息计算调度计划的算法不同。该类方法的劣势在于,目标系统对调度系统不透明。调度系统需要完全掌控所有资源的准确信息,这在很多场景下是不现实的。例如在云计算的场景下,云端资源原则上对用户是透明的,不可能向用户开放详细的资源状态。另一个典型场景是用户需要组合多个不同的目标系统时,每个目标系统有内置的资源管理系统,不可能对用户统一开放资源统计信息,这些场景下都需要修改调度系统,在目标系统的资源状况完全未知的状况下,实现有效调度;

(2)为了实现优先级调度,常用的方法是根据任务的调度限制和优先级,进行资源匹配。通常会根据任务配置和优先级计算一个权重值,根据权重值进行调度。该类调度方法在很多场景下能够实现相对有效的调度,但是实现起来非常复杂。最优调度问题通常是NP难问题,属于算法中没有计算简单的最优解的情况。因此该算法可能仅在一种场景下有效,在另一种场景下可能表现很差。因此好的调度系统不但要实现高的资源利用率和用户响应,还必须具备调节能力,可以适应不同的环境和用户需求,并能够解释调度的结果。上述根据权重值进行调度的算法,它的任务配置和权重值的关系比较复杂,难于通过调节配置,迅速提升特定任务的调度优先级。另外,也难于向用户解释一个复杂场景下的调度结果。

发明内容

为解决现有技术的不足,本发明实施例提供了一种任务调度方法,该方法包括以下步骤:

步骤1:初始化变量last-schedule-num=0,total-schedule-num=0,其中,last-schedule-num为上一个队列调度的任务数量,total-schedule-num为当前总共调度的任务数量;

步骤2:根据优先级从大到小的顺序,遍历处于各个优先级队列,运行步骤3~步骤5,其中,一个优先级队列包括具有相同优先级的多个任务;

步骤3:计算优先级队列的限流参数alpha,包括:

判断当前优先级队列中处于等待状态的各个任务数量的和Total-Wait-Num是否大于设定的阈值Throate-TaskQuota,若是,则利用公式

alpha=Power(throate-penalty,max(Total-Wait-Time/Throate-TimeQuota,Total-Wait-Num/Throate-TaskQuota)),计算当前优先级队列下一个优先级队列的限流参数alpha,其中,函数Power(a,b)表示计算a的b次方,函数max(a,b)表示计算a和b的最大值,其中,throate-penalty的值大/等于0且小/等于1,为针对不同优先级队列的限流参数;Total-Wait-Time为当前优先级队列中处于等待状态的各个任务等待时长的和,Throate-TimeQuota为设定的时长;

若否,则利用公式alpha=Priority-Penalty,计算当前优先级队列的限流参数alpha,其中,Priority-Penalty为针对所有优先级队列设置的统一限流参数;

步骤4:根据公式allowed-schedule-num=min(One-Shot-Limit—total-schedule-num,last-schedule-num×alpha),计算当前优先级队列中的可调度任务数allowed-schedule-num,其中,函数min(a,b)表示取a与b之间的最小值,One-Shot-Limit表示单次能够调度的任务的最大数量;

步骤5:根据当前优先级队列中的可调度任务数allowed-schedule-num,向目标系统提交任务。

优选地,步骤3还包括:

判断Total-Wait-Time是否大于Throate-TimeQuota,若是,则若是,则利用公式alpha=Power(throate-penalty,max(Total-Wait-Time/Throate-TimeQuota,Total-Wait-Num/Throate-TaskQuota)),计算当前优先级队列下一个优先级队列的限流参数alpha,其中,函数Power(a,b)表示计算a的b次方,函数max(a,b)表示计算a和b的最大值,其中,throate-penalty的值大/等于0且小/等于1,为针对不同优先级队列的限流参数;若否,则利用公式alpha=Priority-Penalty,计算当前优先级队列的限流参数alpha,其中,Priority-Penalty为针对所有优先级队列预先设置的统一限流参数。

优选地,在执行步骤5完成之后,所述方法还包括:

计算调度系统发起的本次任务调度请求需要的资源及其对应的数量,判断所述资源及对应的数量是否满足要求,若是,则生成相应的资源标识符及任务启动参数;否则,返回资源不足。

优选地,在执行步骤5完成之后,所述方法还包括:

根据当前优先级队列实际调度任务的数量cur-schedule-num,更新上一个队列调度的任务数量last-schedule-num及当前总共调度的任务数量total-schedule-num。

优选地,在执行步骤5完成之后,所述方法还包括:

实时获取目标系统发送的任务运行状态通知,根据所述任务运行状态通知,异步更新各个优先级列表的任务调度信息表。

优选地,步骤5包括:

向目标系统发起携带资源标识符及任务启动参数的任务调度请求,其中,资源标志符表示资源分配协议返回的值;任务启动参数表示任务运行必须的参数。

本发明实施例提供的任务调度方法具有以下有益效果:

(1)解耦合了调度系统和资源管理系统,不依赖于目标系统的资源情况进行调度决策,适用于目标系统不确定的场景。尤其适用于云计算的环境,因为云端对客户端透明,不可能提供总体的资源情况;

(2)调度算法实现简单,且能够保证优先级调度的情况下充分利用资源。首先当目标系统资源充足的时候,统一限流参数Priority-Penalty设为0,则算法严格按照优先级调度,如果高优先级队列中的任务未调度完成,则低优先级队列中的任务不能被调度。如果统一限流参数Priority-Penalty为1,则低优先级可以获得和高优先级调度的同等份额,提升目标系统的利用率,所以,Priority-Penalty适用于对优先级调度和目标系统资源利用率具有不同需求的场景;

(3)在没有目标系统的资源负载的场景下,可以适应目标系统的负载变化。当目标系统负载加重的时候,Total-Wait-Time和Total-Wait-Num增加,当达到阀值的时候,会降低当前优先级队列和更低优先级队列的任务调度份额,直到最后不再调度新任务,实现调度系统的平滑限流。Throate-Penalty可以调节的力度。当目标系统资源充足,负载降低的时候,Total-Wait-Num和Total-Wait-Time将会降低,提高当前优先级队列和更低优先级队列的调度份额,加快任务的调度;

(4)任务调度信息表在用户层面反映了目标系统的负载,调度算法的决策直接基于任务调度信息表的数据,因此很容易解释调度计划;

(5)One-Shot-Limit参数可以用于避免优先级反转的情况。如果One-Shot-Limit设置较大,倾向于多提交任务,忽略优先级,有利于提高资源利用率;如果需要避免优先级反转,可以减少One-Shot-Limit,采用多次调度、单次受限的方式,相当于给目标系统更多的反馈时间,任务调度信息表更准确地反映各个优先级列表的调度状态,能够避免优先级反转。

具体实施方式

以下结合具体实施例对本发明作具体的介绍。

本发明实施例提供的任务调度方法包括以下步骤:

步骤1:初始化变量last-schedule-num=0,total-schedule-num=0,其中,last-schedule-num为上一个队列调度的任务数量,total-schedule-num为当前总共调度的任务数量。

步骤2:根据优先级从大到小的顺序,遍历处于各个优先级队列,运行步骤3~步骤5,其中,一个优先级队列包括具有相同优先级的多个任务,优先级的大小与发起该任务的用户身份有关,比如科研用户发送的任务的优先级大于生产用户发送的任务的优先级。

步骤3:计算优先级队列的限流参数alpha,包括:

判断当前优先级队列中处于等待状态的各个任务数量的和Total-Wait-Num是否大于设定的阈值Throate-TaskQuota,若是,则利用公式

alpha=Power(throate-penalty,max(Total-Wait-Time/Throate-TimeQuota,Total-Wait-Num/Throate-TaskQuota)),计算当前优先级队列下一个优先级队列的限流参数alpha,其中,函数Power(a,b)表示计算a的b次方,函数max(a,b)表示计算a和b的最大值,其中,throate-penalty的值大/等于0且小/等于1,为针对不同优先级队列的限流参数;Total-Wait-Time为当前优先级队列中处于等待状态的各个任务等待时长的和,Throate-TimeQuota为设定的时长;

若否,则利用公式alpha=Priority-Penalty,计算当前优先级队列的限流参数alpha,其中,Priority-Penalty为针对所有优先级队列设置的统一的限流参数。

步骤4:根据公式allowed-schedule-num=min(One-Shot-Limit—total-schedule-num,last-schedule-num×alpha),计算当前优先级队列中的可调度任务数allowed-schedule-num,其中,函数min(a,b)表示取a与b之间的最小值,One-Shot-Limit表示单次能够调度的任务的最大数量。

步骤5:根据当前优先级队列中的可调度任务数allowed-schedule-num,向目标系统提交任务。

可选地,步骤3还包括:

判断Total-Wait-Time是否大于Throate-TimeQuota,若是,则若是,则利用公式alpha=Power(throate-penalty,max(Total-Wait-Time/Throate-TimeQuota,Total-Wait-Num/Throate-TaskQuota)),计算当前优先级队列下一个优先级队列的限流参数alpha,其中,函数Power(a,b)表示计算a的b次方,函数max(a,b)表示计算a和b的最大值,其中,throate-penalty的值大/等于0且小/等于1,为针对不同优先级队列的限流参数;若否,则利用公式alpha=Priority-Penalty,计算当前优先级队列的限流参数alpha,其中,Priority-Penalty为针对所有优先级队列预先设置的统一限流参数。

可选地,在执行步骤5完成之后,该方法还包括:

计算调度系统发起的本次任务调度请求需要的资源及其对应的数量,判断所述资源及对应的数量是否满足要求,若是,则生成相应的资源标识符及任务启动参数;否则,返回资源不足。

其中,资源标识符对调度系统透明,由目标系统解释。

作为本发明一个具体的实施例,任务调度请求为(cpu:1,memory:10G,disk:10G,gpu:0),则需要向目标系统申请的资源包括(CPU1个,内存10G,硬盘空间10G,gpu 0个)。

可选地,在执行步骤5完成之后,该方法还包括:

根据当前优先级队列实际调度任务的数量cur-schedule-num,更新上一个队列调度的任务数量last-schedule-num及当前总共调度的任务数量total-schedule-num。

其中,用cur-schedule-num替代last-schedule-num,用total-schedule-num与last-schedule-num的和替代total-schedule-num。

可选地,在执行步骤5完成之后,该方法还包括:

实时获取目标系统发送的任务运行状态通知,根据所述任务运行状态通知,异步更新各个优先级列表的任务调度信息表。

其中,任务调度信息表包括Total-Wait-Time和Total-Wait-Num,任务运行状态通知包括任务运行的状态及相应的任务标识符,任务运行的状态包括等待状态、正在运行状态、任务运行结束且未出错状态、任务运行结束但出错状态。

可选地,步骤5包括:

向目标系统发起携带资源标识符及任务启动参数的任务调度请求,其中,资源标志符表示资源分配协议返回的值,任务启动参数表示任务运行必须的参数。

其中,任务启动参数包括命令行、环境变量、命令行参数,目标系统按照自身的方式,将任务运行在指定的资源上。不限制目标系统启动任务、分配资源的具体方式。任务投递成功将返回任务标识符。

本发明实施例提供的任务调度方法,根据优先级从大到小的顺序,遍历处于各个优先级队列,计算优先级队列的限流参数alpha,计算当前优先级队列中的可调度任务数allowed-schedule-num,根据当前优先级队列中的可调度任务数allowed-schedule-num,向目标系统提交任务,简化了调度难度,适用于多种场景,提高了调度的有效性。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 任务调度方法、任务调度装置、任务调度设备及存储介质
  • 一种任务调度系统、任务调度和调度任务配置方法及装置
技术分类

06120112174128