CN116724294A - 一种任务分配方法及装置 - Google Patents
一种任务分配方法及装置 Download PDFInfo
- Publication number
- CN116724294A CN116724294A CN202180087726.1A CN202180087726A CN116724294A CN 116724294 A CN116724294 A CN 116724294A CN 202180087726 A CN202180087726 A CN 202180087726A CN 116724294 A CN116724294 A CN 116724294A
- Authority
- CN
- China
- Prior art keywords
- task
- priority
- resource
- information
- allocation device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000012545 processing Methods 0.000 claims abstract description 84
- 230000015654 memory Effects 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 12
- 239000003999 initiator Substances 0.000 description 60
- 238000013461 design Methods 0.000 description 33
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 13
- 238000013468 resource allocation Methods 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 229910000078 germane Inorganic materials 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种任务分配方法及装置,涉及计算机技术领域。该方法包括:任务分配装置可获取第一任务的第一锁定信息。任务分配装置可根据第一锁定信息确定第一资源的状态为第一锁定状态,第一资源为用于处理第一任务的资源,其中,第一锁定状态为不允许分配第二任务的状态,第二任务的优先级低于或等于所述第一任务的优先级。在第一资源执行第一任务后,可通过第一锁定信息将第一资源锁定,使得任务分配装置不再将优先级低于或等于第一任务的资源分配至第一资源,以便后续优先级不低于第一任务的优先级的其他任务到达任务分配装置时,有足够的资源处理,因此可以更加及时地处理高优先级的任务。
Description
本申请涉及计算机技术领域,特别涉及一种任务分配方法及装置。
近年来,人工智能技术快速发展,许多人工智能技术的创新应用正快速进入我们的视野:自动驾驶、驾驶辅助、智慧医疗、可穿戴设备、手机终端、工业机器人、服务机器人、智能金融、智慧零售等等。这些创新无不与深度神经网络技术密切相关。
深度神经网络(deep neural network,DNN)模型可以用于大规模数据的预测业务。这类业务请求并发高,实时性要求高,计算量大,通常利用异构硬件对业务请求进行批处理。同时,随着神经网络技术应用场景的不断拓宽,混合关键业务场景越来越常见。所谓混合关键业务即多个业务并行运行,但不同业务的优先级可能不一样,比如不同业务分别的关键程度和/或业务的实时性要求不同,则业务的优先级不同。
目前的任务分配方式下,不能有效地按照优先级将任务分配到适合的处理资源,可能导致一些高优先级的业务无法得到及时处理或优先处理,有待改进。
发明内容
本申请提供一种任务分配方法及装置,用以优化任务分配方式以满足不同业务的优先级需求。
第一方面,本申请实施例提供了一种任务分配方法。该方法可由任务分配置实施,任务分配装置可以是计算机系统,该计算机系统可以是该方法所应用的具有多个执行器的计算机系统。
以执行主体是任务分配装置实施为例,该方法包括:
任务分配装置可获取第一任务的第一锁定信息。任务分配装置可根据第一锁定信息确定第一资源的状态为第一锁定状态,第一资源为用于处理第一任务的资源,其中,第一锁定状态为不允许分配第二任务的状态,第二任务的优先级低于或等于所述第一任务的优先级。
通过上述方法,在第一资源执行第一任务后,可通过第一锁定信息将第一资源锁定,使得任务分配装置不再将优先级低于或等于第一任务的资源分配至第一资源,以便后续优先级不低于第一任务的优先级的其他任务到达任务分配装置时,有足够的资源处理,因此可以更加及时地处理高优先级的任务。
在一种可能的设计中,任务分配装置还可从满足第一条件的资源中确定所述第一资源,所述第一条件包括以下中的至少一个:资源的优先级不低于所述第一任务的优先级;或者,资源所属资源池的优先级不低于第一任务的优先级;或者,所述资源的状态不包括第二锁定状态,所述第二锁定状态为不允许分配第三任务的状态,第三任务的优先级不低于第一优先级,所述第一优先级高于所述第一任务的优先级。
采用该设计,能够根据第一任务的优先级进一步确保第一任务得以及时被处理。
在一种可能的设计中,所述任务分配装置还可获取所述资源的优先级信息。
在一种可能的设计中,所述任务分配装置通过硬连线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不低于优先级阈值;和/或,所述任务分配装置通过系统总线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不高于优先级阈值。
采用该设计,能够令优先级不低于优先级阈值的第一任务的数据通过硬连线传输,进一步确保第一任务得以及时被处理。
在一种可能的设计中,所述任务分配装置还可通知所述第一资源停止第四任务的处理并存储所述第四任务的上下文,所述第四任务的上下文用于恢复所述第四任务的处理。
采用该设计,可以保证在资源饱和场景下,不用事先预留资源,也可以在高优先级业务流发起任务请求时及时响应,确保高优先级任务的及时处理,从而保障了资源的利用率和高优先级业务流实时性的平衡。
在一种可能的设计中,在所述第一任务完成后,所述任务分配装置还可指示所述第一资源根据所述上下文恢复所述第四任务的处理。
在一种可能的设计中,所述任务分配装置还可获取所述第一任务的描述信息,所述描述信息中包括第一资源池的标识,并从所述第一资源池中确定所述第一资源。
采用该设计,可以根据第一任务的描述信息中的资源池标识,指示任务对应的资源池,其中,不同资源池之间的资源相对独立。在多个同等优先级的业务并行运行的场景下,可以通过任务的资源池信息将不同的较高优先级任务指定到不同的资源池中,从而由不同资源池的资源并行处理高优先级任务,利用该机制可保证这些高优先级业务之间不会相互影响和冲突,因此确保各个高优先级任务都能够及时执行。
在一种可能的设计中,所述任务分配装置还可获取所述第一任务的优先级信息。
第二方面,本申请实施例提供了一种任务分配装置,可以应用于具有多个处理器核心的计算机系统,该任务分配装置具体可以实现上述第一方面中任务分配方法行为的功能。该任务分配装置可以为计算机系统中的硬件或软件单元,可以包括至少一个模块,该至少一个模块用于实现上述第一方面及其任一可能的设计所述的任务分配的方法。
例如,该任务分配装置可包括接口模块和处理模块。
接口模块可用于获取第一任务的第一锁定信息。处理模块可用于根据所述第一锁定信息确定第一资源的状态为第一锁定状态,所述第一资源为用于处理所述第一任务的资源,其中,所述第一锁定状态为不允许分配第二任务的状态,第二任务的优先级低于或等于所述第一任务的优先级。
在一种可能的设计中,所述处理模块还可用于:从满足第一条件的资源中确定所述第一资源,所述第一条件包括以下中的至少一个:所述资源的优先级不低于所述第一任务的优先级;或者,所述资源所属资源池的优先级不低于第一任务的优先级;或者,所述资源的状态不包括第二锁定状态,所述第二锁定状态为不允许分配第三任务的状态,第三任务的优先级不低于第一优先级,所述第一优先级高于所述第一任务的优先级。
在一种可能的设计中,所述处理模块还可用于:获取所述资源的优先级信息。
在一种可能的设计中,所述接口模块还可用于:所述任务分配装置通过硬连线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不低于优先级阈值;和/或,所述任务分配装置通过系统总线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不高于优先级阈值。
在一种可能的设计中,所述处理模块还可用于:通知所述第一资源停止第四任务的处理并存储所述第四任务的上下文,所述第四任务的上下文用于恢复所述第四任务的处理。
在一种可能的设计中,在所述第一任务完成后,所述处理模块还可用于:指示所述第一资源根据所述上下文恢复所述第四任务的处理。
在一种可能的设计中,所述接口模块还可用于:所述任务分配装置获取所述第一任务的描述信息,所述描述信息中包括第一资源池的标识。所述处理模块还用于:所述任务分配装置从所述第一资源池中确定所述第一资源。
在一种可能的设计中,所述接口模块还可用于:获取所述第一任务的优先级信息。
第三方面,本申请实施例提供了一种任务分配装置,包括至少一个处理器,所述至少一个处理器与至少一个存储器耦合:所述至少一个处理器,用于执行所述至少一个存储器中存储的计算机程序或指令,以使得所述装置执行上述第一方面及其任一可能的设计中的方法。可选地,该装置还包括通信接口,处理器与通信接口耦合。该通信接口可以是收发器或输入/输出接口;当该装置为网络设备中包含的芯片时,该通信接口可以是芯片的输入/输出接口。可选地,收发器可以为收发电路,输入/输出接口可以是输入/输出电路。该任务分配装置可通过计算机系统实现。
第四方面,本申请实施例提供一种计算设备,包括处理器和存储器,所述处理器包括多个处理器核心;所述存储器,用于存储计算机程序或指令;所述处理器,用于执行计算机程序或指令,实现上述第一方面及其任一可能的设计所述的任务分配方法。
第五方面,本申请实施例提供了一种可读存储介质,用于存储指令,当所述指令被执行时,使上述第一方面及其任一可能的设计所述的方法被实现。
第六方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面及其任一可能的设计所述的方法。
第七方面,本申请实施例提供一种芯片系统,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,该芯片系统还可包括接口电路,所述接口电路用于接收程序或指令并传输至处理器;当所述程序或指令被所述处理器执行时,使得该芯片系统实现上述第一方面及其任一可能的设计中的方法。
可选地,该芯片系统中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器(read-only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
本申请在上述各方面提供的实现的基础上,还可以进行进一步组合以提供更多实现。
以上第二方面至第七方面及其任一可能的设计的有益效果可参见第一方面及其任一可能的设计中的有益效果。
图1为任务的突发请求的时序结构示意图;
图2为一种分配流程的示意图;
图3为本申请实施例提供的一种计算机系统的示意图;
图4为本申请实施例提供的一种任务下发过程的信号示意图;
图5为本申请实施例提供的一种描述信息的结构示意图;
图6为本申请实施例提供的一种任务分配方法的流程示意图;
图7为本申请实施例提供的另一种任务分配方法的流程示意图;
图8为本申请实施例提供的另一种任务分配方法的流程示意图;
图9为本申请实施例提供的一种任务分配装置的结构示意图;
图10为本申请实施例提供的另一种任务分配装置的结构示意图。
为了解决背景技术中提及的问题,本申请实施例提供了一种任务分配方法及装置,有助于优化任务分配方式以满足不同业务的优先级需求。其中,方法和装置是基于同一技术构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)计算机系统,由硬件(子)系统和软件(子)系统组成。其中,硬件(子)系统包括由电、磁、光、机械等原理构成的各种物理部件(如处理器等)的有机组合,是系统赖以工作的实体;软件(子)系统包括各种程序和文件,用于指挥全系统按指定的要求进行工作。随着计算机技术的发展,现代计算机系统小到微型计算机和个人计算机,大到巨型计算机及其网络,形态、特性多种多样,已广泛用于科学计算、事务处理和过程控制,日益深入社会各个领域,对社会的进步产生深刻影响。
在一种实现方式中,本申请实施例中的计算机系统,可以为终端装置内的计算机系统,是一种向用户提供业务服务、具有语音或数据连通等功能的装置。终端装置又可以称为终端设备,还可以称为用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等,终端装置也可以为一种芯片。在本申请后续实施例和描述中,以终端设备为例进行具体描述。
例如,终端设备可以为具有无线连接功能的手持式设备、车载设备等。目前,一些终端设备的举例为:手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、智能销售终端(point of sale,POS)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、各类智能仪表(智能水表、智能电表、智能燃气表)等。
在另一种实现方式中,本申请实施例中的计算机系统,可以是服务器,是提供数据连通服务的设备。由于服务器可以响应终端设备的服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。在本申请中,所述服务器可以为位于数据网络(data network,DN)中的服务器,例如普通服务器,云平台中的服务器;或者为位于核心网内的多接入边缘计算(multi-access edge computing,MEC)服务器等。
本申请实施例中的计算机系统还可以是处理器、芯片或芯片系统。
本申请中,处理器可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或嵌入式神经网络处理器(neural-network processing units,NPU)等,也可以是具有处理能力的装置或芯片等,不具体限定。
本申请中,计算机系统可包括调度器(dispatcher),或称为任务布放器或仲裁器(arbitrator)等,用于执行资源分配(或称调度),即确定用于执行任务的资源。调度器可通过软件和/或硬件方式实现。例如,在通过软件实现时,调度器为操作系统的一个功能,或者是执行操作系统以外的其他软件实现的一个功能。又如,在通过硬件方式实现时,调度器包括用于资源分配的处理器,比如,该处理器可以是专门用于资源分配的资源分配处理器。在一些大型计算机系统中,有很多资源要管理和分配,如果每个处理器都要进行资源分配工作,就不能充分利用系统资源。资源分配处理器的出现就是为了提高系统吞吐量和效率。
(2)操作系统(operating system,OS),是运行在计算机系统上的最基本的系统软件,例如windows系统、Android系统、IOS系统、windows server系统、Netware系统、Unix系统、Linux系统。
(3)进程(process)和线程(tread)。进程是资源分配的最小单位,线程或称逻辑线程,是程序执行的最小单位,一个线程可包括一个或多个指令,因此每个线程的处理运行时间可能不同。也就是说,资源分配给进程,同一进程内的所有线程共享该进程的所有资源。其中,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。一个线程是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程可并行执行不同的任务。对于多核处理器,不同的核可用于执行不同的线程,因此能够实现任务的并行。本申请中,线程可理解为处理器在进行特定的数据处理中最小的流水线单元。应理解,一个核可对应于一个或多个流水线以便实现多任务并行处理。
(4)任务(task),指由软件完成的一个活动。一个业务流(或业务或应用程序)可能包含一个或多个任务。一个任务既可以是至少一个进程,也可以是至少一个线程,或者可以包括进程和线程的组合。本申请中,除特殊说明外,任务分配(或调度)是指将任务包括的进程和/或线程进行分配,线程分配是指将线程分配到处理器流水线,使得线程通过流水线被处理。例如,任务可以是读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。
在一些场景中,用于请求业务流的计算请求可能以突发(burst)形式出现。如图1所示,一组突发请求(本申请把连续出现的一组计算请求称为一组突发请求,一组突发请求可用于请求一个任务,一组突发请求可能包括多帧突发请求,任一帧突发请求可用于请求处理一个数据帧)的结构是较为随机的,一组突发请求内的任意两帧突发请求之间存在中断,导致在业务流的处理过程中资源并非持续不断地执行任务,会出现资源空闲期。一组突发请求所请求的任务可以是相同的,两组突发请求分别请求的任务可以相同或不同。另外,一组突发请求与一组突发请求之间存在较大间隔,同样会出现资源空闲期。
比如在神经网络中,矩阵运算后往往需要进行数乘或线性整流(rectified linear unit,ReLU)函数等向量运行,向量运算完又需要进行矩阵运算,这个过程中,可能由于数据搬运、或者内存访问带宽限制等原因,某类运算的计算请求以突发形式发出,导致管线(pipeline)或流水线可能会有短暂断流,出现短暂的空闲状态。
此外,一个任务的计算请求也可以是非突发的请求,且任务的数据连续而不是以多个数据帧的形式传输,因此任务的处理过程中不出现中断。
(5)计算资源或算力资源,或简称为资源,资源可以包括执行器的处理资源和/或内存资源。其中,执行器可以是用于执行计算任务的装置,例如是处理器、核、专用加速器或者是直接存储器访问(direct memory access,DMA)执行器等。
另外,在本申请中,可将计算机系统的资源划分到多个资源池(pool)。资源池为资源的集合。资源池可包括一个或多个执行器,或者说,将一个或多个执行器的资源划分为一个资源池。可选的,每个资源池包括固定的资源,资源池之间的资源不共享,也就是说,可实现资源的物理隔离,比如,不同的资源池分别包括不同的执行器。
目前,典型的混合关键业务场景包括自动驾驶、人脸识别或者工业机器人等,在这些场景下可能需要执行多种类型的业务,而每种业务的关键程度和实时性要求都可能不同。
比如在工业机器人场景中,可能会同时运行模型1和模型2,本申请中,模型可包括不同类型的业务。其中,模型1用于人的检测,确保不要撞到人。模型2用于完成指定的任务,如控制机器人按照一定的轨迹进行运动,或执行一定的动作。
显然,在以上工业机器人场景的实际运行中,模型1对实时性的要求更高,且模型1的推理结果比模2的推理结果对于业务场景的执行可靠性来说更为关键,或者说,模型2的处理过程需要更多的资源,才能确保业务整体的执行成功。因此在工业机器人场景中,调度器需要优先确保模型1可以及时获得资源,也就是模型1对于实时性的要求更高。
又比如在自动驾驶技术中,可能会同时运行神经网络模型和系统自检进程。其中,神经网络模型负责根据汽车上各传感器的输入,做出推理决策,并给执行模块下发操作指令。系统自检进程用于检查汽车各传感器和模块的状态,一旦汽车出现异常,马上启动逃生流程。同样显而易见,调度器需要优先保证系统自检进程在要求的时延内及时获得满足需求的资源,完成自检流程,避免事故。
可见,混合关键业务场景的实际应用中,可能存在一些对于实时性要求高于关键任务和关键任务以外的其他任务的紧急任务。另外,这些场景下往往也存在对于资源需求量较高、关系业务整体运行状况的关键任务,为了确保业务整体运行良好,对于关键任务的实时性要求也可能高于非关键任务,以确保足够的资源用于执行关键任务。这就要求调度器在保证多模型并行运行的资源的高效利用的基础上,还需要保证能够及时为关键任务和/或实时性要求较高的任务及时提供足够的资源。
本申请中,可通过优先级描述混合关键业务场景下任务的紧急程度和/或关键程度,比如,既是紧急任务又是关键任务的任务的优先级高于紧急任务的优先级,紧急任务的优先级高于关键任务的优先级,关键任务的优先级高于其他任务(或称普通任务)。此外,还可对根据紧急任务的紧急程度和/或关键任务的关键程度的不同进一步设置更多优先级,将最紧急和关键的业务赋予最高优先级,次紧急或次关键的业务赋予次优先级,依次类推,最不紧急和最不关键的业务赋予最低优先级。相对高优先级的任务,可以打断正在执行的低优先级业务的执行,而低优先级的任务无论在什么场景下均不能抢占高优先级的任务的执行。从而对混合关键业务场景下的任务执行过程提供了更灵活、精细的管理。
可以理解的是,属于同一个业务流的任务的优先级可以与业务流的优先级相同。比如,业务流为最高优先级的业务流,该业务流中的任务的优先级也都是最高优先级。
目前的任务分配方式中,主要是根据任务对于资源的算力需求确定任务的资源,实现 资源分配。例如在图2所示的一种分配流程中,计算图系统100通过网络114从客户端102接收图(或模型)的计算需求(可包括算力需求),计算图系统100通过执行软件将需要处理的计算图切分为可以并行执行的子图,然后把生成的子图下发给调度器108。调度器108接收到计算图执行请求后,会确认当前的处于空闲状态资源(后续可简称为空闲资源)是否满足子图的计算需求,若当前空闲资源满足需求,就下发任务到可以完成子图计算任务的相应类别加速器106(或称执行器);若当前的空闲资源不满足子图的执行需求,则等待空闲的资源满足需求后再下发。在子图计算完成后,调度器108会把该子图占用的资源释放,以便资源可用于执行其他子图的执行请求。已连接的是,计算图系统100可以并行处理来自一个或多个客户端的多个图的计算请求。当计算图系统100具有降低整个计算的端到端延迟的目标时,计算图系统100可以重新排序逻辑上独立的子图操作,优先下发同一个图或子图的任务,使同一个子图的任务在尽量短的时间内执行完。当计算图系统100具有实现较高吞吐量的目标时,系统也可以对待执行的子图任务进行重排,使可以并发执行的任务同时地执行操作,从而提高加速器利用率。
然而,在空闲资源不足以执行高优先级任务的情况下,调度器只能将高优先级任务挂起,暂不执行,直到空闲资源足够执行高优先级任务后,才能分配资源来执行该高优先级任务,这就导致高优先级任务可能无法被及时处理。其中,如果是紧急任务无法被及时处理,则可能造成一些安全隐患,如果是关键任务不能被及时处理,则可能会导致业务整体运行失常。因此,目前的任务分配方法可能导致有待改进。
本申请实施例提供一种任务分配方法,使得高优先级的任务得以被及时处理,因此能够兼顾任务对于资源的需求和优先级需求。该方法可由任务分配装置执行。任务分配装置可以是计算机系统整体,也可以是计算机系统中的部分组件。该装置可通过软件与硬件结合的方式实现或通过硬件方式实现。例如,该装置可通过执行软件的方式实现,或者可通过芯片等等硬件实现。具体来说,该任务分配置可由调度器实现,或者,可通过CPU等处理器(或处理器芯片)实现,本申请不进行具体限定。
如图3所示,一种示例性的计算机系统可包括任务发起者(host)、任务队列、调度器、资源池模块和执行器。该计算机系统可用于执行本申请实施例提供的任务分配方法。
(1)任务发起者
本申请中,任务发起者可以是应用(application,APP)(如混合关键业务)、客户端(比如运行应用的计算机系统)等软件或硬件节点。任务发起者可用于根据外部计算请求生成一个或多个任务(或子任务),并将任务下发到任务流(task stream)。本申请中,任务下发是指将任务数据和任务相关信息(包括描述信息)发送到下一调度或处理节点。
可选的,在一种可能的实现方式中,一个混合关键业务可能包括多个任务发起者,每个任务发起者可以用于发起一种任务,不同的任务发起者分别发起的任务的优先级可能不同。业务请求可来自于任务发起者的上层应用、客户端等节点,也可能是任务发起者生成的,本申请不具体限定。业务请求例如是图像推理请求。
其中,根据任务发起者所发起的任务的优先级的不同,可将业务发起者分为高优先级的任务发起者(key host)和低优先级的任务发起者(normal host)。其中,高优先级的任务发起者所发起的任务的优先级不低于优先级阈值,低优先级的任务发起者所发起的任务的优先级不高于优先级阈值。其中,优先级阈值可以是设定值。可选的,优先级阈值可以是最低优先级或最高优先级。例如在工业机器人场景中的业务包括前述模型1和模型2, 高优先级的任务发起者可发起模型1的任务,低优先级的任务发起者可发起模型2的任务。
确定高优先级的业务发起者和低优先级的业务发起者的方式例如:根据计算机系统待执行任务的优先级高低,确定至少一个最高优先级、至少一个最低优先级和至少一个中间优先级等更多类型的任务发起者,其中,每个类型的任务发起者所发起的任务的优先级相同,此时,最高优先级的任务发起者和中间优先级可视为高优先级的任务发起者,最低优先级的任务发起者可视为低优先级的任务发起者。应理解,混合关键业务场景下也可能只有最高优先级的任务发起者和最低优先级的任务发起者,此时最高优先级的任务发起者为高优先级的任务发起者,最低优先级的任务发起者为低优先级的任务发起者。
需要特别说明的是,图3中,高优先级的任务发起者(如图3所示的高优先级任务发起者#0和高优先级任务发起者#1)与任务流一一对应,使得高优先级任务能够尽快下发,以进一步提高高优先级任务的处理效率。但在实际应用也可以无此限制,一个高优先级的任务发起者或者低优先级的任务发起者可以对应一个或多个任务流,一个任务流也可以被多个任务发起者共享。
可选的,如图3所示,高优先级的任务发起者与任务流之间可通过硬连线连接(或称直连连接),而不采用总线连接,以避免在业务量饱和的情况下,系统总线拥堵所带来的不确定时延,因此能够进一步令高优先级任务得以及时处理。另外图3中,低优先级的任务发起者与任务流之间可通过系统总线连接。
本申请中,还可由任务发起者生成任务的描述信息(或描述符)。描述信息也就是对待执行任务的说明,可用于通知任务的调度需求和相关信息。可选的,任务的描述信息可包括该任务对应的资源池信息、执行器类型信息、执行次数、锁定信息、流标识或优先级信息中的至少一个。
其中,任务的描述信息中,资源池信息可包括资源池标识(pool id)(或称为资源池的标识),用于指示一个或多个资源池或资源池。可选的,任务发起者可预先获知计算机系统中的资源池的信息,并根据任务需求(包括但不限于优先级需求和/或算力需求)或资源池的优先级等信息确定待执行任务所对应的一个或多个资源池,通过资源池信息指示资源池,以便调度器从一个或多个资源池中确定处理该任务的资源。
执行器类型信息可用于指示该任务需要由哪种执行器来执行。执行器的类型可以是优先级,或其他类型。
执行次数可指示该任务需要调度几次到核执行,如果一个任务包括n个需要分别调度的子任务,则执行次数为n。可选的,可以在任务的一个或多个子任务(可以包括第一个子任务)的描述信息中携带执行次数,表示子任务的数量。如果执行次数大于1,则表示该任务后续仍然需要进行调度。
锁定信息可用于指示在执行该任务后,是否需要将资源锁定,或者说,是否需要令资源处于锁定状态。本申请中,资源锁定是指,在资源执行任务1后,不再令该资源执行(或不再向该资源分配)特定任务,直到经过特定时长或者满足解除锁定的条件的状态。其中,特定任务例如是低于该任务1的优先级的其他任务,和/或,在任务流与任务发起者之间一一对应时,特定任务包括与任务1不属于同一任务流的任务。解除锁定的条件例如收到解除锁定的信息,或任务1执行完成等。其中,可由调度器执行资源的锁定和/或解除。例如,调度器发现任务1的描述信息包括锁定信息,则不再分配特定任务到用于处理该任务的资源,比如挂起待分配的特定任务直到该资源的锁定解除,或将特定任务分配给其他资源执 行。
流标识可用于指示任务来自于哪个业务流和/或任务流。例如,流标识包括任务流标识和/或业务流标识。
优先级信息可表示任务的紧急程度和/或关键程度。
另外,描述信息中还可包括其他字段,用于携带任务数据的地址、数据大小或任务包括的指令的地址等信息。
在另一种可能的实现方式中,本申请中可以不区分高优先级的任务发起者和低优先级的任务发起者,而只是通过任务的描述信息(如优先级信息)区分任务的优先级。此时,任务发起者需要生成并向任务流发送任务的描述信息,描述信息的内容参加前述说明。示例性的,任务描述信息至少包括任务的优先级信息。此时的任务发起者与任务队列之间可采用硬连线连接。
如图4所示,为任务发起者与任务队列之间采用硬连线连接时,任务下发过程的信号示意图。其中,Vsync信号是任务的数据(或数据帧)的起始标识,由任务发起者驱动,图4中Vsync信号的拉高一拍表示一个任务的数据等待调度。host_wr_end信号由任务发起者驱动,host_wr_end信号每拉高一拍表明任务发起者向任务流压入一个有效任务(如突发请求对应的任务或非突发请求对应的任务),host_wr_end信号每拉高一拍,则任务流的尾指针加1。hwts_wr_end信号由调度器驱动,hwts_wr_end信号每拉高一拍,说明任务流中有一个任务已经调度到下游节点并执行完成,hwts_wr_end信号每拉高一拍,则任务流的头指针加1。
可选的,任务发起者在将任务下发到任务流后,还可更新任务流的非空标识,以表明该任务流中存在待执行的任务。例如,非空标识可以通过任务流的头(head)指针与尾(tail)指针相等来体现,也就是说,当任务流的头指针与尾指针相等则表示该任务流非空,也可单独通过一个标识位实现非空指示。
(2)任务流
可视为存储待执行任务的队列,例如,任务流可以是先进先出(first in first out,FIFO)缓存(buffer)、循环(ring)缓存或其他缓存。任务流中可存储任务数据。可选的,还可存储任务的描述信息。任务流存储的至少一个任务的描述信息可具有图5所示结构。其中,池标识(pool_id)字段可包括资源池信息,执行器类型(core_type)字段可包括执行器类型信息。子任务数量(subtask_num)字段可包括执行次数。执行器锁定使能(core_lock_enable)字段可携带锁定信息或解除锁定信息。任务流标识(task_tream_id)字段可携带流标识。优先级(priority_level)字段可携带任务的优先级信息。另外,图5所示的描述信息还可包括其他字段。
(3)调度器
负责扫描任务流,当某个任务流有资源请求(即任务流非空,或者说有待执行的任务需要调度)时,调度器将会解析任务流中任务的描述信息,若该任务符合下发条件则将任务下发到适合的资源池,若不符合下发条件,则将该请求挂起,直到符合下发条件时再处理。下发条件将在后文中进行具体说明。
另外,调度器可维护所有资源的状态信息,状态信息包括并不限于用于指示资源空闲或忙碌的信息、当前执行的任务来自哪个任务流的信息或者当前执行的任务的优先级信息等等。
其中,调度器可以在下发任务到相应资源时,将该资源维护成被占用状态,并记录占用该资源的业务流标识、优先级信息和/或锁定信息等等。可选的,当调度器收到资源上报的任务执行完成响应时,调度器能够根据任务的锁定信息确认该资源是否需要被锁定。若该资源需要被锁定,则调度器不释放该资源,使得该资源可用于处理该任务所属任务流中的其他任务,或用于处理优先级更高的任务;若该资源不需要被锁定,那么调度器会释放该资源,供其他任务调用。
其中,每个资源池具备资源池标识。如果任务的描述信息中携带有资源池标识,则调度器只会把任务调度到资源池标识所指定的资源池中的资源运行。
例如,在多个同等优先级的业务并行运行的场景下,可以通过任务的资源池信息将不同的高优先级任务指定到不同的资源池中,从而由不同资源池的资源并行处理高优先级任务,利用该机制可保证这些高优先级业务之间不会相互影响和冲突,因此确保各个高优先级任务都能够及时执行。
(4)资源池模块
资源池模块可用于实现资源池之间的资源隔离和管理,例如用于收集并向调度器反馈资源池中资源的状态信息,包括但不限于反馈资源的空闲状态、占用状态、当前执行的任务所属的任务流信息或任务执行完成响应,或者,资源池模块可用于执行资源所属资源池的变更等。
可选的,本申请中的资源池模块还可维护资源池的优先级,并将各个资源池的优先级上报至调度器和/或任务发起者。其中,当资源池的优先级不低于任务的优先级时,该任务可分配至该资源池中的资源,因此,可令一些资源池中的资源专门用于执行高优先级的任务,使得高优先级任务能够被这些资源及时执行。同理,资源池模块也可以针对资源设置优先级,并将各个资源的优先级上报至调度器和/或任务发起者,即使得同一个资源池中的不同资源具备不同的优先级,实现更加灵活的资源管理,和在确保存在专门用于处理高优先级任务的资源的前提下,提高任务分配过程的灵活性。
(5)执行器
本申请中,调度器可将可由资源池包括的执行器执行任务。可选的,可由执行器向调度器发送任务执行完成响应。
可选的,执行器可支持上下文切换功能(context switch)。上下文切换是指,当调度器为正在执行任务1的执行器分配了任务2时,如果指示执行器进行上下文切换,则执行器停止执行任务1,并保存任务1的虚拟内存、栈等上下文,之后加载任务2的上下文,并执行任务2,使得任务2得以被优先执行,在完成任务2后,根据任务1的上下文继续执行任务1。
下面结合介绍本申请实施例提供的任务分配方法的实现方式。应理解,本申请提供的任务分配方法可应用于混合关键业务场景,或其他需要针对多种优先级的任务进行资源分配的场景。该方法可由任务分配装置执行,任务分配装置可包括图3所示计算机系统,或包括图3所示计算机系统中的组件,如调度器等,不具体限定。
如图6所示,该方法可包括以下步骤:
S101:获取第一任务的第一锁定信息,第一锁定信息根据第一任务的优先级确定。
本申请中,第一锁定信息可根据第一任务的优先级确定。例如,第一锁定信息可由计算机系统中的任务发起者根据任务的优先级确定,或者,可由任务分配装置根据任务的优 先级确定,以指示不允许分配第一该优先级的任务。例如,第一任务的优先级可以是非最低优先级。或者,第一锁定信息可包括第一任务的优先级信息。
以上第一锁定信息可以是用于锁定第一任务的资源的信息,如一个指示信息、标志位或者是能够令任务分配装置获知该用于锁定第一任务的资源的含义的其他信息。
S102:根据第一锁定信息确定第一资源的状态为第一锁定状态,第一资源为用于处理所述第一任务的资源,第一锁定状态是不允许分配第二任务的状态,其中,第二任务的优先级低于或等于第一任务的优先级,或者,第二任务为第一任务以外的任务。
采用以上方式,在第一资源执行第一任务后,可通过第一锁定信息将第一资源锁定,使得任务分配装置不再将优先级低于或等于第一任务的资源分配至第一资源,以便后续优先级不低于第一任务的优先级的其他任务到达任务分配装置时,有足够的资源处理,因此可以更加及时地处理高优先级的任务。
另外,针对图1所示的突发请求,如果在同一任务的一组或多组突发请求内资源的空闲期采用基于中断的任务切换方式,将资源用于其他任务的处理,则在每一次资源空闲期,其他业务会被调度到该资源上。由于突发请求下资源空闲期较多,在突发请求恢复(即收到下一帧突发请求)后仍然需要将资源切换回处理突发请求对应的业务,因此引入大量的非计算开销(每次任务切换的开销处理都是微秒级的),影响总体算力资源利用率,造成额外的响应时延。
为解决该问题,在S102中,任务分配装置根据第一锁定信息锁定第一资源,使得第一资源在第一任务的突发请求的空闲期不会被切换用于其他任务的处理,在第一任务的突发请求恢复后不需要从其他任务切换回第一任务,因此可以降低切换时延,以提高第一任务处理的实时性。
可选的,如果第一任务的计算请求是突发请求,则第一锁定信息可携带于第一帧突发请求中。和/或,用于解除锁定的信息可携带在一组突发请求中的最后一帧突发请求中,例如携带在最后一帧突发请求的描述信息中。或者,用于解除锁定的信息可携带在一次空任务的描述信息中,该空任务没有实际的计算请求,任务发起者可以在任意时刻下发该空任务,用于将接触锁定的信息传递给调度器,使调度器释放被锁定的资源。
可用于请求第一任务中的最后一帧计算任务,或者可以是一个空任务。
可选的,S101所示步骤中,如果第一任务为高优先级任务,则在如图3所示的计算机系统中,任务流可通过硬连线获取第一任务的描述信息。此外,第一任务的数据也可通过硬连线发送至任务流。因此能够提高第一任务的数据和/或描述信息的传输速率。
另外,S101所示步骤中,如果第一任务为低优先级任务,则在如图3所示的计算机系统中,任务流可通过系统总线获取第一任务的描述信息。第一任务的数据也可通过系统总线发送至任务流。
此外在S101中,第一锁定信息可携带在第一任务的描述信息中。描述信息还可包括第一任务的资源池信息、执行器类型信息、执行次数、流标识或优先级信息中的至少一个。描述信息的含义可参见前述说明。
例如,第一任务的描述信息包括资源池信息,则任务分配装置可用于从资源池信息指示的资源池中确定第一资源。
可选的,在S102之前,任务分配装置可从满足下发条件(本申请中也可称为第一条件)的资源中,确定第一资源。其中,第一条件包括以下条件中的至少一个:
(1)资源的优先级不低于第一任务的优先级。
其中,任务分配装置可获取资源的优先级,并从优先级不低于第一任务的资源中选择第一资源,以确保根据资源的优先级将任务分配给专用于处理优先级不低于第一任务的优先级的资源,提高第一任务处理的实时性。可选的,资源的优先级可由资源池模块维护。
(2)资源池的优先级不低于第一任务的优先级。
同理,任务分配装置可获取资源池的优先级,并从优先级不低于第一任务的资源池中选择第一资源,以确保根据资源的优先级将任务分配给专用于处理优先级不低于第一任务的优先级的资源,提高第一任务处理的实时性。可选的,资源池的优先级可由资源池模块维护。
(3)资源的状态不包括锁定状态。
任务分配装置在确定第一资源时,还需要排除已经被锁定的资源,这些被锁定的资源不允许分配该第一任务,换句话说,任务分配装置需要从未被锁定不能执行第一任务的优先级的资源中确定第一资源。例如,这些资源可能在此前执行第一优先级的任务后处于第二锁定状态,该状态即不允许分配优先级低于第一优先级的任务的状态,该第一优先级高于第一任务的优先级,或者,该状态即不允许分配第三任务的优先级的任务的状态,该第三任务的优先级不低于第一优先级。其中,调度器在分配资源处理第三任务时,根据第三任务中的锁定信息,将该资源设置为该第二锁定状态。
以上通过举例对第一条件可能的几种实现方式进行了说明,具体实施中可按照以上几种条件的排列组合获得的条件确定第一资源。另外,不应理解本申请中选择第一资源的条件仅包括以上三个,还可按照本领域已有的资源选择方式确定第一资源,例如,考虑第一任务的计算量和/或资源的空闲率等信息确定第一资源。
另外,如果第一任务的描述信息中包括资源池信息,例如携带资源池标识,则任务分配装置可根据该资源池标识从相应的资源池中确定第一资源。如果该资源池中空闲的资源不足以执行第一任务,则可以挂起第一任务。此时为了避免高优先级的第一任务不能被及时执行,如果该资源池中空闲的资源不足以执行第一任务,且第一任务为高优先级任务,则可以从其他资源池中选择第一资源。
可选的,如果任务分配装置在将第一任务分配给第一资源之前,第一资源正在处理第四任务,则任务分配装置还可通知第一资源停止第四任务的处理并保存第四任务的上下文。其中,任务分配装置可挂起第四任务,并释放第一资源,将第一任务调度到第一资源,使得第一资源得以处理第一任务。其中,第一任务的优先级可高于第四任务的优先级。因此,该方案可以保证在资源饱和场景下,不用事先预留资源,也可以在高优先级业务流发起任务请求时及时响应,确保高优先级任务的及时处理,从而保障了资源的利用率和高优先级业务流实时性的平衡。
在第一任务执行完成后,可由第一资源根据第四任务的上下文恢复第四任务的处理,可选的,可由任务分配装置指示第一资源根据第四任务的上下文恢复第四任务的处理。
下面结合图7,对本申请实施例提供的一种性的任务分配过程示例进行说明。该过程可包括以下步骤:
S201:启动前的初始化配置。以图3为例,S201可由图3所示的计算机系统实施,例如,可由应用、任务发起者、调度器、资源池模块和执行器相互配合实施。
在计算机系统开始工作前,一般需要对系统做初始化。本申请中的初始化主要包括两 部分。
其一,识别计算机系统支持的并行运行的多个业务流的优先级,并根据各业务流吞吐量的大小,分配合适数量的任务下发通道,即任务流。
比如,计算机系统支持在实际应用中支持3条高优先级的业务流,都具有高实时性要求,另外计算机系统还支持若干吞吐量大但允许一定时延的低优先级的业务流。
其中,任务发起者和/或任务流可以与业务流的优先级匹配。例如,优先级最高的业务可采用最高优先级的任务发起者下发,并在任务的描述信息中给该业务流的任务配置最高优先级。优先级最高的任务发起者可配置有专用的业务流。
其二,对资源做统筹划分,把资源根据实际应用需求分配到不同的资源池。
例如,在高优先级的业务流的数量为3时,可以将资源按一定配比分配到3个资源池,将3条高优先级的业务流的任务分别分配到其中的1个资源池的资源中,即一个资源池对应于一个高优先级的任务。低优先级的业务流的任务可以按照各个资源池的算力配比,把任务并行下发到3个资源池中。这样的分配方法配合后续将介绍的调度步骤,既可以满足高优先级业务的实时性要求,同时又可以提高整个系统的算力利用率。
S202:生成任务的描述信息,并将任务下发到任务流。
任务发起者在接到外部计算请求后,会对计算任务进行分析,并把任务拆分成子任务,并以约定的格式将任务的描述信息填充到其在S201中分配的任务流。
本申请保证任务的实时性,S201和S202中可采取以下措施中的至少一种:
其一,采用更高效的任务下发通信方案。例如,对于高优先级任务,通过硬连线将高优先级任务下发到任务流,不需通过系统总线下发,以避免系统总线拥堵造成时延增加。此外,还可以将高优先级任务下发到该高优先级任务专用的任务流,使得该任务得以及时进行分配。
其二,根据任务的紧急长度和/或关键程度确定任务的优先级,使得即便将多个任务分配到系统的资源池中,高优先级的任务能够优先被处理。此外,在资源饱和的情况下,高优先级的任务能够打断正在执行的低优先级的任务。
其三,在下发任务的时候,任务发起者可以通过描述信息中的锁定信息指示是否锁定算力资源。若锁定算力资源,则低优先级(或低优先级和同优先级的其他任务)的任务在此情景不能使用该算力资源,即使该算力资源正处于空闲状态。若任务发起者需要将锁定的算力资源释放,则在最后一次任务下发时,在任务描述符中指明解除锁定,例如,携带解除锁定的指示。锁定和接触锁定的过程可参见前述说明,这里不再具体展开。
S203:任务流包括至少一个待执行任务时,向调度器下发任务,即发送任务调度请求。
S204:调度器可检测是否存在任务调度请求。
如果存在任务调度请求,则解析任务的描述信息,否则,如果不存在任务调度请求,则可在检测周期等条件满足后进行下一次检测。
S205:调度器可根据空闲资源的算力对任务进行算力匹配,确定空闲算力是否足够执行该任务。
S206:如果空闲算力足够执行低优先级任务,或者任务是一个高优先级任务,则匹配通过,可根据任务的描述信息执行任务分配。
否则,如果空闲算力不足以执行低优先级任务,或者,如果进行分配的是高优先级任务,当前没有空闲资源,并且被占用的资源中也没有被优先级低于该高优先级任务的占用 的资源,则匹配不通过,可挂起该任务,在有足够的资源后再执行该任务,之后执行S204。
S207:在任务分配后,可更新空闲资源的算力。
S208:在完成分配的任务后,可再次更新空闲资源的算力。
这里结合图8对S206中,任务分配的方法进行具体说明。
在S206中,调度器可负责统筹所有资源池下的资源,记录并维护所有算力的状态信息。这些信息包括并不限于空闲或忙碌、当前执行的任务来自哪个业务流、当前任务的优先级等等。
在S206中,一旦有任务流处于非空状态,或者有因为上下文切换而被挂起且尚未恢复的任务,调度器就会扫描待执行的任务的信息,确认待执行任务的优先级,并从所有优先级中筛选出最高优先级的任务。最高优先级的任务可能是任务流的至少一个待执行任务和/或至少一个被挂起后待恢复的任务中优先级最高的一个。另外,当被挂起后待恢复的任务和任务流中的任务为相同优先级时,优先恢复被挂起后待恢复的任务。任务流中的多个同优先级或多个相同优先级的被挂起后待恢复的任务均为当前最高优先级时,这些任务可采用轮询调度(round-robin)算法调度。
在选出最高优先级任务后,调度器会确认当前任务所指向的资源池中是否有空闲资源,若有,则直接把任务调度到空闲资源上。若没有空闲资源,则调度器将继续确认,当前占用资源的中是否有资源在执行比待执行任务更低优先级的任务。若没有,则挂起该调度请求(或称挂起该调度请求对应的任务),继续扫描其他任务(包括任务流中的任务和/或被挂起后待恢复的任务)。若有占用资源的更低优先级的任务,且处理该任务的资源上没有被锁定,则调度器可打断该任务的执行,或者说,抢占该更低优先级的任务的资源,并通知执行该任务的资源执行上下文切换,使得该低优先级的任务暂时被挂起,使得该资源变更为空闲资源,该更低优先级的任务变更为被挂起后待恢复的任务。低优先级的任务的上下文切换完成后,调度器将待调度的高优先级任务调度到该可向资源上。
资源完成任务的执行后,会通知调度器,例如反馈资源的状态信息,以指示完成任务的执行,由调度器执行资源的状态信息的更新。调度器将确认该资源所执行的任务是否有锁定资源的需求。若有,调度器会继续把资源维护成被占用状态,若没有,则调度器会把资源维护成空闲状态。
基于相同的发明构思,本申请实施例还提供一种任务分配装置,用于实现以上方法实施例所示的步骤。该装置可包括图9和/或图10所示结构。该任务分配装置可以应用于具有多个处理器核的计算机系统,可用于实现图6至图8所示的任务分配方法。如图9所示,该任务分配装置可以包括处理模块910和接口模块920。
示例性的,在实现图6所示任务分配方法时,接口模块920可用于获取第一任务的第一锁定信息。处理模块910可用于根据所述第一锁定信息确定第一资源的状态为第一锁定状态,所述第一资源为用于处理所述第一任务的资源,其中,所述第一锁定状态为不允许分配第二任务的状态,第二任务的优先级低于或等于所述第一任务的优先级。
在一种可能的设计中,所述处理模块910还可用于:从满足第一条件的资源中确定所述第一资源,所述第一条件包括以下中的至少一个:所述资源的优先级不低于所述第一任务的优先级;或者,所述资源所属资源池的优先级不低于第一任务的优先级;或者,所述资源的状态不包括第二锁定状态,所述第二锁定状态为不允许分配第三任务的状态,第三任务的优先级不低于第一优先级,所述第一优先级高于所述第一任务的优先级。
在一种可能的设计中,所述处理模块910还可用于:获取所述资源的优先级信息。
在一种可能的设计中,所述接口模块920还可用于:所述任务分配装置通过硬连线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不低于优先级阈值;和/或,所述任务分配装置通过系统总线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不高于优先级阈值。
在一种可能的设计中,所述处理模块910还可用于:通知所述第一资源停止第四任务的处理并存储所述第四任务的上下文,所述第四任务的上下文用于恢复所述第四任务的处理。
在一种可能的设计中,在所述第一任务完成后,所述处理模块910还可用于:指示所述第一资源根据所述上下文恢复所述第四任务的处理。
在一种可能的设计中,所述接口模块920还可用于:所述任务分配装置获取所述第一任务的描述信息,所述描述信息中包括第一资源池的标识。所述处理模块910还用于:所述任务分配装置从所述第一资源池中确定所述第一资源。
在一种可能的设计中,所述接口模块920还可用于:获取所述第一任务的优先级信息。
基于相同的技术构思,本申请实施例还提供了另一种任务分配装置可包括图10所示的结构,用于执行图2、图9和/或本申请实施例提供的任务分配方法的动作。参阅图10所示,该任务分配装置可以包括处理器1010和存储器1020。其中,处理器1010中可包括多个核。存储器1020,可用于存储多个核的寿命信息。处理器1010,可用于执行上述实施例述及的任务分配方法。应理解,图10中仅以1个处理器1010和存储器1020为例进行介绍,本申请提供的任务分配装置中可包括其他数量的存储器1020和处理器1010。
可选的,所述处理器1010、所述存储器1020之间通过总线相互连接。总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述至少一个处理器1010中可以包含以下至少一项:CPU,微处理器,专用集成电路(application specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。其中,所述CPU中可以包括功耗控制器和至少一个处理器核心,所述功耗控制器能够获取所述至少一个处理器核心的失效信息,并将所述至少一个处理器核心的失效信息存储至所述存储器1020中。
存储器1020可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1020用于存储执行本申请方案的计算机执行指令,并由处理器1010来控制执行。处理器1010用于执行存储器1020中存储的计算机执行指令,从而实现本申请上述实施例提供的任务分配方法。
可选的,图10所示的任务分配置在还可包括通信接口,如收发器或输入/输出接口等。例如,在可由通信接口获取资源池和/或任务的优先级信息。
可选的,可由处理器1010实现图9所示的处理模块910的功能。另外,可由通信接口实现图9所示的接口模块920的功能。
可选的,本申请实施例中的计算机程序指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储计算机程序,该计算机程序被计算机执行时,计算机可以实现上述方法实施例相关的流程。
本申请实施例还提供一种计算机程序产品,计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,计算机可以实现上述方法实施例相关的流程。
本申请实施例还提供一种芯片或芯片系统(或电路),该芯片可包括处理器,该处理器可用于调用存储器中的程序或指令,执行上述方法实施例提供的与网络设备和/或终端相关的流程。该芯片系统可包括该芯片、存储器或收发器等组件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。另外在本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。在本申请的文字描述中, 字符“/”,一般表示前后关联对象是一种“或”的关系;在本申请的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
Claims (19)
- 一种任务分配方法,其特征在于,包括:任务分配装置获取第一任务的第一锁定信息;所述任务分配装置根据所述第一锁定信息确定第一资源的状态为第一锁定状态,所述第一资源为用于处理所述第一任务的资源,其中,所述第一锁定状态为不允许分配第二任务的状态,第二任务的优先级低于或等于所述第一任务的优先级。
- 如权利要求1所述的方法,其特征在于,还包括:任务分配装置从满足第一条件的资源中确定所述第一资源,所述第一条件包括以下中的至少一个:所述资源的优先级不低于所述第一任务的优先级;或者,所述资源所属资源池的优先级不低于第一任务的优先级;或者,所述资源的状态不包括第二锁定状态,所述第二锁定状态为不允许分配第三任务的状态,第三任务的优先级不低于第一优先级,所述第一优先级高于所述第一任务的优先级。
- 如权利要求2所述的方法,其特征在于,还包括:所述任务分配装置获取所述资源的优先级信息。
- 如权利要求1-3中任一所述的方法,其特征在于,还包括:所述任务分配装置通过硬连线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不低于优先级阈值;和/或,所述任务分配装置通过系统总线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不高于优先级阈值。
- 如权利要求1-4中任一所述的方法,其特征在于,还包括:所述任务分配装置通知所述第一资源停止第四任务的处理并存储所述第四任务的上下文,所述第四任务的上下文用于恢复所述第四任务的处理。
- 如权利要求5所述的方法,其特征在于,在所述第一任务完成后,还包括:所述任务分配装置指示所述第一资源根据所述上下文恢复所述第四任务的处理。
- 如权利要求1-6中任一所述的方法,其特征在于,还包括:所述任务分配装置获取所述第一任务的描述信息,所述描述信息中包括第一资源池的标识;所述任务分配装置从所述第一资源池中确定所述第一资源。
- 如权利要求1-7中任一所述的方法,其特征在于,还包括:所述任务分配装置获取所述第一任务的优先级信息。
- 一种任务分配装置,其特征在于,包括:接口模块,用于获取第一任务的第一锁定信息;处理模块,用于根据所述第一锁定信息确定第一资源的状态为第一锁定状态,所述第一资源为用于处理所述第一任务的资源,其中,所述第一锁定状态为不允许分配第二任务的状态,第二任务的优先级低于或等于所述第一任务的优先级。
- 如权利要求9所述的装置,其特征在于,所述处理模块还用于:从满足第一条件的资源中确定所述第一资源,所述第一条件包括以下中的至少一个:所述资源的优先级不低于所述第一任务的优先级;或者,所述资源所属资源池的优先级不低于第一任务的优先级;或者,所述资源的状态不包括第二锁定状态,所述第二锁定状态为不允许分配第三任务的状态,第三任务的优先级不低于第一优先级,所述第一优先级高于所述第一任务的优先级。
- 如权利要求10所述的装置,其特征在于,所述处理模块还用于:获取所述资源的优先级信息。
- 如权利要求9-11中任一所述的装置,其特征在于,所述接口模块还用于:所述任务分配装置通过硬连线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不低于优先级阈值;和/或,所述任务分配装置通过系统总线获取所述第一任务的数据,并将所述第一任务的数据存储至任务队列,所述第一任务的优先级不高于优先级阈值。
- 如权利要求9-12中任一所述的装置,其特征在于,所述处理模块还用于:通知所述第一资源停止第四任务的处理并存储所述第四任务的上下文,所述第四任务的上下文用于恢复所述第四任务的处理。
- 如权利要求13所述的装置,其特征在于,在所述第一任务完成后,所述处理模块还用于:指示所述第一资源根据所述上下文恢复所述第四任务的处理。
- 如权利要求9-14中任一所述的装置,其特征在于,所述接口模块还用于:所述任务分配装置获取所述第一任务的描述信息,所述描述信息中包括第一资源池的标识;所述处理模块还用于:所述任务分配装置从所述第一资源池中确定所述第一资源。
- 如权利要求9-14中任一所述的装置,其特征在于,所述接口模块还用于:获取所述第一任务的优先级信息。
- 一种通信装置,其特征在于,所述通信装置包括:存储器,用于存储指令;至少一个处理器,用于从所述存储器中调用并运行所述指令,使得所述通信装置实现如权利要求1-8中任意一项所述的方法。
- 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-8中任意一项所述的方法。
- 一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行如权利要求1-8中任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/093867 WO2022236816A1 (zh) | 2021-05-14 | 2021-05-14 | 一种任务分配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116724294A true CN116724294A (zh) | 2023-09-08 |
Family
ID=84028698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180087726.1A Pending CN116724294A (zh) | 2021-05-14 | 2021-05-14 | 一种任务分配方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116724294A (zh) |
WO (1) | WO2022236816A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115796553B (zh) * | 2023-01-10 | 2023-04-28 | 广东利元亨智能装备股份有限公司 | Agv任务调度方法、装置及agv调度系统 |
CN117909055B (zh) * | 2024-03-18 | 2024-06-11 | 北京壁仞科技开发有限公司 | 处理器的前端电路和抓包控制方法 |
CN118312329B (zh) * | 2024-06-07 | 2024-08-16 | 八维通科技有限公司 | 异构算力集成系统下算力智能推荐方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083063A1 (en) * | 2000-12-26 | 2002-06-27 | Bull Hn Information Systems Inc. | Software and data processing system with priority queue dispatching |
CN107273214A (zh) * | 2017-06-30 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种基于固态硬盘的多核控制器资源访问方法及其装置 |
CN109150759B (zh) * | 2018-08-28 | 2022-05-03 | 成都信息工程大学 | 一种渐进式非阻塞机会资源预留方法及系统 |
CN109582447B (zh) * | 2018-10-15 | 2020-09-29 | 中盈优创资讯科技有限公司 | 计算资源分配方法、任务处理方法及装置 |
CN110597630B (zh) * | 2019-09-05 | 2022-02-15 | 郑州阿帕斯科技有限公司 | 一种分布式系统中内容资源的处理方法及系统 |
CN111913809B (zh) * | 2020-07-28 | 2024-03-19 | 阿波罗智能技术(北京)有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
-
2021
- 2021-05-14 CN CN202180087726.1A patent/CN116724294A/zh active Pending
- 2021-05-14 WO PCT/CN2021/093867 patent/WO2022236816A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022236816A1 (zh) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022236816A1 (zh) | 一种任务分配方法及装置 | |
CN110489213B (zh) | 一种任务处理方法及处理装置、计算机系统 | |
JP5722327B2 (ja) | Gpuワークのハードウエアベースでのスケジューリング | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN112783659B (zh) | 一种资源分配方法、装置、计算机设备及存储介质 | |
CN107577539B (zh) | 用于内核态和用户态通讯的共享内存结构及其应用 | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
CN115167996A (zh) | 调度方法及装置、芯片、电子设备及存储介质 | |
US20210042155A1 (en) | Task scheduling method and device, and computer storage medium | |
CN112130963A (zh) | 虚拟机任务的调度方法、装置、计算机设备及存储介质 | |
CN115237556A (zh) | 调度方法及装置、芯片、电子设备及存储介质 | |
JP2008065713A (ja) | マルチプロセッサシステム及び割込み制御方法 | |
CN114579285B (zh) | 一种任务运行系统、方法及计算设备 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN115509704A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN102047217A (zh) | 重新获取对执行外部执行上下文的处理资源的控制 | |
CN110837415B (zh) | 一种基于risc-v多核处理器的线程调度方法和装置 | |
CN107634978B (zh) | 一种资源调度方法及装置 | |
CN113010301A (zh) | 用户定义的测定的优先级队列 | |
US8090801B1 (en) | Methods and apparatus for performing remote access commands between nodes | |
CN112486638A (zh) | 用于执行处理任务的方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |