CN113391914A - 任务调度方法和装置 - Google Patents
任务调度方法和装置 Download PDFInfo
- Publication number
- CN113391914A CN113391914A CN202010165763.7A CN202010165763A CN113391914A CN 113391914 A CN113391914 A CN 113391914A CN 202010165763 A CN202010165763 A CN 202010165763A CN 113391914 A CN113391914 A CN 113391914A
- Authority
- CN
- China
- Prior art keywords
- subtasks
- task
- subtask
- node
- nodes
- 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
Images
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]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书实施例提供一种任务调度方法和装置,通过获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点,从而能够获取到整个任务的资源需求情况,实现了以整个任务为粒度进行资源分配,有利于提高集群的资源利用率。
Description
技术领域
本公开涉及分布式系统技术领域,尤其涉及任务调度方法和装置。
背景技术
目前,越来越多的任务开始使用分布式系统进行计算,其中,许多任务往往包括多个子任务,各个子任务的内容以及所需的资源可能完全相同也可能不同。传统的分布式系统中的任务调度方式一般以子任务为单位进行节点分配,对集群的资源利用率较低。
发明内容
本公开提供一种任务调度方案。
根据本公开实施例的第一方面,提供一种任务调度方法,所述方法包括:获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,所述方法还包括:基于所述多个子任务的资源需求信息,为所述任务的多个子任务确定目标节点;所述在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点,包括:在成功为所述多个子任务中的每个子任务确定对应的目标节点的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,按照特定顺序依次确定多个子任务对应的目标节点。
在一个可选例子中,所述多个子任务的资源需求信息包括所述多个子任务中每个子任务的资源需求信息,其中,所述资源需求信息可以包括所需的资源类型和每种类型的资源数量,或者进一步包括其他信息。
在一个可选例子中,所述分布式系统的当前资源状态信息可以包括所述分布式系统中多个节点的当前状态信息,其中,当前状态信息用于指示资源是否可用、可用资源的类型和数量、负载情况、拓扑连接信息中的至少一种,或者进一步包括其他信息。
在一些实施例中,在每次确定为一个子任务分配的目标节点之后,更新分布式系统的当前资源状态信息,并基于更新后的当前资源状态信息确定下一个子任务对应的目标节点。
在一些实施例中,在未能成功为所述多个子任务中的至少一个子任务确定对应的目标节点的情况下,确定所述分布式系统的当前可用资源不满足所述多个子任务中每个子任务所需求的资源。
在一些实施例中,所述多个子任务的目标节点的依次确定的顺序是按照子任务的优先级、子任务之间的依赖关系中的至少一项得到的。
在一些实施例中,所述基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点,包括:基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合;从多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点。
其中,不同子任务的预选节点集合可以相同或不同。在一些例子中,多个子任务可以具有相同的预选节点集合。
在一些实施例中,所述基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合,包括:基于所述分布式系统的当前资源状态信息和每个子任务的资源需求信息,确定所述每个子任务的预选节点集合。
多个子任务的预选节点集合的确定可以是独立的,相互之间不存在依赖关系,例如,可以并行执行或者以任意先后顺序执行。例如,多个子任务的预选节点集合是基于相同的分布式系统的当前资源状态信息确定的,也就是说,分布式系统的当前资源状态信息在预选过程中不进行更新。例如,每个子任务的预选节点集合的确定只跟自己的资源需求信息有关系,而与其他子任务的资源需求信息无关。
在一些实施例中,所述确定所述多个子任务中每个子任务的预选节点集合,包括:按照特定顺序依次确定所述多个子任务中每个子任务的预选节点集合。
在一个例子中,所述多个子任务中第一子任务的预选节点集合中的预选节点是从所述多个子任务中第二子任务的预选节点集合选取的,其中,所述第二子任务的顺序位于所述第一子任务之前。
在另一个例子中,基于所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合。
在一些实施例中,所述从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点,包括:按照特定顺序依次从所述多个子任务中每个子任务的预选节点中选择所述每个子任务的目标节点。
在一个可选例子中,优先选择所述多个子任务中第二子任务的目标节点作为所述多个子任务中第一子任务的目标节点,其中,所述第二子任务的顺序位于所述第一子任务之前。
在一些实施例中,所述从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点,包括:基于所述分布式系统的当前资源状态信息,从所述多个子任务中第一子任务的预选节点集合中确定所述第一子任务的目标节点;基于所述第一子任务的资源需求信息,更新所述分布式系统的当前资源状态信息,并基于所述分布式系统的更新后的当前资源状态信息,从所述多个子任务中第二子任务的预选节点集合中确定所述第二子任务的目标节点。
在一个可选例子中,基于第一子任务的预选节点集合中每个预选节点的当前状态信息,从所述第一子任务的预选节点集合中确定所述第一子任务的目标节点,并基于所述第一子任务的所需资源信息,更新所述第一子任务的目标节点的当前状态信息。
在一些实施例中,所述从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点,包括:根据所述任务的任务类型,确定每个子任务的预选节点集合中包含的预选节点的分值;基于每个子任务的预选节点集合中包含的预选节点的分值,从所述每个子任务的预选节点集合中选择所述每个子任务的目标节点。
在一个可选例子中,基于所述任务的任务类型,确定所述预选节点集合中每个预选节点的分值确定策略。
在一些实施例中,所述方法还包括:确定所述任务的任务类型;其中,所述任务的多个子任务对应的目标节点是基于所述任务的任务类型确定的。
在一些实施例中,所述任务的任务类型为计算密集型或通信密集型。
在一些实施例中,所述分别为所述任务的多个子任务分配对应的目标节点,包括:将所述任务的多个子任务划分为至少一个分组,其中,每个分组包括所述多个子任务中的至少一个子任务;分别为所述至少一个分组中每个分组分配对应的目标节点,其中,同一分组中的各个子任务分配到同一目标节点。
在一些实施例中,所述将所述任务的多个子任务划分为至少一个分组,包括:根据所述任务的任务类型,将所述任务的多个子任务划分为至少一个分组。
在一些实施例中,所述将所述任务的多个子任务划分为至少一个分组,包括:在所述任务的任务类型为通信密集型的情况下,根据所述任务的多个子任务的资源需求信息,确定所述多个子任务所需的总节点数量,并根据所述总节点数量,将所述任务的多个子任务划分为至少一个分组。
在一些实施例中,所述将所述任务的多个子任务划分为至少一个分组,包括:在所述任务的任务类型为计算密集型的情况下,将所述多个子任务中的每个子任务作为一个分组。
在一些实施例中,分别为所述至少一个分组中每个分组分配对应的目标节点,包括:分别为所述至少一个分组中每个分组确定预选节点集合,并依次从所述至少一个分组中每个分组的预选节点集合中选取所述分组的目标节点。
在一些实施例中,所述方法还包括:在分布式系统中的当前可用资源不满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,对所述任务包括的多个子任务均进行延迟分配。
在一些实施例中,所述方法还包括:在分别为所述任务的多个子任务分配对应的目标节点之后,对所述任务的多个子任务进行同步调度。
在一些实施例中,所述方法应用于任务编排系统。
根据本公开实施例的第二方面,提供一种任务调度装置,所述装置包括:获取模块,用于获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;第一分配模块,用于在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,所述装置还包括:第一确定模块,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点;所述第一分配模块用于:在成功为所述多个子任务中的每个子任务确定对应的目标节点的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,所述第一确定模块用于:基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,按照特定顺序依次确定多个子任务对应的目标节点。
在一个可选例子中,所述多个子任务的资源需求信息包括所述多个子任务中每个子任务的资源需求信息,其中,所述资源需求信息可以包括所需的资源类型和每种类型的资源数量,或者进一步包括其他信息。
在一个可选例子中,所述分布式系统的当前资源状态信息可以包括所述分布式系统中多个节点的当前状态信息,其中,当前状态信息用于指示资源是否可用、可用资源的类型和数量、负载情况、拓扑连接信息中的至少一种,或者进一步包括其他信息。
在一些实施例中,所述装置还包括:更新模块,用于在每次确定为一个子任务分配的目标节点之后,更新分布式系统的当前资源状态信息,并基于更新后的当前资源状态信息确定下一个子任务对应的目标节点。
在一些实施例中,所述多个子任务的目标节点的依次确定的顺序是按照子任务的优先级、子任务之间的依赖关系中的至少一项得到的。
在一些实施例中,所述第一确定模块包括:第一确定单元,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,依次为所述多个子任务确定目标节点;更新单元,用于在每确定一个子任务的目标节点后,基于所述一个子任务的资源需求信息,更新所述分布式系统的当前资源状态信息。
在一些实施例中,所述装置还包括:第二确定模块,用于在未能成功为所述多个子任务中的至少一个子任务确定对应的目标节点的情况下,确定所述分布式系统的当前可用资源不满足所述多个子任务中每个子任务所需求的资源。
在一些实施例中,所述第一确定单元包括:确定子单元,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合;选择子单元,用于从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点。
其中,不同子任务的预选节点集合可以相同或不同。在一些例子中,多个子任务可以具有相同的预选节点集合。
在一些实施例中,所述确定子单元用于:基于所述分布式系统的当前资源状态信息和每个子任务的资源需求信息,确定所述每个子任务的预选节点集合。
多个子任务的预选节点集合的确定可以是独立的,相互之间不存在依赖关系,例如,可以并行执行或者以任意先后顺序执行。例如,多个子任务的预选节点集合是基于相同的分布式系统的当前资源状态信息确定的,也就是说,分布式系统的当前资源状态信息在预选过程中不进行更新。例如,每个子任务的预选节点集合的确定只跟自己的资源需求信息有关系,而与其他子任务的资源需求信息无关。
在一些实施例中,所述确定子单元用于:按照特定顺序依次确定所述多个子任务中每个子任务的预选节点集合,其中,所述多个子任务中第一子任务的预选节点集合中的预选节点是从所述多个子任务中第二子任务的预选节点集合选取的,其中,所述第二子任务的顺序位于所述第一子任务之前。
在一些实施例中,按照特定顺序依次从所述多个子任务中每个子任务的预选节点中选择所述每个子任务的目标节点,其中,优先选择所述多个子任务中第二子任务的目标节点作为所述多个子任务中第一子任务的目标节点,其中,所述第二子任务的顺序位于所述第一子任务之前。
在一些实施例中,所述选择子单元用于:基于所述分布式系统的当前资源状态信息,从所述多个子任务中第一子任务的预选节点集合中确定所述第一子任务的目标节点;基于所述第一子任务的资源需求信息,更新所述分布式系统的当前资源状态信息,并基于所述分布式系统的更新后的当前资源状态信息,从所述多个子任务中第二子任务的预选节点集合中确定所述第二子任务的目标节点。
在一个可选例子中,基于第一子任务的预选节点集合中每个预选节点的当前状态信息,从所述第一子任务的预选节点集合中确定所述第一子任务的目标节点,并基于所述第一子任务的所需资源信息,更新所述第一子任务的目标节点的当前状态信息。
在一些实施例中,所述选择子单元用于:根据所述任务的任务类型,确定每个子任务的预选节点集合中包含的预选节点的分值;基于每个子任务的预选节点集合中包含的预选节点的分值,从所述每个子任务的预选节点集合中选择所述每个子任务的目标节点。
在一个可选例子中,基于所述任务的任务类型,确定所述预选节点集合中每个预选节点的分值确定策略。
在一些实施例中,所述装置还包括:第二确定模块,用于确定所述任务的任务类型;其中,所述多个子任务对应的目标节点是基于所述任务的任务类型确定的。
在一些实施例中,所述第一分配模块包括:分组单元,用于将所述任务的多个子任务划分为至少一个分组,其中,每个分组包括所述多个子任务中的至少一个子任务;分配单元,用于分别为所述至少一个分组中每个分组分配对应的目标节点,其中,同一分组中的各个子任务分配到同一目标节点。
在一些实施例中,所述分组单元用于:根据所述任务的任务类型,将所述任务的多个子任务划分为至少一个分组。
在一些实施例中,所述任务的任务类型为计算密集型或通信密集型。
在一些实施例中,所述分组单元用于:在所述任务的任务类型为通信密集型的情况下,根据所述任务的多个子任务的资源需求信息,确定所述多个子任务所需的总节点数量,并根据所述总节点数量,将所述任务的多个子任务划分为至少一个分组。
在一些实施例中,在所述任务的任务类型为计算密集型的情况下,将所述多个子任务中的每个子任务作为一个分组。
在一些实施例中,分别为所述至少一个分组中每个分组确定预选节点集合,并依次从所述至少一个分组中每个分组的预选节点集合中选取所述分组的目标节点。
在一些实施例中,所述装置还包括:延迟模块,用于在分布式系统中的当前可用资源不满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,对所述任务包括的多个子任务均进行延迟分配。
在一些实施例中,所述装置还包括:调度模块,用于在分别为所述任务的多个子任务分配对应的目标节点之后,对所述任务的多个子任务进行同步调度。
在一些实施例中,所述装置应用于任务编排系统。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
根据本公开实施例的第四方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
本公开实施例通过获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点,从而能够获取到整个任务的资源需求情况,实现了以整个任务为粒度进行资源分配,提高了集群的资源利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1是本公开实施例的分布式系统的示意图。
图2是本公开实施例的任务调度方法流程图。
图3A是本公开实施例的模拟分配节点过程中资源变化的示意图。
图3B是本公开实施例的模拟分配节点过程的流程图。
图4是传统的任务调度过程的示意图。
图5是本公开实施例的任务调度过程的示意图。
图6是本公开实施例的调度逻辑的示意图。
图7是本公开实施例的任务调度装置的结构示意图。
图8是用于配置本公开实施例装置的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
目前,越来越多的任务开始使用分布式系统进行处理,这样的任务称为分布式任务。这些分布式任务中包含对GPU(Graphics Processing Unit,图形处理器)、DSP(DigitalSignal Processor,数字信号处理器)、FPGA(Field Programmable Gate Array,现场可编程门阵列)等高性能的处理资源有着迫切需求的任务,例如,深度学习任务。如图1所示,是一些实施例的分布式系统,该分布式系统包括一个或多个集群,每个集群包括一台或多台服务器,每台服务器可以视为一个节点(图中的各个黑点所示),每个节点都包括CPU(Central Processing Unit,中央处理器)、GPU、内存、磁盘、网络端口等资源中的至少一者。在将子任务分配到节点之后,可以通过该节点上的资源来执行子任务,每个节点可以执行一个或多个子任务。同一集群内的各个节点执行的子任务可以相同,也可以不同。在分布式系统中,无论是任务本身,亦或是资源的需求模式,都与传统任务截然不同,因此,调度系统需要对分布式系统中的调度方式进行相应的调整,从而提高分布式系统中集群资源使用的合理性,进而提高任务的运行性能和集群的资源利用率。
当前分布式系统中的任务大多具有如下的特征:一个任务往往包括多个子任务,各个子任务的内容以及所需的资源可能完全相同也可能不同,子任务之间可能需要进行频繁的通信。此外,在一些情况下,一个任务中的多个子任务需要一起被调度执行,否则任务并不能正常执行;在另一些情况下,各个子任务的执行顺序会对整个任务的执行情况造成一定的影响,例如,从(slave)子任务需要在其从属的主(master)子任务执行完成之后才能执行。
目前有一些调度器(例如,kube-batch)根据以下方式对分布式系统中的任务进行批处理调度:调度器按次序尝试对一个任务中的各个子任务进行挨个调度,并在该任务的每一个子任务的调度尝试完成后判断整个任务是否已经符合用户预期的可以运行的状态。这种调度策略称为gang scheduling(组调度)。
然而,目前的gang scheduling实现方式,本质上是以子任务为粒度进行调度,调度器未获取到整个任务的资源需求情况,并没有对整个任务的全局观,对集群的资源利用率较低。因此在集群资源紧张或者任务类型复杂时,会产生大量的调度失败与饥饿的现象。
基于此,本公开实施例提供了一种任务调度方法。如图2所示,所述方法可包括:
步骤201:获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;
步骤202:在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点。
本公开实施例中的方法可以由任意电子设备执行,例如终端设备或云服务器,在一些实施例中,该方法可以处理器或调度器执行,其中,可选地,所述处理器或调度器可以运行在诸如Kubernetes等云平台上,具体可以设置在容器编排引擎上,但本公开实施例不限于此。在步骤201中,可以获取一个或多个任务的信息。
所述任务包括的多个子任务可以是所述任务的所有子任务,也可以是所述任务中的部分子任务,例如具有依赖或主从关系的多个子任务,如子任务A的执行只有在子任务B执行完成后才能开始,再例如,具有相同类型或具有至少一个特定类型的多个子任务,等等。所述任务可以是神经网络的训练任务、推理任务,也可以是其他类型的深度学习等任务。在一些可选实施例下,同一任务中的各个子任务可以由分布式系统中的同一集群中的相同或者不同节点来执行。在分布式系统包括多个集群的情况下,可选地,可以先将任务分配到某个集群,然后,再从该集群中确定用于所述任务的多个子任务的目标节点。
所述任务的信息可以包括所述任务包括的多个子任务的资源需求信息,或者还可以包括所述任务的优先级信息,所述任务包括的多个子任务的优先级信息、子任务之间的依赖信息、用户提供信息、历史信息、任务类型信息等一种或多种。
其中,所述子任务的资源需求信息可以包括执行该子任务所需的资源类型和资源数量,所述资源类型可以包括但不限于CPU、GPU、内存、磁盘、网络端口等资源中的至少一者。所述任务的优先级信息可以包括但不限于所述任务等待被调度的时长和/或所述任务中的所述多个子任务所需的总资源。等待被调度的时长是指调度器接收到一个任务的时刻,到该任务被调度的时刻之间的时长,可以将等待被调度的时长较长的任务以及所需的总资源较多的任务的优先级设置得较高,从而避免一个任务长期处于等待调度的状态而造成饥饿问题。
所述任务包括的多个子任务的优先级信息用于确定所述任务包括的多个子任务的优先级。所述子任务之间的依赖信息用于确定所述任务包括的多个子任务的具有的依赖或主从关系,如果子任务A的执行只有在子任务B执行完成后才能开始执行,则子任务B依赖于子任务A,或者子任务A为主任务,子任务B为子任务A的从任务。
所述用户提供信息用于确定所述任务的多个子任务的计算量与通信量。所述历史信息用于确定历史调度过程中与所述任务的任务类型。除了以上信息之外,根据实际的应用场景,所述任务的信息还可包括其他信息,此处不再赘述。
在步骤202中,所述任务的多个子任务的任务需求信息对应的总资源可以指所述任务的多个子任务所需的总资源,可选地,在多个子任务为任务的所有子任务的情况下,该总资源也是所述任务所需的总资源。可选地,如果分布式系统的当前可用资源满足所述多个子任务或所述任务所需的总资源,则表明分布式系统中的当前可用资源足以支持多个子任务的运行。可选地,如果分布式系统的当前可用资源不满足多个子任务或任务所需的总资源,则表明分布式系统中的当前可用资源最多仅支持多个子任务中的一部分任务的运行,而无法支持所有子任务的运行。
在本公开实施例中,只有在分布式系统中的当前可用资源满足所述任务的多个子任务所需的总资源的情况下,才分别为所述任务的多个子任务分配对应的目标节点。这样,可以以任务作为资源分配的单位,并对任务包含的多个子任务一起进行节点的分配,从而避免在分布式系统中的当前可用资源不够的情况下,任务中的部分子任务无法被成功分配,导致该任务中被成功分配的子任务占用了分布式系统中的资源的情况,有利于提高资源利用率。
在一些实施例中,可以基于分布式系统的当前资源状态信息和多个子任务的资源需求信息,为多个子任务分配目标节点。其中,可以为每个子任务分配能够满足其资源需求的目标节点,不同子任务的目标节点可以相同或者不同。
在一些实施例中,可以基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点,在成功为所述多个子任务中的每个子任务确定对应的目标节点的情况下,分别为所述任务的多个子任务分配对应的目标节点。上述为所述多个子任务确定目标节点的过程为模拟分配过程,模拟分配是一种虚拟的资源分配过程,并非实际执行的资源分配过程,所述模拟分配过程用于通过计算确定多个子任务当前是否可以分配到分布式系统中的节点。通过为所述任务的多个子任务进行节点的模拟分配,从而可以确定分布式系统当前是否满足该多个子任务所需资源。
其中,分布式系统的当前资源状态信息可以包括分布式系统的当前可用资源的数量、类型和分布中的至少一者,或者,可以包括分布式系统中多个节点的当前状态,例如是否可用或是否有可用资源、可用资源的类型和数量等等。多个子任务的资源需求信息可以包括多个子任务中每个子任务的资源需求信息,例如所需的资源类型、某种资源类型的资源数量中的至少一种,例如所需的GPU、DSP、CPU等一种或多种,本公开实施例不限于此。
在一些实施例中,可以基于多个子任务的资源需求信息和分布式系统的当前资源状态信息,确定分布式系统中是否存在满足多个子任务需求的目标节点,或者,按照特定顺序依次确定多个子任务中每个子任务的目标节点。例如,如果多个子任务中的每个子任务都能在分布式系统中找到满足其需求的目标节点,则可以确定分布式系统的当前可用资源满足多个子任务所需的总资源。再例如,如果多个子任务中的至少一个子任务在分布式系统中找不到满足其需求的目标节点,则可以确定分布式系统的当前可用资源不满足多个子任务所需的总资源。
与传统单个子任务的节点确定不同的是,在本公开实施例中,多个子任务的目标节点是按照特定顺序依次确定的,并且后面的子任务的目标节点的确定可能会受到为前面的子任务确定的目标节点的影响。在一些实施例中,在每次为其中一个子任务确定了对应的目标节点之后,更新分布式系统的当前资源状态信息,例如更新确定的该目标节点的当前状态信息,然后基于更新后的当前资源状态信息确定下一个子任务对应的目标节点,从而避免出现资源冲突问题。
应当说明的是,这里所说的更新所述当前资源状态信息,是用于以上模拟分配或者目标节点的确定过程,是虚拟的而非真实的更新,可以指在执行完一次子任务的节点模拟分配或目标节点的确定之后,分布式系统中当前可用资源的虚拟变化情况,由于还尚未进行子任务的实际分配,所以分布式系统中的当前可用资源实际并未发生变化。例如,在确定一个子任务的目标节点之后,可以认为将该目标节点虚拟地分配给该子任务,将目标节点上与该子任务所需求的资源对应的部分资源与该子任务虚拟地绑定,这样,该被虚拟地绑定的资源就不能再被分配给其他子任务。
上述特定顺序可以指预设顺序。或者,在一些例子中,所述特定顺序可以根据所述多个子任务的优先级来确定,例如,先为优先级较高的子任务确定对应的目标节点,再为优先级较低的子任务确定对应的目标节点,其中,该优先级可以基于子任务类型、子任务与其他子任务之间的依赖关系等一种或多种因素确定,例如,对于存在依赖或主从关系的两个子任务,主(master)子任务的优先级高于从(slave)子任务的优先级,但本公开实施例不限于此。或者,在另一些例子中,所述特定顺序可以根据所述子任务的依赖或主从关系来确定。由于从子任务在缺少主子任务的情况下无法开始运行,因此,通过优先为主子任务分配对应的目标节点,有利于提高整个任务的运行效率。或者,所述特定顺序也可以基于其他因素确定,本公开实施例对此不做限定。
在一些实施例中,在分布式系统中存在满足所述多个子任务中的每个子任务所需资源的目标节点的情况下,则确定分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源;否则,确定分布式系统中的当前可用资源不满足所述任务的多个子任务的资源需求信息对应的总资源。
如图3A和3B所示的例子,假设一个任务包括优先级由高到低的子任务1、子任务2和子任务3,可以先根据分布式系统的当前可用资源信息和子任务1的资源需求信息,为子任务1模拟分配节点,得到子任务1的目标节点,然后更新分布式系统中的当前资源状态信息;再根据更新后的分布式系统的当前可用资源信息和子任务2的资源需求信息,为子任务2模拟分配节点,得到子任务2的目标节点,然后更新分布式系统中的当前资源状态信息;再根据再次更新后的分布式系统的当前可用资源信息和子任务3的资源需求信息,为子任务3模拟分配节点,得到子任务3的目标节点。
如果为子任务1、子任务2和子任务3模拟分配节点均成功,则确定所述分布式系统的当前可用资源满足所述多个子任务中每个子任务的需求,即满足多个子任务所需的总资源。如果为子任务1、子任务2或者子任务3模拟分配节点失败,例如,分布式系统中找不到满足其所需资源的目标节点,则确定所述分布式系统的当前可用资源不满足所述多个子任务所需的总资源。
在基于所述模拟分配确定所述分布式系统的当前可用资源满足所述多个子任务中每个子任务所需求的资源的情况下,可以将在所述模拟分配中确定的每个子任务对应的目标节点分配给所述每个子任务。
在一些实施例中,可以基于分布式系统中各个节点的当前状态信息,对各个子任务进行目标节点的确定,例如,基于各个节点的当前状态信息,对各个节点进行排序或打分,并按照特定顺序依次为多个子任务分配排序或打分较高的节点。
在一些实施例中,为所述任务的多个子任务确定目标节点时,可以通过预选和优选两个过程来确定多个子任务分别对应的目标节点。
其中,在预选过程中,基于多个子任务的资源需求信息,分别为多个子任务中的每个子任务初步选取分布式系统中能够满足其需求的至少一个预选节点,或者剔除分布式系统中不能满足其需求的节点。例如,可以基于所述分布式系统中的多个节点的当前状态信息和所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合,其中,每个子任务的预选节点集合包括至少一个预选节点。不同的子任务的预选节点集合中可能包括相同或不同的节点。
在优选过程中,从每个子任务的预选节点集合中选择所述每个子任务的目标节点。例如,可以从子任务的预选节点集合中选出一个最适合的节点作为该子任务的目标节点。在一些可选例子中,可以根据子任务的预选节点集合中包括的各个预选节点的当前状态信息,例如当前负载情况、可用资源类型、可用资源数量、可用资源分布和节点内部之间的拓扑连接关系、与其他节点之间的拓扑连接关系中的至少一者,来确定目标节点。所述资源类型包括但不限于以下至少任一:通信端口、磁盘储存空间、内存、CPU、GPU等。所述资源数量可以是CPU数量、磁盘剩余容量、内存剩余容量等。所述资源分布也称为资源碎片情况,即当前可用资源的分布位置,例如,磁盘剩余容量分布在多少个磁盘上。分布式系统中各个节点的拓扑结构例如可以是总线型拓扑、星形拓扑、环形拓扑、树形拓扑等。
在一些实施例中,在预选过程中,可以基于所述分布式系统的当前资源状态信息和每个子任务的资源需求信息,确定所述每个子任务的预选节点集合,即,所述任务的多个子任务中的每个子任务的预选过程可以互不干扰,每个子任务的预选节点集合的选取仅与该子任务的资源需求信息有关,而不依赖于其他子任务的资源需求信息。相应地,多个子任务的预选节点集合的确定并行执行或者以任意先后顺序执行。这样,可以快速地进行预选节点的确定,从而提高模拟分配的整体效率。
例如,假设任务包括优先级由高到低的子任务1、子任务2和子任务3,则在预选过程中,可以并行地执行以下操作:根据子任务1的资源需求信息与分布式系统的当前资源状态信息确定子任务1的预选节点集合,根据子任务2的资源需求信息与分布式系统的当前资源状态信息确定子任务2的预选节点集合,并根据子任务3的资源需求信息与分布式系统的当前资源状态信息确定子任务3的预选节点集合,假设得到子任务1对应的预选节点集合包括{节点1,节点2,节点3},子任务2对应的预选节点集合包括{节点2,节点5,节点6,节点7},子任务3对应的预选节点集合包括{节点6和节点7}。
在一些实施例中,在预选过程中,可以按照特定顺序,依次选择多个子任务的预选节点集合。在一个可选的例子中,基于前面子任务的预选节点集合来确定后面子任务的预选节点集合。例如,后面子任务的预选节点是从前面子任务的预选节点集合中选择的,其中,该前面子任务的数量可以为一个或两个以上,例如,该前面子任务可以是该后面子任务之前的所有子任务,该前面子任务和后面子任务可以相邻或者间隔至少一个子任务,但本公开实施例不限于此。
在一些实施例中,也可以综合考虑多个子任务的资源需求信息,来进行多子任务的预选节点集合的确定,例如,为所述多个子任务选择共用的预选节点集合,其中,该共用的预选节点集合中包含的预选节点能够满足多个子任务中至少两个子任务的资源需求。
在一些实施例中,在优选过程中,可以并行地确定多个子任务的目标节点,或者结合多个子任务的候选节点集合,来综合确定多个子任务的目标节点。例如,对多个子任务中至少一部分子任务的候选节点集合求交来确定该至少一部分子任务的目标节点,但本公开实施例不限于此。
在一些实施例中,可以按照特定顺序,例如基于多个子任务的优先级,依次从所述多个子任务的预选节点集合中确定所述多个子任务对应的目标节点。其中,在一个可选例子中,每确定一个子任务对应的目标节点,更新该目标节点的当前状态信息。例如,基于该子任务对应的资源需求信息,更新该目标节点的当前状态信息。这样,在进行后续子任务的目标节点的确定过程中,该目标节点上与该子任务所需求的资源对应的部分将不可用,从而能够保证多个子任务的顺利执行。在另一个可选例子中,基于前面子任务选择的目标节点,来选择后面子任务的目标节点。例如,后面的子任务优先选择前面子任务的目标节点作为自己的目标节点,除非该后面的子任务的候选节点集合中不包含该目标节点或者该目标节点的其他关键因素不满足后面子节点的需求,但本公开实施例不限于此。
在本公开实施例中,可以基于一定策略从预选节点集合中选取目标节点。例如,基于分布式系统的当前资源状态信息或各个预选节点的当前状态信息和多个子任务的资源需求信息进行目标节点的选取。在一些实施例中,可以确定每个子任务的预选节点集合中包含的预选节点的分值,例如,基于子任务的预选节点集合中各个预选节点的当前状态信息和该子任务的资源需求信息,确定各个预选节点的分值,并基于每个子任务的预选节点集合中包含的预选节点的分值,从所述每个子任务的预选节点集合中选择所述每个子任务的目标节点。例如,可以从预选节点集合中包括的至少一个预选节点中选取分数最高的预选节点作为目标节点。或者,基于分数和其他因素共同进行目标节点的选取。
接着前面的例子,以基于任务优先级依次确定多个子任务的目标节点为例,首先可以确定子任务1的预选节点集合中各个预选节点的分值,假设节点1,节点2和节点3的分值分别为80,90和70,则确定节点2为子任务1的目标节点,并对节点2的当前状态信息进行更新。然后,确定子任务2的预选节点集合中各个预选节点的分值,其中,节点2的分值是基于节点2的更新后的当前状态信息确定的,假设节点2,节点5,节点6和节点7的分值分别为60,80,75和70,则确定节点5为子任务2的目标节点,并对节点5的当前状态信息进行更新。最后,确定子任务3的预选节点集合中各个预选节点的分值,假设节点6和节点7的分值分别为70和60,则确定节点6为子任务3的目标节点。
在一些实施例中,可以确定任务的任务类型,并基于任务的任务类型,为多个子任务进行目标节点的分配。例如,可以将任务分成通信密集型任务和计算密集型任务两类。其中,通信密集型任务是指任务处理过程中各个子任务之间的通信比较频繁的任务,计算密集型任务是指任务处理过程中计算量比较大的任务。
具体地,可以基于任务的多个子任务的整体情况来确定任务的任务类型。作为一个可选例子,可以基于所述任务的多个子任务的计算量与通信量,确定任务的任务类型。例如,在计算量大于预设的计算量阈值的情况下,认为该任务是计算密集型任务;再例如,在通信量大于预设的通信量阈值的情况下,认为该任务是通信密集型任务。再例如,如果计算量和通信量均超过对应的预设阈值,则可以将其确定为通信密集型任务。作为另一个可选例子,还可以根据历史调度经验确定任务类型。对于某种特定的任务,如果调度器在历史调度过程中将该任务确定为计算密集型任务,则确定该任务为计算密集型任务;如果调度器在历史调度过程中将该任务确定为通信密集型任务,则确定该任务为通信密集型任务。或者,还可以基于其他方式确定任务的任务类型。或者,基于用户提供信息,例如,用户提供的任务类型信息,或者用户提供的任务的计算量和/或通信量信息,等等,来确定任务的任务类型。本公开实施例对确定任务类型的具体实现不做限定。
在本公开实施例中,可以基于任务类型确定多个子任务的目标节点,以使得任务整体能够更高效地执行。例如,对于通信密集型任务,可以将该任务中的多个子任务尽量分配到数量较少的目标节点上,从而减少通信开销;在例如,对于计算密集型任务,则可选地只需要目标节点上的资源能够满足所述任务的多个子任务的需求即可,或者优先选择计算性能较好的节点,或者优先利用节点的碎片资源,或者尽力在保证计算资源符合用户需求的前提下优化通信开销,等等。
在一些可选例子中,可以根据所述任务的任务类型,进行以上预选和/或优选过程。
在一些实施例中,基于任务的任务类型,进行以上预选过程,例如,对于通信密集型任务,可以将可用资源类型和/或可用资源数量较少等明显不可能满足多个子任务中较多子任务需求的节点剔除,再例如,预选节点集合包含的节点数量控制在一定范围之内,其中,可以优先选择资源类型较多和/或数量较多的节点,或者资源类型与多个子任务的整体需求资源比较吻合的节点作为预选节点。在一些可选例子中,也可以为通信密集型任务的多个子任务中的部分或所有子任务确定一个预选节点集合,而非为每个子任务确定单独的预选节点集合,但本公开实施例不限于此。
在另一些实施例中,基于任务类型,进行以上优选过程。例如,基于任务类型,确定选择目标节点的策略。例如,在确定一个子任务的目标节点的过程中,优先选择为其前面的子任务确定的目标节点。例如,任务包括子任务1和子任务2,子任务1的目标节点包括节点1和节点2,则可以优选为子任务2选择节点1和节点2作为其目标节点。在一些可选例子中,可以根据子任务的预选节点集合中包含的每个节点的当前状态信息和任务的任务类型,确定该子任务的预选节点集合中包含的每个预选节点的分值。在另一些实施例中,还可以根据其他方式来确定子任务的预选节点集合中包含的每个预选节点的分值,此处不再赘述。
在一个例子中,对于通信密集型任务,由于期望尽可能减少目标节点的数量从而减少子任务间的通信代价,因此,对于通信密集型任务的子任务,资源分布集中的节点的分值一般高于资源分布分散的节点。例如,一个子任务的预选节点1的可用磁盘容量分布在两个磁盘上,而预选节点2的可用磁盘容量分布在一个磁盘上,因此,该子任务的预选节点2比预选节点1的分值高。在另一个例子中,对于计算密集型任务,计算能力较强的节点的分值一般高于计算能力较弱的节点的分值。例如,一个子任务的预选节点1的处理器包括1个处理器核心,该子任务的预选节点2的处理器包括2个处理器核心,则该子任务的预选节点2比预选节点1的分值高。
以上流程以子任务为资源分配对象为例进行说明。在一些实施例中,还可以将所述任务的多个子任务划分为至少一个分组,其中,每个分组包括所述多个子任务中的至少一个子任务;分别为所述任务的至少一个分组中每个分组分配对应的目标节点,其中,同一分组中的各个子任务分配到同一目标节点。
例如,将多个子任务随机分配,或者将优先级相近的子任务划分到一个分组,或者将具有或不具有依赖关系的子任务划分到一个分组,或者,将资源需求数量差别较大的子任务划分到一个分组,或者将需求资源类型相同的子任务划分到一个分组,等等,本公开实施例对具体的分组方式不做限定。这样,以分组为单位进行目标节点的确定,能够在不明显影响任务执行效率的前提下提高资源分配过程的效率。
在一些实施例中,可以根据所述任务的任务类型将所述任务的多个子任务划分为至少一个分组。例如,对于通信密集型任务,可以将所述任务的多个子任务分配到数量最少的目标节点上,从而减少子任务间的通信代价,例如,将多个子任务中的所有子任务划分到同一个分组,以使得所有子任务在同一目标节点上执行。在一些可选例子中,可以根据所述任务的多个子任务的资源需求信息,确定所述任务所需的总节点数量;根据所述总节点数量,将所述任务的多个子任务划分为至少一个分组。再例如,对于计算密集型任务,可以将所述任务的多个子任务中的每个子任务作为一个分组,也就是说,以子任务为单位进行目标节点的确定。
例如,假设一个任务包括4个子任务,每个子任务需要一个GPU,分布式系统中每个节点的可用GPU数量为2个,则至少需要2个节点来执行所述任务中的4个子任务。因此,若该任务为通信密集型任务,可以将这4个子任务平均分为2组,其中,分组可以是随机进行的,或者也可以是根据子任务的资源需求信息进行的,等等。若该任务为计算密集型任务,可以将这4个子任务划分为4个分组,每个子任务作为一个分组。
在分组的情况下,可选地,以上针对子任务的目标节点的确定也可以适用于对分组的目标节点的确定,下面将进行详细介绍。
例如,在一些实施例中,在所述任务的至少一个分组中的每个分组均存在对应的目标节点的情况下,确定分布式系统中的当前可用资源满足所述任务的多个子任务所需的总资源。在另一些实施例中,在所述任务的至少一个分组不存在对应的目标节点的情况下,确定分布式系统中的当前可用资源不满足所述任务的多个子任务所需的总资源。
再例如,可以基于所述分布式系统的当前资源状态信息和所述至少一个分组中每个分组的资源需求信息,按照特定顺序依次为所述至少一个分组中的每个分组进行目标节点的确定。分组的资源需求信息可以基于分组中包括的至少一个子任务的资源需求信息来确定,例如,分组所需求的资源可以为分组中包括的所有子任务所需求的同一类型资源的总和。其中,所述特定顺序可选地可以根据所述多个分组的优先级和依赖关系中的至少一项或其他因素来确定。分组的优先级可以基于分组中包括的两个以上子任务的优先级来确定,例如,将分组的优先级确定为两个以上子任务的最高优先级,或者将分组的优先级确定为两个以上子任务的平均优先级,等等。分组之间的依赖关系可以基于不同分组包括的子任务之间的依赖关系确定,例如,假设分组1中的1个子任务依赖于分组2中的1个子任务,则确定分组1依赖于分组2,等等,本公开实施例不限于此。
在一些实施例中,还可以基于所述分布式系统的当前资源状态信息和每个分组的资源需求信息,确定所述每个分组的预选节点集合,并按照一定次序依次从每个分组的预选节点集合中确定所述分组的目标节点。
在本公开实施例中,首先对整个任务进行目标节点的确定,例如执行以上预选和优选操作,最终得到整个任务对应的目标节点的信息,然后再将任务分拆到子任务级别做一次绑定,即以子任务为单位进行目标节点的绑定。
在一些实施例中,在分布式系统中的当前可用资源不满足所述任务的多个子任务所需的总资源的情况下,可以对所述任务包括的多个子任务均进行延迟分配。所述延迟分配,可以是在下一个分配周期所述任务包括的多个子任务进行分配。在下一个分配周期,仍然是在分布式系统中的当前可用资源满足所述任务的多个子任务所需的总资源的情况下,才分别为所述任务的多个子任务分配对应的目标节点。如果在下一个分配周期,分布式系统中的当前可用资源仍不满足所述任务的多个子任务所需的总资源,则继续进行延迟分配。
在一些实施例中,每确定当前子任务或分组对应的目标节点之后,可以进行当前子任务或分组与对应的目标节点的虚拟分配,或者进行当前子任务或当前分组与对应的目标节点上的资源的虚拟绑定。而在确定分布式系统中的当前可用资源不满足所述任务的多个子任务所需的总资源的情况下,例如,为某个子任务找不到对应的目标节点的情况下,可以将上述虚拟分配或虚拟绑定视为失效,从而使得其对应的目标节点和其上资源可以分配给其他任务。
在一些实施例中,在分别为所述任务的多个子任务分配对应的目标节点之后,可以对所述任务的多个子任务进行同步调度。
应当说明的是,在本公开实施例中,分配是指将子任务分发到对应的目标节点,调度是指在将子任务分发到对应的目标节点之后,由对应的目标节点执行子任务。
如图4所示,在传统的调度方式中,为了实现gang scheduling,调度器会按次序处理任务中的多个子任务,并当一个子任务可以被调度时即刻将该子任务实际分配(并非指本公开实施例所述的模拟分配)到对应的目标节点,并占用目标节点上的资源对该子任务进行调度。对一个任务来说,该任务中的每个子任务在分配时的当前可用资源是动态变化,逐渐变少的,这种调度方式称为taskby task的调度方式。而且,在进行子任务的调度时,并没有将同一个任务中的多个子任务的调度情况与资源需求进行统筹考虑,导致每次分配都是独立的行为。而在实际情况中,同一个任务中的多个子任务之间往往存在一些关联,例如,一些待调度任务往往伴随着大量的通信需求,如果一个任务的某些子任务被分配到通信开销很大的多个节点上,将会显著影响整个任务的运行效率。
本公开实施例中则是以任务为粒度进行子任务分配和调度。如图5所示,首先仍然按照优先级获取所有任务,对于每一个任务,统筹考虑整个任务,只有在分布式系统中的当前可用资源满足任务的多个子任务所需的总资源的情况下,才分别为所述任务的多个子任务分配对应的目标节点,然后对所述多个子任务进行同步调度,即以任务为单位进行资源分配和调度。
区别于之前按照子任务的需求做task by task的调度方式,本公开实施例在为任务选择节点时统筹考虑了整个任务,通过将整个任务作为调度的最小单位,能够更好地利用任务内各个子任务的相互关系与需求情况,为整个任务从集群中选择出更加合适的调度节点,从而提高任务的运行效率和集群的资源利用效率。
如图6所示,是本公开一些实施例的调度逻辑的示意图。为了降低调度复杂度,对于各个待调度任务可做如下假设:
(1)每一个任务拥有多个子任务;
(2)每个子任务在资源需求上是同质的,即对资源的需求相同;
(3)每个用户提交的任务,在提交时指定了每个子任务对资源的需求量,并在整个任务处理过程中子任务的数目和各个子任务的资源需求量保持不变。
首先进行预选过程,剔除不能满足用户的任务的节点。具体来说包括以下步骤:
(1)对任务的每个子任务,分别确定该子任务的预选节点集合,该子任务的预选节点集合之外的节点必然是无法支持该子任务在其上运行的。在这里,任务可称为job,子任务可称为task。
在一些可选例子中,可以从前面子任务的预选节点集合中,确定后面子任务的预选节点,其中子任务的顺序可选地可以基于子任务的优先级确定。例如,假设分布式系统中包括节点1至节点5,一个任务包括子任务1、子任务2和子任务3,则可以先为子任务1确定预选节点,假设为节点1,节点2和节点3;然后,从节点1,节点2和节点3中确定子任务2的预选节点,假设为节点2和节点3;再从节点2和节点3中确定子任务3的预选节点,假设为节点3。通过这种确定预选节点集合的方式,对于有一定量的通信需求的任务,尤其是通信密集型任务来说,能够提高确定预选节点集合的效率,进而提高任务分配效率。
(2)对预选节点集合中每个预选节点进行验证,确定该预选节点上的总资源是否满足分配到该预选节点上的所有子任务的总资源需求。若是,则进行优选过程,否则,重新进行预选过程。
其中,该步骤是可选的,预选节点的验证可以提高整个任务分配的可靠性。在进行预选过程之前,还可以先进行节点集合分割,即,对各个节点进行分组,分组的依据可以是节点所属的集群,即,将不同集群上的节点划分为不同的分组。通过进行节点集合分割,可以使不同的任务仅被分配到特定分组的节点上。
然后,进行优选过程,选择出最适合用户的任务的目标节点。具体来说,可以包括以下步骤:
(1)通过用户任务中的用户提供信息与调度器的历史经验,获取任务在训练过程中的计算量与通信量,并根据计算量与通信量判断用户的任务是计算密集型还是通信密集型。
在一些可选例子中,任务类型的确定也可以在以上预选过程中或预选过程之前执行,并基于任务类型进行子任务的预选节点集合的确定。
在一些可选例子中,基于任务类型,进行优选过程中多个子任务目标节点的确定。如果是通信密集型任务,把该任务置放(即分配)到最少数量的物理节点(即目标节点)上,具体分配到的物理节点的数量由节点的可用资源与任务所需的资源共同决定,如果不能满足这种置放约束则对任务中的多个子任务均延迟分配。如果是计算密集型任务,则放宽这种置放约束,即使无法满足最少物理节点,只要可以选择出资源足够的节点满足任务需求就进行分配,否则就延迟分配。
(2)对集群节点按照空余资源进行从大到小打分排序,得到预选节点集合到任务的映射的分值,其中,预选节点的分值可以根据分布式系统的集群中的节点负载和节点资源碎片情况来确定。节点负载是指集群中的各个节点当前时刻的当前可用资源总量和资源使用量。资源碎片情况是指节点上的资源分布。
(3)对所有上一步选出的节点,从高分到低分依次将任务的task进行置放,直到不能置放或任务的全部task都被置放。
(4)任务状态检查。如果任务还有空余task没有置放,说明集群资源不够,分配失败。则释放任务所占用的资源,延迟分配。如果job没有空余task,并且任务类型是通信密集型,则判断是否满足最少节点要求。满足则分配成功,不满足则分配失败并且释放资源,延迟分配。
本公开实施例的方法可以应用于任务编排系统或云平台,所述任务编排系统可基于Kubernetes等平台实现。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
如图7所示,本公开实施例还提供一种任务调度装置,所述装置包括:
获取模块701,用于获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;
第一分配模块702,用于在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,所述装置还包括:第一确定模块,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点;所述第一分配模块用于:在成功为所述多个子任务中的每个子任务确定对应的目标节点的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,所述装置还包括:第一确定模块,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点;所述第一分配模块用于:在成功为所述多个子任务中的每个子任务确定对应的目标节点的情况下,分别为所述任务的多个子任务分配对应的目标节点。
在一些实施例中,所述第一确定模块用于:基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,按照特定顺序依次确定多个子任务对应的目标节点。
在一个可选例子中,所述多个子任务的资源需求信息包括所述多个子任务中每个子任务的资源需求信息,其中,所述资源需求信息可以包括所需的资源类型和每种类型的资源数量,或者进一步包括其他信息。
在一个可选例子中,所述分布式系统的当前资源状态信息可以包括所述分布式系统中多个节点的当前状态信息,其中,当前状态信息用于指示资源是否可用、可用资源的类型和数量、负载情况、拓扑连接信息中的至少一种,或者进一步包括其他信息。
在一些实施例中,所述装置还包括:更新模块,用于在每次确定为一个子任务分配的目标节点之后,更新分布式系统的当前资源状态信息,并基于更新后的当前资源状态信息确定下一个子任务对应的目标节点。
在一些实施例中,所述多个子任务的目标节点的依次确定的顺序是按照子任务的优先级、子任务之间的依赖关系中的至少一项得到的。
在一些实施例中,所述第一确定模块包括:第一确定单元,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,依次为所述多个子任务确定目标节点;更新单元,用于在每确定一个子任务的目标节点后,基于所述一个子任务的资源需求信息,更新所述分布式系统的当前资源状态信息。
在一些实施例中,所述装置还包括:第二确定模块,用于在未能成功为所述多个子任务中的至少一个子任务确定对应的目标节点的情况下,确定所述分布式系统的当前可用资源不满足所述多个子任务中每个子任务所需求的资源。
在一些实施例中,所述第一确定单元包括:确定子单元,用于基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合;选择子单元,用于从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点。
其中,不同子任务的预选节点集合可以相同或不同。在一些例子中,多个子任务可以具有相同的预选节点集合。
在一些实施例中,所述确定子单元用于:基于所述分布式系统的当前资源状态信息和每个子任务的资源需求信息,确定所述每个子任务的预选节点集合。
多个子任务的预选节点集合的确定可以是独立的,相互之间不存在依赖关系,例如,可以并行执行或者以任意先后顺序执行。例如,多个子任务的预选节点集合是基于相同的分布式系统的当前资源状态信息确定的,也就是说,分布式系统的当前资源状态信息在预选过程中不进行更新。例如,每个子任务的预选节点集合的确定只跟自己的资源需求信息有关系,而与其他子任务的资源需求信息无关。
在一些实施例中,所述确定子单元用于:按照特定顺序依次确定所述多个子任务中每个子任务的预选节点集合,其中,所述多个子任务中第一子任务的预选节点集合中的预选节点是从所述多个子任务中第二子任务的预选节点集合选取的,其中,所述第二子任务的顺序位于所述第一子任务之前。
在一些实施例中,按照特定顺序依次从所述多个子任务中每个子任务的预选节点中选择所述每个子任务的目标节点,其中,优先选择所述多个子任务中第二子任务的目标节点作为所述多个子任务中第一子任务的目标节点,其中,所述第二子任务的顺序位于所述第一子任务之前。
在一些实施例中,所述选择子单元用于:基于所述分布式系统的当前资源状态信息,从所述多个子任务中第一子任务的预选节点集合中确定所述第一子任务的目标节点;基于所述第一子任务的资源需求信息,更新所述分布式系统的当前资源状态信息,并基于所述分布式系统的更新后的当前资源状态信息,从所述多个子任务中第二子任务的预选节点集合中确定所述第二子任务的目标节点。
在一个可选例子中,基于第一子任务的预选节点集合中每个预选节点的当前状态信息,从所述第一子任务的预选节点集合中确定所述第一子任务的目标节点,并基于所述第一子任务的所需资源信息,更新所述第一子任务的目标节点的当前状态信息。
在一些实施例中,所述选择子单元用于:根据所述任务的任务类型,确定每个子任务的预选节点集合中包含的预选节点的分值;基于每个子任务的预选节点集合中包含的预选节点的分值,从所述每个子任务的预选节点集合中选择所述每个子任务的目标节点。
在一个可选例子中,基于所述任务的任务类型,确定所述预选节点集合中每个预选节点的分值确定策略。
在一些实施例中,所述装置还包括:第二确定模块,用于确定所述任务的任务类型;其中,所述多个子任务对应的目标节点是基于所述任务的任务类型确定的。
在一些实施例中,所述第一分配模块包括:分组单元,用于将所述任务的多个子任务划分为至少一个分组,其中,每个分组包括所述多个子任务中的至少一个子任务;分配单元,用于分别为所述至少一个分组中每个分组分配对应的目标节点,其中,同一分组中的各个子任务分配到同一目标节点。
在一些实施例中,所述分组单元用于:根据所述任务的任务类型,将所述任务的多个子任务划分为至少一个分组。
在一些实施例中,所述任务的任务类型为计算密集型或通信密集型。
在一些实施例中,所述分组单元用于:在所述任务的任务类型为通信密集型的情况下,根据所述任务的多个子任务的资源需求信息,确定所述多个子任务所需的总节点数量,并根据所述总节点数量,将所述任务的多个子任务划分为至少一个分组。
在一些实施例中,在所述任务的任务类型为计算密集型的情况下,将所述多个子任务中的每个子任务作为一个分组。
在一些实施例中,分别为所述至少一个分组中每个分组确定预选节点集合,并依次从所述至少一个分组中每个分组的预选节点集合中选取所述分组的目标节点。
在一些实施例中,所述装置还包括:延迟模块,用于在分布式系统中的当前可用资源不满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,对所述任务包括的多个子任务均进行延迟分配。
在一些实施例中,所述装置还包括:调度模块,用于在分别为所述任务的多个子任务分配对应的目标节点之后,对所述任务的多个子任务进行同步调度。
在一些实施例中,所述装置应用于任务编排系统。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中,再从内存中读取到处理器中运行形成的。从硬件层面而言,如图8所示,为本说明书装置所在计算机设备的一种硬件结构图,除了图8所示的处理器801、内存802、网络接口803、以及非易失性存储器804之外,实施例中装置所在的服务器或电子设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
相应地,本公开实施例还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
相应地,本公开实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
本公开可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读命令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员在考虑说明书及实践这里公开的说明书后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
Claims (20)
1.一种任务调度方法,其特征在于,所述方法包括:
获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;
在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点;
所述在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点,包括:
在成功为所述多个子任务中的每个子任务确定对应的目标节点的情况下,分别为所述任务的多个子任务分配对应的目标节点。
3.根据权利要求2所述的方法,其特征在于,所述基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点,包括:
基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,依次为所述多个子任务确定目标节点;
在每确定一个子任务的目标节点后,基于所述一个子任务的资源需求信息,更新所述分布式系统的当前资源状态信息。
4.根据权利要求2或3所述的方法,其特征在于,其中,在未能成功为所述多个子任务中的至少一个子任务确定对应的目标节点的情况下,确定所述分布式系统的当前可用资源不满足所述多个子任务中每个子任务所需求的资源。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,为所述多个子任务确定目标节点,包括:
基于所述分布式系统的当前资源状态信息和所述多个子任务的资源需求信息,确定所述多个子任务中每个子任务的预选节点集合;
从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点。
6.根据权利要求5所述的方法,其特征在于,所述确定所述多个子任务中每个子任务的预选节点集合,包括:
按照特定顺序依次确定所述多个子任务中每个子任务的预选节点集合,其中,所述多个子任务中第一子任务的预选节点集合中的预选节点是从所述多个子任务中第二子任务的预选节点集合选取的,其中,所述第二子任务的顺序位于所述第一子任务之前。
7.根据权利要求5或6所述的方法,其特征在于,所述从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点,包括:
按照特定顺序依次从所述多个子任务中每个子任务的预选节点中选择所述每个子任务的目标节点,其中,优先选择所述多个子任务中第二子任务的目标节点作为所述多个子任务中第一子任务的目标节点,其中,所述第二子任务的顺序位于所述第一子任务之前。
8.根据权利要求5至7任意一项所述的方法,其特征在于,所述从所述多个子任务中每个子任务的预选节点集合中选择所述每个子任务的目标节点,包括:
根据所述任务的任务类型,确定每个子任务的预选节点集合中包含的预选节点的分值;
基于每个子任务的预选节点集合中包含的预选节点的分值,从所述每个子任务的预选节点集合中选择所述每个子任务的目标节点。
9.根据权利要求2至8任意一项所述的方法,其特征在于,所述多个子任务依次进行目标节点的确定的顺序是基于子任务的优先级、子任务之间的依赖关系中的至少一项确定的。
10.根据权利要求1至9任意一项所述的方法,其特征在于,所述方法还包括:
确定所述任务的任务类型;
其中,所述多个子任务对应的目标节点是基于所述任务的任务类型确定的。
11.根据权利要求1至10任意一项所述的方法,其特征在于,所述分别为所述任务的多个子任务分配对应的目标节点,包括:
将所述任务的多个子任务划分为至少一个分组,其中,每个分组包括所述多个子任务中的至少一个子任务;
分别为所述至少一个分组中每个分组分配对应的目标节点,其中,同一分组中的各个子任务分配到同一目标节点。
12.根据权利要求11所述的方法,其特征在于,所述将所述任务的多个子任务划分为至少一个分组,包括:
根据所述任务的任务类型,将所述任务的多个子任务划分为至少一个分组。
13.根据权利要求10至12任意一项所述的方法,其特征在于,所述任务的任务类型为计算密集型或通信密集型。
14.根据权利要求11至13任意一项所述的方法,其特征在于,所述将所述任务的多个子任务划分为至少一个分组,包括:
在所述任务的任务类型为通信密集型的情况下,根据所述任务的多个子任务的资源需求信息,确定所述多个子任务所需的总节点数量,并根据所述总节点数量,将所述任务的多个子任务划分为至少一个分组;
和/或
在所述任务的任务类型为计算密集型的情况下,将所述多个子任务中的每个子任务作为一个分组。
15.根据权利要求1至14任意一项所述的方法,其特征在于,所述方法还包括:
在分布式系统中的当前可用资源不满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,对所述任务包括的多个子任务均进行延迟分配。
16.根据权利要求1至15任意一项所述的方法,其特征在于,所述方法还包括:
在分别为所述任务的多个子任务分配对应的目标节点之后,对所述任务的多个子任务进行同步调度。
17.根据权利要求1至16任意一项所述的方法,其特征在于,所述方法应用于任务编排系统。
18.一种任务调度装置,其特征在于,所述装置包括:
获取模块,用于获取任务的信息,所述任务的信息包括所述任务包括的多个子任务的资源需求信息;
第一分配模块,用于在分布式系统中的当前可用资源满足所述任务的多个子任务的资源需求信息对应的总资源的情况下,分别为所述任务的多个子任务分配对应的目标节点。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至17任意一项所述的方法。
20.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至17任意一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010165763.7A CN113391914A (zh) | 2020-03-11 | 2020-03-11 | 任务调度方法和装置 |
JP2021570920A JP2022539955A (ja) | 2020-03-11 | 2021-03-09 | タスクスケジューリング方法及び装置 |
KR1020217038822A KR20220002547A (ko) | 2020-03-11 | 2021-03-09 | 태스크 스케줄링 방법과 장치 |
PCT/CN2021/079810 WO2021180092A1 (zh) | 2020-03-11 | 2021-03-09 | 任务调度方法和装置 |
TW110108474A TWI786564B (zh) | 2020-03-11 | 2021-03-10 | 任務調度方法和裝置、儲存媒體及計算機設備 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010165763.7A CN113391914A (zh) | 2020-03-11 | 2020-03-11 | 任务调度方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391914A true CN113391914A (zh) | 2021-09-14 |
Family
ID=77615298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010165763.7A Pending CN113391914A (zh) | 2020-03-11 | 2020-03-11 | 任务调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391914A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816763A (zh) * | 2022-05-27 | 2022-07-29 | 江苏控智电子科技有限公司 | 一种采用大数据技术的计算机资源分配系统及方法 |
CN115310873A (zh) * | 2022-10-10 | 2022-11-08 | 广州优刻谷科技有限公司 | 面向元宇宙的数字资源调配方法、系统及存储介质 |
CN116109110A (zh) * | 2023-04-11 | 2023-05-12 | 华能信息技术有限公司 | 一种业务中台的任务调度方法 |
-
2020
- 2020-03-11 CN CN202010165763.7A patent/CN113391914A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816763A (zh) * | 2022-05-27 | 2022-07-29 | 江苏控智电子科技有限公司 | 一种采用大数据技术的计算机资源分配系统及方法 |
CN114816763B (zh) * | 2022-05-27 | 2024-04-05 | 京闽数科(北京)有限公司 | 一种采用大数据技术的计算机资源分配系统及方法 |
CN115310873A (zh) * | 2022-10-10 | 2022-11-08 | 广州优刻谷科技有限公司 | 面向元宇宙的数字资源调配方法、系统及存储介质 |
CN115310873B (zh) * | 2022-10-10 | 2023-06-30 | 广州优刻谷科技有限公司 | 面向元宇宙的数字资源调配方法、系统及存储介质 |
CN116109110A (zh) * | 2023-04-11 | 2023-05-12 | 华能信息技术有限公司 | 一种业务中台的任务调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021180092A1 (zh) | 任务调度方法和装置 | |
CN113391914A (zh) | 任务调度方法和装置 | |
CN102929707B (zh) | 并行任务动态分配方法 | |
CN112416585B (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
CN111538586A (zh) | 集群gpu资源管理调度系统、方法以及计算机可读存储介质 | |
JP2001142854A (ja) | 優先順位に基づくチャネル・サブシステム保留入出力作業キューの処理 | |
CN110262897B (zh) | 一种基于负载预测的Hadoop计算任务初始分配方法 | |
CN114787830A (zh) | 异构集群中的机器学习工作负载编排 | |
CN114356543A (zh) | 一种基于Kubernetes的多租户机器学习任务资源调度方法 | |
CN113342477A (zh) | 一种容器组部署方法、装置、设备及存储介质 | |
CN114968601B (zh) | 一种按比例预留资源的ai训练作业的调度方法和调度系统 | |
US20230037293A1 (en) | Systems and methods of hybrid centralized distributive scheduling on shared physical hosts | |
CN114386560A (zh) | 数据处理方法和设备 | |
CN114625500A (zh) | 云环境下拓扑感知的微服务应用调度的方法及应用 | |
CN110795226A (zh) | 利用计算机系统处理任务的方法、电子设备和存储介质 | |
CN114968566A (zh) | 一种面向共享式gpu集群下的容器调度方法及装置 | |
CN112860383A (zh) | 集群资源调度方法、装置、设备及存储介质 | |
CN113672391B (zh) | 一种基于Kubernetes的并行计算任务调度方法与系统 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN109150759B (zh) | 一种渐进式非阻塞机会资源预留方法及系统 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN112256441B (zh) | 神经网络推理的内存分配方法及装置 | |
CN113641448A (zh) | 一种边缘计算容器分配和层下载排序体系结构及其方法 | |
WO2016118164A1 (en) | Scheduler-assigned processor resource groups | |
CN109298949B (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 |