一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种资源调度方法及装置与流程

2023-02-20 13:47:35 来源:中国专利 TAG:


1.本技术涉及计算机网络技术领域,尤其涉及一种资源调度方法及装置。


背景技术:

2.工作流(workflow)是一组有依赖关系的作业组合,例如,工作流中的后一个作业的执行依赖于工作流中的前一个作业的完成,工作流一般包括多个并行或串行的作业。
3.在高性能计算(high performance computing,hpc)系统中,工作流中作业的运行依赖于该作业所需的资源是否充足,工作流中的部分作业会因为资源不足而处于等待状态,导致整个工作流不能按时按需完成。


技术实现要素:

4.本技术实施例公开了一种资源调度方法和装置,能够实现工作流的执行流畅、不卡顿。
5.第一方面,本技术实施例提供了一种资源调度方法,所述方法包括:根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源;使用第一资源为所述工作流中的各个计算阶段分配资源。
6.其中,工作流的各个计算阶段中每个计算阶段所需的资源数量为该计算阶段内的各个作业实际使用的资源数量之和。
7.上述方法中,以工作流整体作为资源调度的单位,使得提供给工作流各个计算阶段内的作业的资源充足,实现了工作流的执行流畅、不卡顿,有效提高了资源的利用率。
8.可选地,根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源,具体为:根据工作流的各个计算阶段所需的资源数量中的最大资源数量为工作流分配第一资源,其中,第一资源的数量大于或者等于最大资源数量。
9.实施上述实现方式,根据工作流的各个计算阶段所需的资源数量中的最大值为工作流分配资源,实现了以尽可能小的资源消耗确保工作流可以流畅、顺利的执行。
10.可选地,使用第一资源为工作流中的各个计算阶段分配资源,包括:在工作流的第一阶段中,使用第一资源为工作流的第一阶段中的作业分配资源,使用第一资源中的剩余资源为共享组分配资源,其中,工作流中的作业之间具有依赖关系,共享组提交的作业为独立于所述工作流以外的作业。
11.其中,共享组例如可以是用户组、机器组或队列,本技术实施例不做具体限定。
12.实施上述实现方式,使用第一资源优先为工作流分配资源,在第一资源有剩余的情况下,将剩余的资源共享给工作流以外的作业使用,如此,在保证工作流顺畅执行的情况下,还提高了资源的利用率。
13.可选地,该方法还包括:在工作流的第二阶段中,若能够分配给工作流的第二阶段中的作业的资源不足,回收分配给共享组的资源中的部分或者全部,其中,第二阶段为第一阶段的下一阶段,能够分配给工作流的第二阶段中的作业的资源为第一资源减去分配给共
享组的资源;使用能够分配给工作流的第二阶段中的作业的资源以及回收的资源为工作流的第二阶段中的作业分配资源。
14.实施上述实现方式,在能够分配给工作流的下一阶段的资源数量不足时,可以回收历史计算阶段中借出给共享组的资源以支持工作流的下一阶段内的作业的执行,如此,实现了工作流中各个计算阶段可以按时、流畅地执行。
15.可选地,该方法还包括:在工作流的第二阶段中,若能够分配给工作流的第二阶段中的作业的资源充足,使用能够分配给工作流的第二阶段中的作业的资源为工作流的第二阶段中的作业分配资源。
16.实施上述实现方式,若能够分配给工作流的第二阶段中的作业的资源充足,可确保工作流的第二阶段中的作业按时、流畅地执行。
17.可选地,共享组的各个用户基于预设比例分享共享组分配到的资源。
18.其中,还可以配置共享组中的各个用户(或者机器、队列)之间的预设比例。例如,在某个用户提交的作业较为紧急时,可以将预设比例中该用户对应的比例设置的较高,使得该用户获取较充足的资源确保作业的顺利执行。
19.可选地,共享组提交的作业的运行时长小于等于工作流中各个计算阶段内的作业的运行时长。
20.实施上述实现方式,共享组提交的作业(也可称作普通作业)的运行时长小于等于工作流中各个计算阶段内的作业的运行时长,可使得在回收分配给共享组的资源时,可避免占用该资源的普通作业的执行被打断。
21.可选地,资源包括但不限于:中央处理器核、图形处理器、许可证资源。
22.可选地,在有多个工作流需要资源调度的情况下,为多个工作流设置资源调度的优先级。
23.实施上述实现方式,为多个工作流设置资源调度的优先级可以实现各个工作流按时、流畅地执行。
24.第二方面,本技术提供了一种用于资源调度的装置,该装置包括:计算单元,用于根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源;分配单元,用于使用第一资源为工作流中的各个计算阶段分配资源。
25.可选地,计算单元,具体用于:根据工作流的各个计算阶段所需的资源数量中的最大资源数量为工作流分配第一资源,其中,第一资源的数量大于或者等于最大资源数量。
26.可选地,分配单元,具体用于:在工作流的第一阶段中,使用第一资源为工作流的第一阶段中的作业分配资源,使用第一资源中的剩余资源为共享组分配资源,其中,工作流中的作业之间具有依赖关系,共享组提交的作业为独立于工作流以外的作业。
27.可选地,分配单元,还用于:在工作流的第二阶段中,若能够分配给工作流的第二阶段中的作业的资源不足,回收分配给共享组的资源中的部分或者全部,其中,第二阶段为第一阶段的下一阶段,能够分配给工作流的第二阶段中的作业的资源为第一资源减去分配给共享组的资源;使用能够分配给工作流的第二阶段中的作业的资源以及回收的资源为工作流的第二阶段中的作业分配资源。
28.可选地,分配单元,还用于:在工作流的第二阶段中,若能够分配给工作流的第二阶段中的作业的资源充足,使用能够分配给工作流的第二阶段中的作业的资源为工作流的
第二阶段中的作业分配资源。
29.可选地,共享组的各个用户基于预设比例分享共享组分配到的资源。
30.可选地,共享组提交的作业的运行时长小于等于工作流中各个计算阶段内的作业的运行时长。
31.可选地,资源包括但不限于:中央处理器核、图形处理器、许可证资源。
32.可选地,分配单元,还用于:在有多个工作流需要资源调度的情况下,为多个工作流设置资源调度的优先级。
33.可选地,
34.可选地,
35.第三方面,本技术实施例提供了一种装置,该装置包括处理器和存储器,其中,存储器用于存储程序指令;所述处理器调用存储器中的程序指令,使得装置执行第一方面或者第一方面的任一可能的实现方式中的方法。
36.第四方面,本技术实施例提供了一种计算机可读存储介质,包括计算机指令,当所述计算机指令在被处理器运行时,实现上述第一方面或者第一方面的任一可能的实现方式中的方法。
37.第五方面,本技术实施例提供了一种计算机程序产品,当该计算机程序产品被处理器执行时,实现上述第一方面或者第一方面的任一可能的实施例中的所述方法。该计算机程序产品,例如可以为一个软件安装包,在需要使用上述第一方面的任一种可能的设计提供的方法的情况下,可以下载该计算机程序产品并在处理器上执行该计算机程序产品,以实现第一方面或者第一方面的任一可能的实施例中的所述方法。
附图说明
38.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1是一种工作流的示意图;
40.图2是本技术实施例提供的一种系统架构示意图;
41.图3a是本技术实施例提供的一种工作流的调度示意图;
42.图3b是本技术实施例提供的又一种工作流的调度示意图;
43.图4是本技术实施例提供的一种资源调度方法的流程图;
44.图5是本技术实施例提供的又一种资源调度方法的流程图;
45.图6是本技术实施例提供的又一种资源调度方法的流程图;
46.图7是本技术实施例提供的一种装置的功能结构示意图;
47.图8是本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
48.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。本技术实施例中的说明书和权利要求书中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
49.高性能计算(high performance computing,hpc)是指使用多处理器或者互联的多个计算机的计算机集群系统,从而具有强大的综合计算能力来解决大型计算问题,通常也可以称为高性能计算集群(下述简称hpc集群)。基于hpc集群分配和调度工作流中的各个作业所需的资源,能大大提高工作流的执行速度。
50.工作流由具有依赖关系的多个阶段的作业组成,其中,每个阶段有一个或多个作业。这种依赖关系可以是不同阶段的作业之间的顺序依赖,例如,后一阶段内的作业的执行依赖于前一阶段内的作业的结束,这种依赖关系也可以是同一阶段内的各个作业的并行执行。
51.参见图1,图1是一种工作流的示意图,在图1中,可以看出,工作流由四个计算阶段内的作业组成,其中,箭头用于连接两个不同的计算阶段,阶段1内的作业有作业1,阶段2内的作业有作业2、作业3和作业4,阶段3内的作业有作业5和作业6,阶段4内的作业有作业7。在该工作流中,先执行阶段1内的作业1,阶段2内的作业的执行依赖作业1的结束,阶段3内的作业的执行依赖阶段2内的作业的结束,阶段4内的作业的执行依赖阶段3内的作业的结束。作业n[m]表示作业n实际需要或实际使用的资源数量为m,例如,作业1[2]表示作业1实际需要的资源数量为2。工作流中同一阶段内的多个作业可以是并行执行的。
[0052]
一般地,在高性能计算中,工作流中每个作业的执行会根据该作业是否具有运行所需的各种资源来决定是否调度和启动,由此可以看出,工作流中每个作业的调度和执行是孤立的过程,在有依赖关系的工作流执行过程中,工作流中的部分作业会出现因为资源不足而处于等待状态,例如,在图1中,在作业1执行完成后,由于阶段2内的作业所需的资源不够导致作业2和作业3处于等待状态,导致工作流的执行断断续续、不能按需按时执行。
[0053]
另外,在使用多个工作流提交作业时,例如,商业工作流和科研工作流,会分别部署不同的集群环境支持多个工作流的执行以防止工作流发生资源抢占,但同时也会导致集群资源的利用率降低。
[0054]
针对上述问题,本技术实施例提出一种资源调度方法,将工作流执行所需的资源作为一个整体进行调度可以有效克服工作流中部分作业因资源等待导致的耗时,将工作流优先级策略应用于多个工作流或者工作流与普通作业混合的场景下,能尽可能地使得工作流的执行顺利且不卡顿,还提高了资源的利用率。
[0055]
下面将结合附图,对本技术中的技术方案进行描述。
[0056]
参见图2,图2是本技术实施例提供的一种系统架构示意图,该系统用于为工作流和工作流以外的作业提供资源调度。该系统至少包括调度器110、高性能计算集群120和多个用户130。其中,多个用户130可通过网络与调度器110连接,高性能计算集群120通过有线或无线的方式与调度器110连接,调度器110可用于管理高性能计算集群120。
[0057]
调度器110包括操作系统111和硬件112,操作系统111可以是嵌入式操作系统、类unix操作系统等等,例如,嵌入式操作系统可以是vxworks、ecos、symbian os及palm os,图形操作系统可以是microsoft windows以及macos x等等,类unix操作系统可以是system v、bsd与linux等等。硬件112可以包括处理器、内存以及物理网卡等等。
[0058]
高性能计算集群120可提供资源池,该资源池可以包括计算资源池、存储资源池等。示例性地,计算资源池可以包括多个处理器,处理器可以是中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)等,存储资源池可
以包括多个硬盘等,多个硬盘可以采用同构结构,也可以采用异构结构,硬盘可以包括机械硬盘(hard disk drive,hdd)、固态硬盘(solid state drive,sdd)、混合硬盘(hybrid hard drive,hdd)等等。
[0059]
多个用户130可组成用户组。用户130可向调度器110提交至少一个工作流和普通作业,调度器110根据工作流中各个阶段所需的资源数量确定该工作流的最大预留资源,并从高性能计算集群120提供的资源池中分配最大预留资源给工作流内的作业进行计算。在一些可能的实施例中,在工作流内的执行过程中,若最大预留资源有剩余,则可以将剩余的资源借出给工作流以外的普通作业,由此,不仅能使得工作流内的作业顺利流畅地执行,还能提高资源的利用率。
[0060]
需要说明的是,图2仅为示例性架构图,但不限定图2所示系统包括的网元的数量。虽然图2未示出,但除图2所示的功能实体外,图2还可以包括其他功能实体。另外,本技术实施例提供的方法可以应用于图2所示的通信系统,当然本技术实施例提供的方法也可以适用其他通信系统,本技术实施例对此不予限制。
[0061]
参见图3a,图3a是本技术实施例提供的一种资源调度场景示意图。图3a示例性地给出了一种工作流与普通作业混合调度的场景,其中,工作流由作业8、作业9和作业10组成,作业8先于作业9执行,作业9先于作业10执行,普通作业为作业11。在高性能计算集群调度环境下,工作流的调度优先级高于普通作业的调度优先级,工作流的资源调度以工作流为单位,普通作业的资源调度以作业为单位。在一些可能的实施例中,分配给工作流的资源还可以共享给普通作业使用,以提高资源的使用率。
[0062]
参见图3b,图3b是本技术实施例提供的又一种资源调度场景示意图。图3b示例性地给出了一种多个工作流与普通作业混合调度的场景,其中,作业8、作业9和作业10组成工作流1,作业12、作业13和作业14组成工作流2,作业11为普通作业。在高性能计算集群调度环境下,工作流1的调度优先级高于工作流2的调度优先级,工作流2的调度优先级高于普通作业的调度优先级,工作流1以及工作流2的资源调度以工作流为单位,普通作业的资源调度以作业为单位,由此,可确保工作流1的资源分配优先于工作流2和普通作业的资源分配,工作流2的资源分配优先于普通作业的资源分配。在一些可能的实施例中,分配给工作流1或者工作流2的资源还可以共享给普通作业使用,有利于提高资源的使用率。
[0063]
参见图4,图4是本技术实施例提供的一种资源调度方法的流程图,应用于调度器,可以实现工作流中各个作业顺利流畅地执行。该方法包括但不限于以下步骤:
[0064]
s101、确定工作流的最大资源预留值以及为工作流分配预留资源。
[0065]
在本技术实施例中,工作流包括多个阶段内的作业,每个阶段内的作业包括至少一个作业,同一阶段内的作业并行执行,不同阶段的作业串行执行。需要说明的是,工作流可以是用户预先提交至调度器的。
[0066]
一具体实施中,根据工作流中各个阶段所需的资源数量确定工作流的最大资源预留值。具体地,检测工作流中各个阶段所需的资源数量,将工作流的各个阶段中所需的资源数量的最大值作为该工作流的最大资源预留值,并为该工作流分配预留资源,其中,预留资源的数量为最大资源预留值。
[0067]
其中,工作流中某一阶段所需的资源数量为该阶段内各个作业实际需要(或者实际使用)的资源数量之和。需要说明的是,作业实际需要的资源为支持该作业运行实际需要
的资源,作业实际需要的资源可以是cpu核、gpu、许可证资源等,本技术实施例不做具体限定。
[0068]
例如,以上述图1所示的工作流为例说明工作流的最大预留资源值的确定过程,由图1可以看出,阶段1所需的资源数量为2,阶段2所需的资源数量为6(即2 3 1),阶段3所需的资源数量为6(即5 1),阶段4所需的资源数量为8,因此,可知该工作流的四个阶段中所需的资源数量的最大值为8,故确定图1所示的工作流的最大资源预留值为8。
[0069]
在一些可能的实施例中,用户可以通过程序定义工作流中具有依赖关系的各阶段的作业以生成工作流。示例性地,可通过阶段字段引入依赖属性,例如,workflow.step[i](i≥1),表示定义工作流的阶段i,进一步地,再定义工作流中各个阶段内的作业,workflow.step[i].job[j,mj](i≥1,j≥1),表示工作流的阶段i的作业j需要的数量为mj。另一具体实施中,每个作业的格式也可以定义为job[i,j,mj],其表示阶段i内的作业j需要的资源数量为mj,本技术实施例不做具体限定。
[0070]
在一些可能的实施例中,还可以为用户提供一个可视化界面供用户生成工作流,用户可以通过拖拉相应地图标生成如上述图1所示的工作流,具体地,还可以编辑各个阶段内的作业的编号以及作业需要的资源数量。
[0071]
s102、使用预留资源为工作流中的各个作业分配资源。
[0072]
在本技术实施例中,根据工作流中各个阶段所需的资源数量,从预留资源中划分相应数量的资源给工作流中各个阶段的作业,使得工作流中各作业可以按时按需顺利执行,由此实现了以工作流为资源调度单位对工作流中各阶段所需的资源的动态分配。
[0073]
需要说明的是,工作流中各阶段的作业的执行是存在依赖关系的,例如,后一阶段内的作业的执行依赖于前一阶段内的作业的结束。可以理解,当工作流中的第一阶段内的作业开始执行时,预留资源中的部分资源会被占用,若工作流中第一阶段的作业执行结束后,该阶段内的作业占用的资源会被释放。
[0074]
例如,以图1所示的工作流为例,基于上述s101可以确定图1所示的工作流的最大资源预留值为8,资源以cpu核core为例,但并不限定资源仅为cpu核。具体地,预先为该工作流预留了8个cpu核,首先为阶段1内的作业1分配2个cpu核支持作业1的运行,则当前还剩下6个cpu核,待作业1运行结束后,作业1占用的2个cpu核被释放,则当前可使用的cpu核的数量恢复为8;为阶段2内的作业分配6个cpu核以支持阶段2内各作业的运行,其中,作业2获得2个cpu核、作业3获得3个cpu核以及作业4获得1个cpu核,则当前还剩余2个cpu核,待阶段2内的作业运行结束后,阶段2内各作业占用的cpu核被释放,则可使用的cpu核的数量恢复为8;然后为阶段3内的作业分配6个cpu核以支持阶段3内各作业的运行,其中,作业5获得5个cpu核以及作业6获得1个cpu核,待阶段2内的作业运行结束后,阶段2内各作业占用的cpu核被释放;最后,为阶段4内的作业7分配8个cpu核以支持作业7的运行,待作业7执行结束,则图1所示的工作流执行完毕。由此看出,设置最大资源预留值能有效节省工作流中的各作业等待资源补充到位所消耗的时间,使得工作流中的各作业可以顺利流畅地执行。
[0075]
一具体实施中,在工作流的数量为多个的情况下,在资源充足时,多个工作流中的每个工作流可以依据上述方法确定该工作流的最大资源预留值以及基于最大资源预留值进行资源分配。在一些可能的实施例中,若资源的数量有限时,还可以就设置各个工作流的调度优先级,并基于调度优先级从高到低的顺序对相应的工作流执行资源分配。例如,上述
图3b中工作流1的调度优先级高于工作流2的调度优先级,在此情况下,优先将资源分配给工作流1以确保工作流1的顺利执行,待工作流1执行结束后,再将资源分配给工作流2以确保工作流2的顺利执行。
[0076]
可以看到,实施例本技术实施例,以工作流作为资源调度的单位,能保证提供给工作流中各作业的资源充足,有效解决了工作流中的作业因资源不足导致的工作流执行断断续续的问题,实现了流畅、高效地执行工作流。
[0077]
在一些可能的实施例中,基于工作流的最大资源预留值为工作流分配资源,可以使得工作流中各个计算阶段的作业能够流畅顺利的执行。由于工作流中某些计算阶段实际需要的资源数量小于工作流的最大资源预留值,在此情况下,可以根据资源分配信息将工作流中各计算阶段中作业未使用的资源共享给该工作流以外的普通作业使用,由此,可以提高资源的利用效率。
[0078]
参见图5,图5是本技术实施例提供的又一种资源调度方法的示意图,图5实施例可以是对图4实施例的补充,也可以独立于图4实施例。该方法包括但不限于以下步骤:
[0079]
s201、确定工作流的最大资源预留值以及为工作流分配预留资源。本步骤具体参考图4实施例中s101的相关叙述,在此不再赘述。
[0080]
s202、获取资源分配信息,并确定共享用户组。
[0081]
在本技术实施例中,资源分配信息用于指示工作流与共享用户组之间的资源调度策略,资源分配信息包括工作流的标识、共享用户组中的用户的标识、工作流的调度优先级以及共享用户组的调度优先级,其中,工作流的调度优先级高于共享用户组的调度优先级,以确保工作流可以优先从预留资源中获取到资源。在一些可能的实施例中,资源分配信息还可以包括共享用户组中各用户的共享比例。需要说明的是,资源分配信息是预先配置好的。
[0082]
一具体实施中,所谓获取资源分配信息可以是从存储器中读取资源分配信息。根据资源分配信息可以确定共享用户组,共享用户组包括至少一个用户,共享用户组提交的作业是独立于工作流以外的作业。共享用户组提交的作业之间可以是相互独立的,也可以是有依赖关系的,本技术不做具体限定。需要说明的是,共享用户组提交的作业也可以称为普通作业。
[0083]
示例性地,在工作流与普通作业混合调度的场景下,资源分配信息可定义为下述配置格式:
[0084]
shares:[workflow,p0],[user,p1]
[0085]
其中,shares表示基于通用服务级别协议(general service level agreement,gsla)约定用户user在工作流workflow的执行过程中,可从工作流workflow处借到空闲资源用于作业的执行;设置优先级p0高于优先级p1,表示工作流workflow在资源调度中优先于用户user获取资源。在此情况下,共享用户组相当于仅有一个用户。
[0086]
示例性地,在有多个用户可共享工作流的资源时,这多个用户可组成共享用户组,资源分配信息还可定义为下述配置格式:
[0087]
shares:[workflow,p0],[user1,p1,x],[user1,p1,y]
[0088]
其中,shares可参考上述中shares的相关说明,工作流workflow的优先级p0分别高于用户1(user1)、用户2(user2)的优先级p1。另外,还设置了用户1和用户2之间共享工作
流的空闲资源的预设比例为x:y。例如,若工作流中某一计算阶段的空闲资源的数量为s,则用户1从工作流处可获取到的空闲资源的数量为用户2从工作流处可获取到的空闲资源的数量为在一些可能的实施例中,在有多个用户共享工作流的空闲资源的情况下,若资源分配信息中没有用户间的共享比例约定时,可以根据用户在资源分配信息中的出现顺序获取资源。
[0089]
一具体实施中,在高性能计算集群环境下,工作流workflow的作业与用户user1、user2的普通作业同时提交,基于上述资源分配信息可知通过调度申请资源执行对应的作业时,满足:(1)工作流的优先级高于共享用户组(即user1和user2)的优先级,以确保工作流优先获取到资源;(2)在工作流的执行过程中,共享用户组可从工作流处借到资源用于工作流以外的作业的执行;(3)共享用户组中的各个用户基于预设比例共享工作流借出的资源,若工作流的某个计算阶段的资源不够时,则可以强制回收历史计算阶段中借出给共享用户组的资源,以保证工作流的顺利执行。
[0090]
在一些可能的实施例中,上述资源配置信息也可以用于定义工作流与机器组,或者,工作流与队列之间的资源分配策略,具体可参考上述资源配置信息定义的工作流与用户组之间的资源分配策略,在此不再赘述。
[0091]
s203、从预留资源中划分资源1用于运行工作流的第一阶段内的作业。
[0092]
在本技术实施例中,从预留资源中划分资源1以支持工作流中第一阶段内的作业的运行,其中,资源1的数量为第一阶段内的作业实际需要的资源数量之和,第一阶段为工作流中的首个计算阶段。需要说明的是,资源1的数量小于等于最大资源预留值。
[0093]
s204、在预留资源有剩余的情况下,将资源2分配给共享用户组用于运行普通作业。
[0094]
在本技术实施例中,所谓预留资源有剩余是指资源1的数量小于预留资源的数量(即最大资源预留值),在此情况下,可以将资源2分配给或借出给共享用户组,以供共享用户组提交的普通作业使用,其中,资源2为预留资源中剩余的资源中的部分或全部,资源2的数量小于等于最大资源预留值与资源1的数量的差值。需要说明的是,资源2也可以称作工作流借出的资源。
[0095]
在一些可能的实施例中,共享用户组中的各个用户可以根据资源分配信息中的预设比例分享或划分共享用户组分配到的资源。
[0096]
需要说明的是,工作流中第一阶段内的作业运行结束后,第一阶段内的作业占用的资源1会自动释放,从而重新恢复为可使用的资源。
[0097]
一具体实施中,可以按照共享用户组中各用户在资源配置信息中出现的顺序划分共享用户组分配到的资源,例如,先出现的用户先于后出现的用户分配到该资源。另一具体实施中,可以按照预设比例将工作流借出的资源分配给共享用户组中的各个用户。
[0098]
s205、在第一阶段内的作业运行结束后,检测到第二阶段的可使用资源的数量小于第二阶段所需的资源的数量时,回收分配给共享用户组的资源的部分或全部以供第二阶段的作业使用。
[0099]
在本技术实施例中,第二阶段为工作流中第一阶段的下一个计算阶段,第二阶段内的作业的执行依赖于第一阶段内的作业的结束。第一阶段内的作业运行结束后,第一阶
段内的作业占用的资源会被释放从而恢复为可使用的资源,检测第二阶段的可使用资源的数量,第二阶段的可使用资源数量为预留资源的数量(即最大资源预留值)与资源2的数量的差值,若第二阶段的可使用资源的数量小于第二阶段所需的资源的数量时,则回收分配给共享用户组的资源的部分或全部以供第二阶段内的作业使用。
[0100]
其中,回收分配给共享用户组的资源的部分或全部是指回收s204中资源2的部分或全部,使得第二阶段的可使用资源的数量达到第二阶段所需的资源的数量。
[0101]
一具体实施中,若资源2为第一阶段中预留资源中剩余的资源的全部,即说明预留资源中的剩余资源被全部借出,在此情况下,第二阶段的可使用的资源的数量与资源1(即第一阶段所需的资源)的数量相等。
[0102]
一具体实施中,若资源2为第一阶段中预留资源中剩余的资源的部分,即说明预留资源中的剩余资源被部分借出,在此情况下,第二阶段的可使用的资源的数量为资源1的数量与预留资源中未被借出的资源的数量之和。
[0103]
一具体实施中,若共享用户组中的各个用户是基于预设比例划分资源2,则在强制回收资源2的部分时,也可以是按照该预设比例回收共享用户组中各个用户占用的资源。例如,在第一阶段借出了8个gpu核,共享用户组中的用户1和用户2按照1:1的预设比例获取相应数量的资源,即用户1和用户2分别获得4个gpu核;假设在第一阶段内的作业执行结束后需强制回收4个gpu核以支持工作流中下一阶段的作业的运行,即可以基于上述预设比例分别从用户1、用户2处各强制回收2个gpu核。
[0104]
在一些可能的实施例中,还可以基于共享用户组中的各个用户出现的先后顺序强制回收资源2的部分或全部。例如,在第一阶段借出了8个gpu核,共享用户组中的用户1和用户2一先一后分别获取4个gpu核,在需要强制回收4个gpu核时,可以先回收用户1占用的4个gpu核。
[0105]
在一些可能的实施例中,s202中的共享用户组包括至少一个提交普通作业的用户,共享用户组中的用户是根据用户历史数据确定的提交的普通作业具有较短运行时长的用户。一具体实施中,共享用户组中各用户提交的单个作业的运行时长小于该工作流中各个阶段内的作业的运行时长,由此,在普通作业使用工作流借出的资源时,若出现工作流中某一阶段的可使用资源的数量不足而执行强制回收借出的资源时,由于普通作业的运行时长较短,普通作业的运行早已结束,回收借出的资源这一操作对普通作业的运行无影响,从而避免了在执行资源强制回收操作时占用该资源的普通作业的执行被中断。
[0106]
在一些可能的实施例中,在第一阶段内的作业执行结束后,若检测到第二阶段的可使用资源的数量等于第二阶段所需的资源的数量,则直接调度该资源用于工作流中第二阶段内的作业的运行,无需回收分配给共享用户组的资源。
[0107]
在一些可能的实施例中,在第一阶段内的作业执行结束后,若检测到第二阶段的可使用资源的数量大于第二阶段所需的资源的数量,则分配相应数量的资源用于执行第二阶段内的作业,并将第二阶段的可使用资源中剩余的资源分配给共享用户组用于运行普通作业。例如,假设预留资源的数量为8,工作流的第一阶段需要的资源数量为8,而工作流的第二阶段需要的资源数量为4,可以理解,预留资源刚好足以支持第一阶段内的作业的运行,但预留资源无剩余,共享用户组在第一阶段可分配到的资源数量为0,待第一阶段内的作业运行结束后,第二阶段的可使用资源的数量为8,除了使用部分资源用于运行第二阶段
内的作业外,第二阶段的可使用资源中还剩余4个资源,则在第二阶段可分配4个资源给共享用户组。
[0108]
需要说明的是,上述仅用了工作流中的第一阶段和第二阶段作为示例,但并不限定工作流只包括两个计算阶段。对于工作流中除第一阶段以外的任一阶段,在需要执行当前阶段内的作业时,若当前阶段的可使用资源的数量小于当前阶段所需的资源的数量,则强制回收分配给共享用户组的资源的部分或全部以支持当前阶段内的作业的运行;若当前阶段的可使用资源除了用于当前阶段内的作业运行外还有剩余的资源,则当前阶段可以将剩余的资源分配给共享用户组用于普通作业的执行。
[0109]
可以看到,实施本技术实施例,以工作流整体作为资源调度的单位,能保证提供给工作流中各计算阶段内的作业的资源充足,使得工作流可以顺畅不卡顿的执行。另外,通过资源借出和资源回收的策略实现了工作流中各计算阶段所需的资源的动态分配,提高了工作流各个计算阶段的资源的利用率。
[0110]
下面以一个具体的场景说明上述方法的应用。
[0111]
基于图1所示的工作流与普通作业混合调度的场景下,参见表1,表1示出了工作流中各阶段的资源分布情况,在表1中,工作流的阶段1所需的资源数量为2,工作流的阶段2所需的资源数量为6,工作流的阶段3所需的资源数量为6,工作流的阶段4所需的资源数量为8。表1中还罗列了工作流中各个阶段的可共享资源数量以及强制回收资源数量,具体可参考下述介绍。
[0112]
表1
[0113]
工作流的计算阶段所需的资源数量可共享资源数量强制回收资源数量阶段1260阶段2624阶段3620阶段4802
[0114]
下面结合图1和表1具体说明工作流的执行过程:
[0115]
a1、调度器解析工作流各个阶段所需的资源数量,确定该工作流的最大资源预留值,即最大资源预留值为8,资源以gpu为例,因此,调度器分配8个gpu给该工作流。
[0116]
a2、首先执行阶段1内的作业1:阶段1需要2个gpu用于执行作业1,则剩余6个空闲的gpu,根据资源分配信息,可共享或借出6个gpu供该工作流以外的普通作业使用。在资源分配信息包括共享比例的情况下,可基于共享比例为用户组的各个用户划分这6个gpu。
[0117]
a3、执行阶段2内的作业2、作业3和作业4:已知阶段2所需的资源数量为6,而当前阶段2的可使用资源的数量为2(即阶段1内的作业运行结束后释放了2个gpu),其小于阶段2所需的资源数量,因此,从阶段1借出的6个gpu中强制回收4个gpu以确保阶段2内的各个作业的顺畅执行,则在阶段2仍有2个gpu处于借出状态。
[0118]
a4、执行阶段3内的作业5和作业6:已知阶段3所需的资源数量为6,而当前阶段3的可使用资源的数量为6(即阶段2内的作业运行结束后释放了6个gpu),其等于阶段3所需的资源数量,因此,阶段3的可使用资源足够支持阶段3内各个作业的顺畅执行,无需强制回收历史计算阶段借出的资源,且在阶段3仍有2个gpu处于借出状态。
[0119]
a5、执行阶段4内的作业4:已知阶段4所需的资源数量为8,而当前阶段4的可使用
资源的数量为6(即阶段3内的作业运行结束后释放了6个gpu),其小于阶段4所需的资源数量,因此,强制回收历史计算阶段借出的资源以确保阶段4内的作业的顺畅执行,也就是说,借出的2个gpu被全部回收使得当前阶段4可使用的资源数量8,恰好支持阶段4的作业的正常运行,且当前阶段4的可共享资源数量为0。待阶段4内的作业7执行完毕,整个工作流的执行完成。
[0120]
参见图6,图6是本技术实施例提供的又一种资源调度方法的流程图,图6可以独立于图4和图5实施例,也可以是对图4和图5实施例的补充。该方法包括但不限于以下步骤:
[0121]
s301、根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源。
[0122]
在本技术实施例中,根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源。其中,工作流的各个计算阶段中每个计算阶段所需的资源数量为该计算阶段中各个作业实际使用的资源数量之和。需要说明的是,第一资源相当于前述图4或图5实施例中的预留资源。
[0123]
工作流由多个计算阶段内的作业组成,每个计算阶段包括一个或多个作业。多个计算阶段内的作业的执行具有顺序依赖,例如,不同计算阶段内的作业串行执行,同一计算阶段内的作业并行执行。一具体实施中,工作流的前一个计算阶段内的作业执行结束后,下一个计算阶段内的作业才执行。一具体实施中,在某计算阶段包括多个作业时,该计算阶段的多个作业并行执行。
[0124]
一具体实施中,根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源具体可以是:根据工作流的各个计算阶段所需的资源数量中的最大资源数量为工作流分配第一资源,其中,第一资源的数量大于或者等于最大资源数量。
[0125]
例如,工作流包括阶段1和阶段2,其中,阶段1所需的资源数量为4,阶段2所需的资源数量为6,已知该工作流的最大资源数量为6,一具体实施中,可以确定为工作流分配的第一资源的数量为6,另一具体实施中,为工作流分配的第一资源的数量也可以为8,本技术实施例不做具体限定。
[0126]
一具体实施中,根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源具体可以是:根据工作流的各个计算阶段所需的资源数量之和为工作流分配第一资源,其中,第一资源的数量大于或者等于工作流的各个计算阶段所需的资源数量之和。
[0127]
例如,工作流包括阶段1和阶段2,其中,阶段1所需的资源数量为4,阶段2所需的资源数量为6,已知该工作流的各个计算阶段所需的资源数量之和为10,一具体实施中,可以确定为工作流分配的第一资源的数量为10,另一具体实施中,为工作流分配的第一资源的数量也可以为11,本技术实施例不做具体限定。
[0128]
一具体实施中,上述资源包括但不限于:中央处理器核、图形处理器、许可证资源等。
[0129]
一具体实施中,在有多个工作流的情况下,可以基于多个工作流中每个工作流的优先级依次为每个工作流分配第一资源,其中,每个工作流分配到的第一资源是根据该工作流的各个计算阶段所需的资源数量确定的。
[0130]
s302、使用第一资源为工作流中的各个计算阶段分配资源。
[0131]
一具体实施中,使用第一资源为工作流中的各个计算阶段分配资源。例如,使用第一资源为工作流的第一阶段分配资源以支持第一阶段内的作业的运行,待第一阶段内的作
业执行结束后,释放第一阶段内的作业占用的资源,然后使用第一资源为工作流的第二阶段分配资源用于运行第二阶段内的作业,以此类推,直至工作流的各个计算阶段内的作业均执行完成。需要说明的是,此实施例与上述图4实施例对应。
[0132]
一具体实施中,使用第一资源为工作流中的各个计算阶段分配资源具体是:在工作流的第一阶段中,使用第一资源为工作流的第一阶段中的作业分配资源,使用第一资源中的剩余资源为共享组分配资源,其中,工作流中的作业之间具有依赖关系,共享组提交的作业为独立于工作流以外的作业。需要说明的是,共享组可以是上述图5实施例中的共享用户组,也可以是图5实施例中叙述的机器组或队列。此实施方式与图5实施例中的s203和s204对应,资源2即为第一资源中的剩余资源中的部分或全部。
[0133]
其中,工作流中的作业之间的依赖关系包括工作流的不同计算阶段内的作业串行执行,即下一计算阶段内的作业的执行依赖于上一计算阶段内的作业执行结束;以及同一计算阶段内的各个作业并行执行。
[0134]
共享组提交的作业是独立于工作流以外的作业。共享组提交的作业之间例如,可以是相互独立的,也可以是有依赖关系的,本技术实施例不做具体限定。需要说明的是,共享组提交的作业也可以称作普通作业。
[0135]
一具体实施中,该方法还包括:在工作流的第二阶段中,第二阶段为第一阶段的下一阶段,若能够分配给工作流的第二阶段中的作业的资源不足,回收分配给共享组的资源中的部分或者全部,其中,能够分配给工作流的第二阶段中的作业的资源为第一资源减去分配给共享组的资源;使用能够分配给工作流的第二阶段中的作业的资源以及回收的资源为工作流的第二阶段中的作业分配资源。需要说明的是,此实施方式与图5实施例中的s205对应,能够分配给工作流的第二阶段中的作业的资源相当于图5实施例中第二阶段的可使用资源。
[0136]
一具体实施中,该方法还包括:在工作流的第二阶段中,若能够分配给工作流的第二阶段中的作业的资源充足,使用能够分配给工作流的第二阶段中的作业的资源为工作流的第二阶段中的作业分配资源。
[0137]
一具体实施中,共享组的各个用户基于预设比例分享共享组分配到的资源。需要说明的是,设置预设比例可以使得共享组的各个用户(或者机器、队列等)分配到的资源数量可配置。以共享组包括至少一个用户为例,在共享组的某些用户提交的作业比较紧急时,可以将预设比例中该用户对应的比例设置的较高,可以使得该用户获取较充足的资源确保作业的顺利执行。
[0138]
一具体实施中,共享组提交的作业的运行时长小于等于工作流中各个计算阶段内的作业的运行时长。需要说明的是,普通作业的运行时长小于等于工作流中各个计算阶段内的作业的运行时长,使得在强制回收分配给共享组的资源时,可避免占用该资源的普通作业的执行被打断。
[0139]
一具体实施中,上述资源包括但不限于:中央处理器核、图形处理器、许可证资源。
[0140]
一具体实施中,在有多个工作流需要资源调度的情况下,为这多个工作流设置资源调度的优先级。
[0141]
可以看到,实施本技术实施例,以工作流整体作为资源调度的单位,能保证提供给工作流中各计算阶段内的作业的资源充足,使得工作流可以顺畅不卡顿的执行。另外,通过
资源借出和资源强制回收的策略实现了工作流中各计算阶段所需的资源的动态分配,提高了工作流各个计算阶段的资源的利用率。
[0142]
参见图7,图7是本技术实施例提供的一种装置的功能结构示意图,装置30包括计算单元310和分配单元312。该装置30可以通过硬件、软件或者软硬件结合的方式来实现。
[0143]
其中,计算单元310,用于根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源;分配单元312,用于使用第一资源为所述工作流中的各个计算阶段分配资源。
[0144]
该装置30的各功能模块可用于实现图6实施例所描述的方法。在图6实施例中,计算单元310可用于执行s301,分配单元312可用于执行s302。该装置30的各功能模块还可用于实现图4和图5实施例所描述的方法,为了说明书的简洁,在此不再赘述。
[0145]
本技术还提供一种计算设备。如图8所示,计算设备40包括:处理器401、通信接口402、存储器403和总线404。处理器401、存储器403和通信接口402之间通过总线404通信。计算设备40可以是服务器或计算设备等。应理解,本技术不限定计算设备40中的处理器、存储器的个数。
[0146]
总线404可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线404可包括在计算设备40各个部件(例如,存储器403、处理器401、通信接口402)之间传送信息的通路。
[0147]
处理器401可以包括中央处理器(central processing unit,cpu)、微处理器(micro processor,mp)或者数字信号处理器(digital signal processor,dsp)等处理器中的任意一种或多种。
[0148]
存储器403用于提供存储空间,存储空间中可以存储操作系统和计算机程序等数据。存储器403可以是随机存取存储器(random access memory,ram)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、只读存储器(read-only memory,rom),或便携式只读存储器(compact disc read memory,cd-rom)等中的一种或者多种的组合。存储器403可以单独存在,也可以集成于处理器401内部。
[0149]
通信接口402可用于为处理器401提供信息输入或输出。或者可替换的,该通信接口402可用于接收外部发送的数据和/或向外部发送数据,可以为包括诸如以太网电缆等的有线链路接口,也可以是无线链路(如wi-fi、蓝牙、通用无线传输等)接口。或者可替换的,通信接口402还可以包括与接口耦合的发射器(如射频发射器、天线等),或者接收器等。
[0150]
该计算设备40中的处理器401用于读取存储器403中存储的计算机程序,用于执行前述的资源调度方法,例如图4、图5或图6所描述的方法。
[0151]
在一种可能的设计方式中,计算设备40可为执行图4或图5或图6所示方法的执行主体(例如,调度器)中的一个或多个模块,该处理器401可用于读取存储器中存储的一个或多个计算机程序,用于执行以下操作:
[0152]
通过计算单元310根据工作流的各个计算阶段所需的资源数量为工作流分配第一资源;使用第一资源为工作流中的各个计算阶段分配资源。
[0153]
在本文上述的实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
[0154]
需要说明的是,本领域普通技术人员可以看到上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-only memory,rom)、随机存储器(random access memory,ram)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子抹除式可复写只读存储(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
[0155]
本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机程序产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是个人计算机,服务器,或者网络设备、机器人、单片机、芯片、机器人等)执行本技术各个实施例所述方法的全部或部分步骤。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献