CN109947565A - 用于分配计算任务的方法和装置 - Google Patents
用于分配计算任务的方法和装置 Download PDFInfo
- Publication number
- CN109947565A CN109947565A CN201910175565.6A CN201910175565A CN109947565A CN 109947565 A CN109947565 A CN 109947565A CN 201910175565 A CN201910175565 A CN 201910175565A CN 109947565 A CN109947565 A CN 109947565A
- Authority
- CN
- China
- Prior art keywords
- subgraph
- node
- free
- calculating task
- memory
- 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.)
- Granted
Links
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- 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
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了用于分配计算任务的方法和装置。该方法的一具体实施方式包括:根据图的计算任务所需的计算资源,将图分割为子图集合;基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;响应于确定节点集群中存在与子图集合中的子图适配的节点,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;基于子图集合中的子图的计算结果,合成图的计算结果。该实施方式提高了节点集群中的空闲资源的利用率,进而提高了图的计算效率。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及用于分配计算任务的方法和装置。
背景技术
图(Graph)是计算机科学中最常用的一类抽象数据结构,在结构和语义方面比线性表和树更加复杂,更具有一般性表示能力。在当今大数据的背景下,呈现出越来越多的大规模图分析应用需求。
在图的计算中,对于大规模的图结构,需要分割成多个子图分别计算。目前,大部分分布式集群系统只是将划分好的子图直接交给节点处理。例如,按照节点的标识的顺序,依次为节点集群中的各个节点分配子图的计算任务,分配结束再按序重新分配,轮询执行。又例如,初始时,节点集群中的所有节点均处于解锁状态,当为节点集群中的节点被分配子图的计算任务时,变成加锁状态,计算任务完成后,再次变成解锁状态。因此,依次为解锁状态的节点分配子图的计算任务,当节点集群中的所有节点均处于加锁状态时,尚未分配的子图的计算任务会处于等待状态。
发明内容
本申请实施例提出了用于分配计算任务的方法和装置。
第一方面,本申请实施例提供了一种用于分配计算任务的方法,包括:根据图的计算任务所需的计算资源,将图分割为子图集合;基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;响应于确定节点集群中存在与子图集合中的子图适配的节点,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;基于子图集合中的子图的计算结果,合成图的计算结果。
在一些实施例中,子图集合中的子图相互之间不存在相同的顶点和边,且子图集合中的子图的计算任务的数目不大于节点集群对应的最大逻辑CPU的数目。
在一些实施例中,与子图集合中的子图适配的节点的空闲逻辑CPU的数目等于子图集合中的子图的计算任务的数目,且空闲内存不小于加载子图集合中的子图的元数据所需要的内存。
在一些实施例中,基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点,包括:将子图集合中的子图的标识入队,生成子图队列;执行以下适配步骤:对于子图队列的队头元素对应的子图,基于该子图的计算任务所需的计算资源查询节点资源状态表,确定节点集群中是否存在与该子图适配的节点,其中,节点资源状态表用于记录节点集群中的节点的资源状态,资源状态包括空闲逻辑CPU的数目和空闲内存大小;响应于确定存在与该子图适配的节点,将队头元素出队,并继续执行适配步骤。
在一些实施例中,将子图集合中的子图的标识入队,生成子图队列,包括:按照计算任务的优先级或计算任务的数目将子图集合中的子图的标识依次入队,生成子图队列。
在一些实施例中,该方法还包括:响应于确定节点集群中不存在与该子图适配的节点,按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递增上限为节点集群对应的最大逻辑CPU的数目;响应于确定存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行适配步骤。
在一些实施例中,该方法还包括:响应于确定不存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递减下限为1;响应于确定存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行适配步骤。
在一些实施例中,该方法还包括:当节点集群中的节点被选中后或子图的计算任务完成时,更新节点资源状态表中的节点集群中的节点的资源状态。
在一些实施例中,该方法还包括:响应于确定不存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,在节点资源状态表更新之后,继续执行适配步骤。
第二方面,本申请实施例提供了一种用于分配计算任务的装置,包括:分割单元,被配置成根据图的计算任务所需的计算资源,将图分割为子图集合;适配单元,被配置成基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;计算单元,被配置成响应于确定节点集群中存在与子图集合中的子图适配的节点,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;合成单元,被配置成基于子图集合中的子图的计算结果,合成图的计算结果。
在一些实施例中,子图集合中的子图相互之间不存在相同的顶点和边,且子图集合中的子图的计算任务的数目不大于节点集群对应的最大逻辑CPU的数目。
在一些实施例中,与子图集合中的子图适配的节点的空闲逻辑CPU的数目等于子图集合中的子图的计算任务的数目,且空闲内存不小于加载子图集合中的子图的元数据所需要的内存。
在一些实施例中,适配单元包括:生成子单元,被配置成将子图集合中的子图的标识入队,生成子图队列;适配子单元,被配置成执行以下适配步骤:对于子图队列的队头元素对应的子图,基于该子图的计算任务所需的计算资源查询节点资源状态表,确定节点集群中是否存在与该子图适配的节点,其中,节点资源状态表用于记录节点集群中的节点的资源状态,资源状态包括空闲逻辑CPU的数目和空闲内存大小;执行子单元,被配置成响应于确定存在与该子图适配的节点,将队头元素出队,并继续执行适配步骤。
在一些实施例中,生成子单元进一步被配置成:按照计算任务的优先级或计算任务的数目将子图集合中的子图的标识依次入队,生成子图队列。
在一些实施例中,适配子单元进一步被配置成:响应于确定节点集群中不存在与该子图适配的节点,按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递增上限为节点集群对应的最大逻辑CPU的数目;响应于确定存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行所述适配步骤。
在一些实施例中,适配子单元进一步被配置成:响应于确定不存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递减下限为1;响应于确定存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行适配步骤。
在一些实施例中,该装置还包括:更新单元,被配置成当节点集群中的节点被选中后或子图的计算任务完成时,更新节点资源状态表中的节点集群中的节点的资源状态。
在一些实施例中,适配子单元进一步被配置成:响应于确定不存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,在节点资源状态表更新之后,继续执行适配步骤。
第三方面,本申请实施例提供了一种服务器,该服务器包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
本申请实施例提供的用于分配计算任务的方法和装置,首先根据图的计算任务所需的计算资源,将图分割为子图集合;然后基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;在确定节点集群中存在与子图集合中的子图适配的节点的情况下,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;最后基于子图集合中的子图的计算结果,合成图的计算结果。利用节点集群中与子图集合中的子图适配的节点执行子图集合中的子图的计算任务,提高了节点集群中的空闲资源的利用率,进而提高了图的计算效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构;
图2是根据本申请的用于分配计算任务的方法的一个实施例的流程图;
图3是根据本申请的用于分配计算任务的方法的又一个实施例的流程图;
图4是图3所示的用于分配计算任务的方法的一个应用场景的示意图;
图5是根据本申请的用于分配计算任务的装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于分配计算任务的方法或用于分配计算任务的装置的实施例的示例性系统架构100。
如图1所示,系统架构100中可以包括服务器101、网络102和节点集群103。节点集群103可以包括节点1031、1032、1033、1034。网络102用以在服务器101和节点集群103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器101可以通过网络102与节点集群103交互,以接收或发送消息等。服务器101可以将图分割为子图集合,并将子图集合的计算任务分配给节点集群103进行图的计算。节点集群103可以将子图集合中的子图的计算结果发送给服务器101,以供服务器101合成图的计算结果。
需要说明的是,服务器101可以是硬件,也可以是软件。当服务器101为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器101为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本申请实施例所提供的用于分配计算任务的方法一般由服务器101执行,相应地,用于分配计算任务的装置一般设置于服务器101中。
应该理解,图1中的服务器、网络和节点集群,以及节点集群中的节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务器、网络和节点集群,以及节点集群中的节点。
继续参考图2,其示出了根据本申请的用于分配计算任务的方法的一个实施例的流程200。该用于分配计算任务的方法,应用于分配计算任务库服务器,包括以下步骤:
步骤201,根据图的计算任务所需的计算资源,将图分割为子图集合。
在本实施例中,用于分配计算任务的方法的执行主体(例如图1所示的服务器101)可以根据图的计算任务所需的计算资源对图进行分割,以得到子图集合。
实践中,图可以是将自然界中的事物,以及事物之间的关系,分别抽象表达成为顶点以及顶点间的边的结构数据。例如,对应于互联网来说,页面可以看作顶点,页面之间的超链接关系可以看作边。又例如,对应于社交网络来说用户可以看作顶点,用户之间建立的关系可以看作边,关系的类别可以看作权重。再例如,对应于大型电商来说,用户和商品可以看作顶点,它们之间的购买关系可以看作边,购买次数可以看作权重。
具体地,图可以由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E)。其中,G表示一个图,V是图G中顶点的集合Vertices,E是图G中边的集合Edges。根据E是否有方向,图可以分为有向图和无向图。根据E是否有权重,图可以分为权重图和非权重图。
这里,计算任务可以是计算任务线程。计算任务所需的计算资源可以是执行计算任务线程所需的逻辑CPU(Central Processing Unit,中央处理器)和内存。
通常,对于大规模的图结构,需要将其分割成子图集合,再分发到节点集群中进行图的计算。其中,图的计算表示计算的数据来源于图,但计算的类型不进行限定,可以包括图计算。
可选地,子图集合中的子图相互独立。也就是说,子图集合中的任意两个子图相互之间不存在相同的顶点和边。这样,可以确保子图的计算任务所需的计算资源全部存储在该子图中,不需要使用该子图外的其他计算资源。
在本实施例的一些可选的实现方式中,子图集合可以满足以下条件:其一,子图集合中的子图相互之间不存在相同的顶点和边;其二,子图集合中的每个子图的计算任务的数目不大于节点集群对应的最大逻辑CPU的数目。通常,在同一时刻,一个逻辑CPU仅能处理一个计算任务,子图的计算任务不大于节点集群对应的最大逻辑CPU的数目可以使子图的全部计算任务尽可能地被节点在同一时刻执行,从而提高图的计算效率。其中,节点的逻辑CPU的数目等于节点的物理CPU的数目、物理CPU的核数和超线程的数目三者的乘积。节点集群对应的最大逻辑CPU的数目可以是节点集群中的每个节点的逻辑CPU的数目中的最大值。
另外,子图集合中的每个子图保存了其上的各个顶点和边的信息、子图的总存储大小和计算任务序列。
步骤202,基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点。
在本实施例中,对于子图集合中的每个子图,上述执行主体可以基于该子图的计算任务所需的计算资源,确定节点集群(例如图1所示的节点集群103)中是否存在与该子图适配的节点(例如图1所示的节点1031、1032、1033、1034)。在节点集群中存在与子图集合中的子图适配的节点的情况下,执行步骤203。其中,与子图适配的节点可以是能够执行子图的所有计算任务的节点。
在本实施例的一些可选的实现方式中,与子图集合中的子图适配的节点可以满足以下条件:其一,与子图集合中的子图适配的节点的空闲逻辑CPU的数目等于子图集合中的子图的计算任务的数目;其二,空闲内存不小于加载子图集合中的子图的元数据所需要的内存。这样,与子图适配的节点不仅能够在同一时刻执行子图的所有计算任务,还能够充分利用空闲逻辑CPU和空闲内存,以提高节点集群中的节点的空闲资源的利用率。通常,空闲逻辑CPU可以是处于未占用状态的逻辑CPU。子图的元数据可以是子图的顶点和边中所存储的信息的地址。
步骤203,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算。
在本实施例中,对于子图集合中的每个子图,在节点集群中存在与该子图适配的节点的情况下,上述执行主体可以将该子图的计算任务分配给与该子图适配的节点进行子图的计算,以得到该子图的计算结果。通常,与该子图适配的节点可以在其内存中加载该子图的元数据,并利用空闲逻辑CPU执行该子图的计算任务。
步骤204,基于子图集合中的子图的计算结果,合成图的计算结果。
在本实施例中,对于子图集合中的每个子图,与该子图适配的节点可以将该子图的计算结果发送给上述执行主体。这样,上述执行主体就可以将子图集合中的子图的计算结果合成图的计算结果。
本申请实施例提供的用于分配计算任务的方法,首先根据图的计算任务所需的计算资源,将图分割为子图集合;然后基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;在确定节点集群中存在与子图集合中的子图适配的节点的情况下,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;最后基于子图集合中的子图的计算结果,合成图的计算结果。利用节点集群中与子图集合中的子图适配的节点执行子图集合中的子图的计算任务,提高了节点集群中的空闲资源的利用率,进而提高了图的计算效率。
进一步参考图3,其示出了根据本申请的用于分配计算任务的方法的又一个实施例的流程300。该用于分配计算任务的方法,应用于分配计算任务库服务器,包括以下步骤:
步骤301,根据图的计算任务所需的计算资源,将图分割为子图集合。
在本实施例中,步骤301的具体操作已在图2所示的实施例中步骤201中进行了详细的介绍,在此不再赘述。
步骤302,将子图集合中的子图的标识入队,生成子图队列。
在本实施例中,用于分配计算任务的方法的执行主体(例如图1所示的服务器101)可以将子图集合中的子图的标识入队,以生成子图队列。具体地,上述执行主体可以首先设置一个空队列,然后将子图集合中的每个子图的标识依次从队列的队尾插入。当子图集合中的所有子图的标识全部入队时,就生成了子图队列。
在本实施例的一些可选的实现方式中,上述执行主体可以按照计算任务的优先级或计算任务的数目将子图集合中的子图的标识依次入队,生成子图队列。例如,上述执行主体可以按照计算任务的优先级由高到低的顺序将子图集合中的子图的标识依次入队,来生成子图队列。这样,上述执行主体就可以优先为计算任务的优先级高的子图适配节点。又例如,上述执行主体可以按照计算任务的数目由多到少的顺序将子图集合中的子图的标识依次入队,来生成子图队列。这样,上述执行主体就可以优先为计算任务的数目多的子图适配节点。
步骤303,对于子图队列的队头元素对应的子图,基于该子图的计算任务所需的计算资源查询节点资源状态表,确定节点集群中是否存在与该子图适配的节点。
在本实施例中,对于子图队列的队头元素对应的子图,上述执行主体可以基于该子图的计算任务所需的计算资源查询节点资源状态表,确定节点集群中是否存在与该子图适配的节点。在存在与该子图适配的节点的情况下,执行步骤304;在不存在于该子图适配的节点的情况下,执行步骤305。其中,节点资源状态表可以用于记录节点集群中的每个节点的资源状态。资源状态包括空闲逻辑CPU的数目和空闲内存大小。
具体地,上述执行主体可以基于该子图的计算任务的数目查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目等于该子图的计算任务的数目的节点;若存在,确定空闲逻辑CPU的数目等于该子图的计算任务的数目的节点的空闲内存是否不小于加载该子图的元数据所需要的内存;若是,则确定节点集群中存在与该子图适配的节点。空闲逻辑CPU的数目等于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点是与该子图适配的节点。
步骤304,将该子图的计算任务分配给与该子图适配的节点进行子图的计算,以及将队头元素出队。
在本实施例中,在存在与该子图适配的节点的情况下,上述执行主体可以将该子图的计算任务分配给与该子图适配的节点进行子图的计算,以及将队头元素出队,并继续执行步骤303。
在本实施例的一些可选的实现方式中,当节点集群中的节点被选中后,上述执行主体可以更新节点资源状态表中的节点集群中的节点的资源状态。也就是说,在存在与该子图适配的节点的情况下,上述执行主体还可以同时更新节点资源状态表中的与该子图适配的节点的资源状态。具体地,在进行子图的计算的过程中,不仅需要占用与该子图适配的节点的内存加载该子图的元数据,还需要占用与该子图适配的节点的逻辑CPU来执行该子图的计算任务。因此,上述执行主体可以将与该子图适配的节点的原有的空闲逻辑CPU的数目减去占用的逻辑CPU的数目,得到当前的空闲逻辑CPU的数目。同理,上述执行主体可以将与该子图适配的节点的原有的空闲内存大小减去占用的内存大小,得到当前的空闲内存大小。随后,上述执行主体基于当前的空闲逻辑CPU的数目和当前的空闲内存大小更新节点资源状态表中的与该子图适配的节点的资源状态。
需要说明的是,分配计算任务、更新节点资源状态表和队头元素出队可以并行处理。并且,队头元素出队之后,队头元素的下一个队列元素就成为了新的队头元素。此时,可以返回步骤303继续执行适配步骤,直至所有子图队列中的所有队列元素全部出队为止。
步骤305,按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点。
在本实施例中,在节点集群中不存在与该子图适配的节点的情况下,上述执行主体可以按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点。在存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,执行步骤306;否则,执行步骤307。这里,空闲逻辑CPU的数目的递增上限可以为节点集群对应的最大逻辑CPU的数目。
例如,子图的计算任务的数目为5,若节点集群中刚好不存在空闲逻辑CPU的数目为5的节点,那么按照空闲逻辑CPU的数目递增的方式先确定节点集群中是否存在空闲逻辑CPU的数目为6的节点。若不存在空闲逻辑CPU的数目为6的节点,或者存在空闲逻辑CPU的数目为6的节点,但空闲逻辑CPU的数目为6的节点的空闲内存小于加载该子图的元数据所需要的内存,再按照空闲逻辑CPU的数目递增的方式再确定节点集群中是否存在空闲逻辑CPU的数目为7的节点。以此类推,直至确定出空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,或者空闲逻辑CPU的数目递增到空闲逻辑CPU的数目的递增上限为止。
步骤306,将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队。
在本实施例中,在存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,上述执行主体可以将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行步骤303。
在本实施例的一些可选的实现方式中,当节点集群中的节点被选中后,上述执行主体可以更新节点资源状态表中的节点集群中的节点的资源状态。也就是说,在存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,上述执行主体还可以同时更新节点资源状态表中的空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的资源状态。
步骤307,按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点。
在本实施例中,在不存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,上述执行主体可以按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点。在存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,执行步骤308;否则,继续执行步骤303。这里,空闲逻辑CPU的数目的递减下限为1。
例如,子图的计算任务的数目为5,若节点集群中刚好不存在空闲逻辑CPU的数目不小于5的节点,那么按照空闲逻辑CPU的数目递减的方式先确定节点集群中是否存在空闲逻辑CPU的数目为4的节点。若不存在空闲逻辑CPU的数目为4的节点,或者存在空闲逻辑CPU的数目为4的节点,但空闲逻辑CPU的数目为4的节点的空闲内存小于加载该子图的元数据所需要的内存,再按照空闲逻辑CPU的数目递减的方式再确定节点集群中是否存在空闲逻辑CPU的数目为3的节点。以此类推,直至确定出空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,或者空闲逻辑CPU的数目递增到空闲逻辑CPU的数目的递减下限为止。
步骤308,将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队。
在本实施例中,在存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,上述执行主体可以将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行步骤303。
在本实施例的一些可选的实现方式中,当节点集群中的节点被选中后,上述执行主体可以更新节点资源状态表中的节点集群中的节点的资源状态。也就是说,在存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,上述执行主体还可以同时更新节点资源状态表中的空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的资源状态。
需要说明的是,当空闲逻辑CPU的数目小于该子图的计算任务的数目的节点执行该子图的计算任务时,先为每个空闲逻辑CPU分配一个计算任务进行计算,未分配的计算任务处于等待状态,当已分配的计算任务完成后,再将未分配的计算任务分配给已释放的逻辑CPU进行计算。
在本实施例的一些可选的实现方式中,当子图的计算任务完成时,上述执行主体可以更新节点资源状态表中的节点集群中的节点的资源状态。也就是说,当该子图的计算任务完成时,上述执行主体还可以同时更新节点资源状态表中的执行该子图的计算任务的节点的资源状态。具体地,在计算任务完成时,不仅需要释放加载该子图的元数据所占用的内存,还需要释放执行该子图的计算任务所占用的逻辑CPU。因此,上述执行主体可以将执行该子图的计算任务的节点的原有的空闲逻辑CPU的数目加上释放的逻辑CPU的数目,得到当前的空闲逻辑CPU的数目。同理,上述执行主体可以将执行该子图的计算任务的节点的原有的空闲内存大小加上释放的内存大小,得到当前的空闲内存大小。随后,上述执行主体基于当前的空闲逻辑CPU的数目和当前的空闲内存大小更新节点资源状态表中的执行该子图的计算任务的节点的资源状态。
在本实施例的一些可选的实现方式中,在不存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点的情况下,在节点资源状态表更新之后,上述执行主体可以继续执行步骤303。
步骤309,基于子图集合中的子图的计算结果,合成图的计算结果。
在本实施例中,步骤309的具体操作已在图2所示的实施例中步骤204中进行了详细的介绍,在此不再赘述。
继续参见图4,图4是图3所示的用于分配计算任务的方法的一个应用场景的示意图。在图4所示的应用场景中,节点集群包括节点0、节点1、节点2和节点3。其中,节点0的空闲逻辑CPU的数目是4,空闲内存是80KB。节点1的空闲逻辑CPU的数目是5,空闲内存是2048KB。节点2的空闲逻辑CPU的数目是9,空闲内存是110KB。节点3的空闲逻辑CPU的数目是1,空闲内存是2000KB。此时,生成节点资源状态表,以记录节点集群中的每个节点的资源状态。图被分割为的子图集合包括子图1、子图2和子图3。其中,子图1包括5个计算任务,所需的内存是150KB。子图2包括2个计算任务,所需的内存是90KB。子图3包括3个计算任务,所需的内存是200KB。此时,将子图集合中的子图的标识入队,生成子图队列。由于子图队列的队头元素对应子图1,服务器查询节点资源状态表,确定节点1刚好有5个空闲逻辑CPU,且空闲内存不小于150KB,即子图1与节点1适配。此时,服务器将子图1的计算任务分配给节点1进行子图的计算,同时更新节点资源状态表中的节点1的资源状态,以及将子图1的标识出队。随后,子图2成为新的队头元素,服务器查询节点资源状态表,确定没有空闲逻辑CPU的数目为2的节点。此时,服务器按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,首先确定节点0有4个空闲逻辑CPU,但是空闲内存小于90KB,然后确定节点2有9个空闲逻辑CPU,且空闲内存不小于90KB。此时,服务器将子图2的计算任务分配给节点2进行子图的计算,同时更新节点资源状态表中的节点2的资源状态,以及将子图2的标识出队。随后,子图3成为新的队头元素,服务器查询节点资源状态表,确定没有空闲逻辑CPU的数目为3的节点。此时,服务器首先按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,确定节点0有4个空闲逻辑CPU,但是空闲内存小于200KB,然后按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点2有2个空闲逻辑CPU,但是空闲内存小于200KB,再按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点3有1个空闲逻辑CPU,且空闲内存不小于200KB。此时,服务器将子图3的计算任务分配给节点3进行子图的计算,同时更新节点资源状态表中的节点3的资源状态,以及将子图3的标识出队。当子图1、子图2和子图3中任意一个子图的计算任务完成时,服务器再次更新节点资源状态表中的节点的资源状态。最后服务器将子图1、子图2和子图3的计算结果合成图的计算结果。
从图3中可以看出,与图2对应的实施例相比,本实施例中的用于分配计算任务的方法的流程300突出了适配步骤。由此,本实施例描述的方案基于子图的计算任务所需的计算资源多次查询节点资源状态表,以确定执行子图的计算任务的节点。充分利用了节点集群中的节点的空闲逻辑CPU和空闲内存,进一步提高了节点集群中的空闲资源的利用率,进而提高了图的计算效率。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种用于分配计算任务的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的用于分配计算任务的装置500可以包括:分割单元501、适配单元502、计算单元503和合成单元504。其中,分割单元501,被配置成根据图的计算任务所需的计算资源,将图分割为子图集合;适配单元502,被配置成基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;计算单元503,被配置成响应于确定节点集群中存在与子图集合中的子图适配的节点,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;合成单元504,被配置成基于子图集合中的子图的计算结果,合成图的计算结果。
在本实施例中,用于分配计算任务的装置500中:分割单元501、适配单元502、计算单元503和合成单元504的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201、步骤202、步骤203和步骤204的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,子图集合中的子图相互之间不存在相同的顶点和边,且子图集合中的子图的计算任务的数目不大于节点集群对应的最大逻辑CPU的数目。
在本实施例的一些可选的实现方式中,与子图集合中的子图适配的节点的空闲逻辑CPU的数目等于子图集合中的子图的计算任务的数目,且空闲内存不小于加载子图集合中的子图的元数据所需要的内存。
在本实施例的一些可选的实现方式中,适配单元502包括:生成子单元(图中未示出),被配置成将子图集合中的子图的标识入队,生成子图队列;适配子单元(图中未示出),被配置成执行以下适配步骤:对于子图队列的队头元素对应的子图,基于该子图的计算任务所需的计算资源查询节点资源状态表,确定节点集群中是否存在与该子图适配的节点,其中,节点资源状态表用于记录节点集群中的节点的资源状态,资源状态包括空闲逻辑CPU的数目和空闲内存大小;执行子单元(图中未示出),被配置成响应于确定存在与该子图适配的节点,将队头元素出队,并继续执行适配步骤。
在本实施例的一些可选的实现方式中,生成子单元进一步被配置成:按照计算任务的优先级或计算任务的数目将子图集合中的子图的标识依次入队,生成子图队列。
在本实施例的一些可选的实现方式中,适配子单元进一步被配置成:响应于确定节点集群中不存在与该子图适配的节点,按照空闲逻辑CPU的数目递增的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递增上限为节点集群对应的最大逻辑CPU的数目;响应于确定存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行适配步骤。
在本实施例的一些可选的实现方式中,适配子单元进一步被配置成:响应于确定不存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,按照空闲逻辑CPU的数目递减的方式查询节点资源状态表,确定节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递减下限为1;响应于确定存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将队头元素出队,并继续执行适配步骤。
在本实施例的一些可选的实现方式中,用于分配计算任务的装置500还包括:更新单元(图中未示出),被配置成当节点集群中的节点被选中后或子图的计算任务完成时,更新节点资源状态表中的节点集群中的节点的资源状态。
在本实施例的一些可选的实现方式中,适配子单元进一步被配置成:响应于确定不存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,在节点资源状态表更新之后,继续执行适配步骤。
下面参考图6,其示出了适于用来实现本申请实施例的服务器(例如图1所示的服务器101)的计算机系统600的结构示意图。图6示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读介质或者是上述两者的任意组合。计算机可读介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向目标的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括分割单元、适配单元、计算单元和合成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,分割单元还可以被描述为“根据图的计算任务所需的计算资源,将图分割为子图集合的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的服务器中所包含的;也可以是单独存在,而未装配入该服务器中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该服务器执行时,使得该服务器:根据图的计算任务所需的计算资源,将图分割为子图集合;基于子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与子图集合中的子图适配的节点;响应于确定节点集群中存在与子图集合中的子图适配的节点,将子图集合中的子图的计算任务分配给与子图集合中的子图适配的节点进行子图的计算;基于子图集合中的子图的计算结果,合成图的计算结果。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (20)
1.一种用于分配计算任务的方法,包括:
根据图的计算任务所需的计算资源,将图分割为子图集合;
基于所述子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与所述子图集合中的子图适配的节点;
响应于确定所述节点集群中存在与所述子图集合中的子图适配的节点,将所述子图集合中的子图的计算任务分配给与所述子图集合中的子图适配的节点进行子图的计算;
基于所述子图集合中的子图的计算结果,合成所述图的计算结果。
2.根据权利要求1所述的方法,其中,所述子图集合中的子图相互之间不存在相同的顶点和边,且所述子图集合中的子图的计算任务的数目不大于所述节点集群对应的最大逻辑CPU的数目。
3.根据权利要求2所述的方法,其中,与所述子图集合中的子图适配的节点的空闲逻辑CPU的数目等于所述子图集合中的子图的计算任务的数目,且空闲内存不小于加载所述子图集合中的子图的元数据所需要的内存。
4.根据权利要求3所述的方法,其中,所述基于所述子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与所述子图集合中的子图适配的节点,包括:
将所述子图集合中的子图的标识入队,生成子图队列;
执行以下适配步骤:对于所述子图队列的队头元素对应的子图,基于该子图的计算任务所需的计算资源查询节点资源状态表,确定所述节点集群中是否存在与该子图适配的节点,其中,所述节点资源状态表用于记录所述节点集群中的节点的资源状态,资源状态包括空闲逻辑CPU的数目和空闲内存大小;
响应于确定存在与该子图适配的节点,将所述队头元素出队,并继续执行所述适配步骤。
5.根据权利要求4所述的方法,其中,所述将所述子图集合中的子图的标识入队,生成子图队列,包括:
按照所述计算任务的优先级或计算任务的数目将所述子图集合中的子图的标识依次入队,生成子图队列。
6.根据权利要求4所述的方法,其中,所述方法还包括:
响应于确定所述节点集群中不存在与该子图适配的节点,按照空闲逻辑CPU的数目递增的方式查询所述节点资源状态表,确定所述节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递增上限为所述节点集群对应的最大逻辑CPU的数目;
响应于确定存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将所述队头元素出队,并继续执行所述适配步骤。
7.根据权利要求6所述的方法,其中,所述方法还包括:
响应于确定不存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,按照空闲逻辑CPU的数目递减的方式查询所述节点资源状态表,确定所述节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递减下限为1;
响应于确定存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将所述队头元素出队,并继续执行所述适配步骤。
8.根据权利要求4-7之一所述的方法,其中,所述方法还包括:
当所述节点集群中的节点被选中后或子图的计算任务完成时,更新所述节点资源状态表中的所述节点集群中的节点的资源状态。
9.根据权利要求8所述的方法,其中,所述方法还包括:
响应于确定不存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,在所述节点资源状态表更新之后,继续执行所述适配步骤。
10.一种用于分配计算任务的装置,包括:
分割单元,被配置成根据图的计算任务所需的计算资源,将图分割为子图集合;
适配单元,被配置成基于所述子图集合中的子图的计算任务所需的计算资源,确定节点集群中是否存在与所述子图集合中的子图适配的节点;
计算单元,被配置成响应于确定所述节点集群中存在与所述子图集合中的子图适配的节点,将所述子图集合中的子图的计算任务分配给与所述子图集合中的子图适配的节点进行子图的计算;
合成单元,被配置成基于所述子图集合中的子图的计算结果,合成所述图的计算结果。
11.根据权利要求10所述的装置,其中,所述子图集合中的子图相互之间不存在相同的顶点和边,且所述子图集合中的子图的计算任务的数目不大于所述节点集群对应的最大逻辑CPU的数目。
12.根据权利要求11所述的装置,其中,与所述子图集合中的子图适配的节点的空闲逻辑CPU的数目等于所述子图集合中的子图的计算任务的数目,且空闲内存不小于加载所述子图集合中的子图的元数据所需要的内存。
13.根据权利要求12所述的装置,其中,所述适配单元包括:
生成子单元,被配置成将所述子图集合中的子图的标识入队,生成子图队列;
适配子单元,被配置成执行以下适配步骤:对于所述子图队列的队头元素对应的子图,基于该子图的计算任务所需的计算资源查询节点资源状态表,确定所述节点集群中是否存在与该子图适配的节点,其中,所述节点资源状态表用于记录所述节点集群中的节点的资源状态,资源状态包括空闲逻辑CPU的数目和空闲内存大小;
执行子单元,被配置成响应于确定存在与该子图适配的节点,将所述队头元素出队,并继续执行所述适配步骤。
14.根据权利要求13所述的装置,其中,所述生成子单元进一步被配置成:
按照所述计算任务的优先级或计算任务的数目将所述子图集合中的子图的标识依次入队,生成子图队列。
15.根据权利要求13所述的装置,其中,所述适配子单元进一步被配置成:
响应于确定所述节点集群中不存在与该子图适配的节点,按照空闲逻辑CPU的数目递增的方式查询所述节点资源状态表,确定所述节点集群中是否存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递增上限为所述节点集群对应的最大逻辑CPU的数目;
响应于确定存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将所述队头元素出队,并继续执行所述适配步骤。
16.根据权利要求15所述的装置,其中,所述适配子单元进一步被配置成:
响应于确定不存在空闲逻辑CPU的数目大于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,按照空闲逻辑CPU的数目递减的方式查询所述节点资源状态表,确定所述节点集群中是否存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,其中,空闲逻辑CPU的数目的递减下限为1;
响应于确定存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,将该子图的计算任务分配给空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点进行子图的计算,以及将所述队头元素出队,并继续执行所述适配步骤。
17.根据权利要求16所述的装置,其中,所述装置还包括:
更新单元,被配置成当所述节点集群中的节点被选中后或子图的计算任务完成时,更新所述节点资源状态表中的所述节点集群中的节点的资源状态。
18.根据权利要求17所述的装置,其中,所述适配子单元进一步被配置成:
响应于确定不存在空闲逻辑CPU的数目小于该子图的计算任务的数目,且空闲内存不小于加载该子图的元数据所需要的内存的节点,在所述节点资源状态表更新之后,继续执行所述适配步骤。
19.一种服务器,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
20.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-9中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910175565.6A CN109947565B (zh) | 2019-03-08 | 2019-03-08 | 用于分配计算任务的方法和装置 |
US16/669,134 US11210131B2 (en) | 2019-03-08 | 2019-10-30 | Method and apparatus for assigning computing task |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910175565.6A CN109947565B (zh) | 2019-03-08 | 2019-03-08 | 用于分配计算任务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947565A true CN109947565A (zh) | 2019-06-28 |
CN109947565B CN109947565B (zh) | 2021-10-15 |
Family
ID=67008658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910175565.6A Active CN109947565B (zh) | 2019-03-08 | 2019-03-08 | 用于分配计算任务的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11210131B2 (zh) |
CN (1) | CN109947565B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543362A (zh) * | 2019-07-31 | 2019-12-06 | 北京奇艺世纪科技有限公司 | 一种图形处理器管理方法、装置及服务器 |
CN110689114A (zh) * | 2019-09-24 | 2020-01-14 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
CN111598036A (zh) * | 2020-05-22 | 2020-08-28 | 广州地理研究所 | 分布式架构的城市群地理环境知识库构建方法及系统 |
CN112231108A (zh) * | 2020-11-02 | 2021-01-15 | 网易(杭州)网络有限公司 | 任务处理方法、装置、计算机可读存储介质及服务器 |
CN113553103A (zh) * | 2021-06-03 | 2021-10-26 | 中国人民解放军战略支援部队信息工程大学 | 基于cpu+gpu异构处理平台的多核并行调度方法 |
WO2022152103A1 (en) * | 2021-01-13 | 2022-07-21 | International Business Machines Corporation | Information matching using subgraphs |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11556370B2 (en) * | 2020-01-30 | 2023-01-17 | Walmart Apollo, Llc | Traversing a large connected component on a distributed file-based data structure |
CN112799807B (zh) * | 2021-01-25 | 2024-05-07 | 武汉华大基因技术服务有限公司 | 集群任务前置调度分配方法、装置、介质及计算机设备 |
CN113608871A (zh) * | 2021-08-02 | 2021-11-05 | 腾讯科技(深圳)有限公司 | 业务处理方法及装置 |
CN113791902A (zh) * | 2021-08-31 | 2021-12-14 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114741175B (zh) * | 2022-04-15 | 2024-10-18 | 支付宝(杭州)信息技术有限公司 | 任务执行方法、装置、中心节点和下游节点设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080712A1 (en) * | 2009-02-27 | 2013-03-28 | International Business Machines Corporation | Non-Uniform Memory Access (NUMA) Enhancements for Shared Logical Partitions |
CN103412794A (zh) * | 2013-08-08 | 2013-11-27 | 南京邮电大学 | 一种面向流计算的动态调度分配方法 |
US9128763B2 (en) * | 2011-08-23 | 2015-09-08 | Infosys Limited | System and method for job scheduling optimization |
CN105718317A (zh) * | 2016-01-15 | 2016-06-29 | 浪潮(北京)电子信息产业有限公司 | 一种任务调度方法及装置 |
CN105760227A (zh) * | 2016-02-04 | 2016-07-13 | 中国联合网络通信集团有限公司 | 云环境下资源调度方法及系统 |
CN106033442A (zh) * | 2015-03-16 | 2016-10-19 | 北京大学 | 一种基于共享内存体系结构的并行广度优先搜索方法 |
US20170091337A1 (en) * | 2012-10-18 | 2017-03-30 | Proofpoint, Inc. | Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database |
CN106790332A (zh) * | 2015-11-24 | 2017-05-31 | 中国移动通信集团公司 | 一种资源调度方法、系统及主节点 |
CN107222565A (zh) * | 2017-07-06 | 2017-09-29 | 太原理工大学 | 一种网络图分割方法及系统 |
CN107515784A (zh) * | 2016-06-16 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种在分布式系统中计算资源的方法与设备 |
CN108228724A (zh) * | 2017-12-11 | 2018-06-29 | 厦门亿力吉奥信息科技有限公司 | 基于图数据库的电网gis拓扑分析方法及存储介质 |
US20180189388A1 (en) * | 2017-01-05 | 2018-07-05 | International Business Machines Corporation | Representation of a data analysis using a flow graph |
CN108469988A (zh) * | 2018-02-28 | 2018-08-31 | 西北大学 | 一种基于异构Hadoop集群的任务调度方法 |
CN108683738A (zh) * | 2018-05-16 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 图数据处理方法和图数据的计算任务发布方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6241300B2 (ja) * | 2014-02-04 | 2017-12-06 | 富士通株式会社 | ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム |
US9826011B2 (en) * | 2014-07-31 | 2017-11-21 | Istreamplanet Co. | Method and system for coordinating stream processing at a video streaming platform |
US10366084B2 (en) * | 2016-09-15 | 2019-07-30 | Microsoft Technology Licensing, Llc | Optimizing pipelining result sets with fault tolerance in distributed query execution |
US20180260878A1 (en) * | 2017-03-09 | 2018-09-13 | Microsoft Technology Licensing, Llc | Item delivery fulfillment plan determination |
-
2019
- 2019-03-08 CN CN201910175565.6A patent/CN109947565B/zh active Active
- 2019-10-30 US US16/669,134 patent/US11210131B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080712A1 (en) * | 2009-02-27 | 2013-03-28 | International Business Machines Corporation | Non-Uniform Memory Access (NUMA) Enhancements for Shared Logical Partitions |
US9128763B2 (en) * | 2011-08-23 | 2015-09-08 | Infosys Limited | System and method for job scheduling optimization |
US20170091337A1 (en) * | 2012-10-18 | 2017-03-30 | Proofpoint, Inc. | Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database |
CN103412794A (zh) * | 2013-08-08 | 2013-11-27 | 南京邮电大学 | 一种面向流计算的动态调度分配方法 |
CN106033442A (zh) * | 2015-03-16 | 2016-10-19 | 北京大学 | 一种基于共享内存体系结构的并行广度优先搜索方法 |
CN106790332A (zh) * | 2015-11-24 | 2017-05-31 | 中国移动通信集团公司 | 一种资源调度方法、系统及主节点 |
CN105718317A (zh) * | 2016-01-15 | 2016-06-29 | 浪潮(北京)电子信息产业有限公司 | 一种任务调度方法及装置 |
CN105760227A (zh) * | 2016-02-04 | 2016-07-13 | 中国联合网络通信集团有限公司 | 云环境下资源调度方法及系统 |
CN107515784A (zh) * | 2016-06-16 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种在分布式系统中计算资源的方法与设备 |
US20180189388A1 (en) * | 2017-01-05 | 2018-07-05 | International Business Machines Corporation | Representation of a data analysis using a flow graph |
CN107222565A (zh) * | 2017-07-06 | 2017-09-29 | 太原理工大学 | 一种网络图分割方法及系统 |
CN108228724A (zh) * | 2017-12-11 | 2018-06-29 | 厦门亿力吉奥信息科技有限公司 | 基于图数据库的电网gis拓扑分析方法及存储介质 |
CN108469988A (zh) * | 2018-02-28 | 2018-08-31 | 西北大学 | 一种基于异构Hadoop集群的任务调度方法 |
CN108683738A (zh) * | 2018-05-16 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 图数据处理方法和图数据的计算任务发布方法 |
Non-Patent Citations (2)
Title |
---|
MEILING HAN等: "Work-in-Progress: Response Time Bounds for Typed DAG Parallel Tasks on Heterogeneous Multi-Cores", 《2018 IEEE REAL-TIME SYSTEMS SYMPOSIUM(RTSS)》 * |
王志刚等: "OnFlyP:基于定向边交换的分布式在线大图划分算法", 《计算机学报》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543362A (zh) * | 2019-07-31 | 2019-12-06 | 北京奇艺世纪科技有限公司 | 一种图形处理器管理方法、装置及服务器 |
CN110689114A (zh) * | 2019-09-24 | 2020-01-14 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
WO2021057811A1 (zh) * | 2019-09-24 | 2021-04-01 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
CN110689114B (zh) * | 2019-09-24 | 2023-07-18 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
CN111598036A (zh) * | 2020-05-22 | 2020-08-28 | 广州地理研究所 | 分布式架构的城市群地理环境知识库构建方法及系统 |
CN112231108A (zh) * | 2020-11-02 | 2021-01-15 | 网易(杭州)网络有限公司 | 任务处理方法、装置、计算机可读存储介质及服务器 |
WO2022152103A1 (en) * | 2021-01-13 | 2022-07-21 | International Business Machines Corporation | Information matching using subgraphs |
GB2617996A (en) * | 2021-01-13 | 2023-10-25 | Ibm | Information matching using subgraphs |
AU2022208873B2 (en) * | 2021-01-13 | 2023-11-16 | International Business Machines Corporation | Information matching using subgraphs |
CN113553103A (zh) * | 2021-06-03 | 2021-10-26 | 中国人民解放军战略支援部队信息工程大学 | 基于cpu+gpu异构处理平台的多核并行调度方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200285508A1 (en) | 2020-09-10 |
CN109947565B (zh) | 2021-10-15 |
US11210131B2 (en) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947565A (zh) | 用于分配计算任务的方法和装置 | |
CN104778079B (zh) | 用于调度、执行的装置和方法以及分布式系统 | |
CN108182111A (zh) | 任务调度系统、方法和装置 | |
CN109033001A (zh) | 用于分配gpu的方法和装置 | |
CN108920222A (zh) | 一种基于规则引擎的业务处理方法和装置 | |
CN109309726A (zh) | 基于海量数据的文件生成方法及系统 | |
CN108874528A (zh) | 分布式任务存储系统和分布式任务存储/读取方法 | |
CN108846753A (zh) | 用于处理数据的方法和装置 | |
CN113037877B (zh) | 云边端架构下时空数据及资源调度的优化方法 | |
CN108933822B (zh) | 用于处理信息的方法和装置 | |
CN112114950A (zh) | 任务调度方法和装置、以及集群管理系统 | |
CN1783121B (zh) | 用于执行设计自动化的方法和系统 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN110300165A (zh) | 一种功能程序的调用方法、装置、设备及存储介质 | |
CN109345166A (zh) | 用于生成信息的方法和装置 | |
CN110515741A (zh) | 一种基于本地任务队列的降级处理方法和装置 | |
CN109684059A (zh) | 用于监控数据的方法及装置 | |
Yadav et al. | An opposition-based hybrid evolutionary approach for task scheduling in fog computing network | |
CN116414370A (zh) | 基于低代码的平台构建方法、装置、介质及电子设备 | |
CN113919734A (zh) | 订单配送方法和装置 | |
CN110321253A (zh) | 用于备份数据的方法和装置 | |
CN110223179A (zh) | 资金的数据处理方法、装置、系统、介质 | |
CN109885400A (zh) | 用于发送指令的方法和装置 | |
CN111694670B (zh) | 资源分配方法、装置、设备和计算机可读介质 | |
CN108958933A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |