CN104123184B - 一种用于为构建过程中的任务分配资源的方法和系统 - Google Patents
一种用于为构建过程中的任务分配资源的方法和系统 Download PDFInfo
- Publication number
- CN104123184B CN104123184B CN201310154425.3A CN201310154425A CN104123184B CN 104123184 B CN104123184 B CN 104123184B CN 201310154425 A CN201310154425 A CN 201310154425A CN 104123184 B CN104123184 B CN 104123184B
- Authority
- CN
- China
- Prior art keywords
- task
- resource
- metadata
- execution
- execution sequence
- 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.)
- Expired - Fee Related
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/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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
Abstract
本发明属于软件工程领域,公开了一种用于为构建过程中的任务分配资源的方法。该构建过程包括多个任务,该方法包括:获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任务类型;获取执行元数据,所述执行元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;根据所述任务元数据和所述执行元数据确定所述第二任务需要的资源。本发明还公开了一种用于为构建过程中的任务分配资源的系统。通过采用本发明提供的方法和系统,可以动态的确认构建过程中的任务所需的资源,并据此进行动态的资源分配,从而提高资源的利用率,也提高了构建过程的效率。
Description
技术领域
本发明涉及软件工程领域,更具体地,涉及一种用于为构建过程中的任务分配资源的方法和系统。
背景技术
在软件工程中,构建(build)系统得到越来越广泛的应用。一个构建过程通常包括了从获取软件代码一直到形成可发布软件产品的多个阶段。图2示出了一个典型的构建过程。这个构建过程中包括了多个任务,如获取源代码、编译、运行测试例、以及发布。
对于每一个构建过程,需要消费相应的资源,通常会在最初阶段静态分配相应的资源。这些静态分配的资源在构建过程中不会动态变化,从而导致整个构建过程中有时资源过剩而其他构建过程无法消费过剩的资源,而有时资源不足导致构建过程的时间过长。
发明内容
考虑到解决现有技术中存在的问题,本发明实施例提供了一种用于为构建过程中的任务分配资源的方法,以提高资源利用效率。进一步的本发明实施例还提供了一种用于为构建过程中的任务分配资源的系统。
根据本发明的一个方面,提供了一种用于为构建过程中的任务分配资源的方法,所述构建过程包括多个任务,所述方法包括获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任务类型;获取执行元数据,所述执行元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;根据所述任务元数据和所述执行元数据确定所述第二任务需要的资源。
根据本发明的另一个方面,提供了一种用于为构建过程中的任务资源分配的系统,其中,所述构建过程包括多个任务,所述系统包括:第一捕获模块,被配置为获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任务类型;第二捕获模块,被配置为获取执行元数据,所述执行元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;资源需求确认模块,被配置为根据所述第一捕获模块获取的任务元数据和所述第二捕获模块获取的执行元数据确定所述第二任务需要的资源。
本发明所提供的技术方案可以在构建过程中动态的分配资源,从而提高资源的使用效率。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图2示出了一种典型的构建过程的示例;
图3示出了本发明实施例一种用于为构建过程中的任务分配资源的方法的流程示意图;
图4示出了本发明实施例一种用于为构建过程中的任务分配资源的系统的结构示意图;
图5示出了本发明实施例另一种用于为构建过程中的任务分配资源的系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序占领可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,内存28,连接不同系统组件(包括内存28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
内存28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参看图3,图3示出了本发明实施例提供的一种用于为构建过程中的任务分配资源的方法。该方法包括:步骤310,获取任务元数据;步骤320,获取执行元数据;步骤330,根据所述任务元数据和所述执行元数据确定所述第二任务需要的资源。其中,任务元数据包括第二任务的任务类型;执行元数据包括:第一任务的执行结果;所述第二任务依赖所述第一任务的执行结果。本实施例中构建过程包括多个任务。
采用本实施例提供的方法,对于依赖于第一任务执行结果的第二任务,可以根据第一任务的执行结果以及第二任务的任务类型来确定第二任务所需要的资源,从而能够根据现有可用的资源为第二任务合理的分配现有资源。进而使得在整个的构建过程中,随着不同任务的执行,动态的进行资源分配。例如可以为CPU密集型的任务分配更多的计算资源,而为网络密集型的任务分配较多的网络资源。这样既能避免在构建过程开始前静态分配资源所导致的资源无法充分利用,也可以避免由于静态分配资源所导致的资源不足而造成的构建过程时间过长。
在本发明一实施例中,构建过程例如包括从软件代码到可发布软件产品所执行的多个任务。本发明并不将构建过程限制于此,也可以仅包括上述多个任务中的至少两个,或者可以包括更多的任务,例如上载、部署等。构建过程可以包括多个组件(component)的构建,也可以仅包括一个组件的构建。构建过程可以按照阶段进行,例如先获取所有组件的源代码,再对所有组件的源代码进行编译;或者构建过程也可以按照组件进行,例如先获取组件A的源代码,对组件A的源代码进行编译等,然后获取组件B的源代码,对组件B的源代码进行编译等;或者构建过程中的任务还可以按照其它预定的顺序执行。本发明并不限制构建过程中任务的执行顺序。
图3所示的实施例中,任务类型例如包括获取源代码、编译、运行测试例、上载、部署等。资源例如包括网络资源、CPU资源、内存资源以及硬盘资源等。在虚拟环境或者云环境中,资源例如包括虚拟网络资源、虚拟CPU资源、虚拟内存资源以及虚拟硬盘资源等。执行结果例如包括取回的代码数量,测试用例的多少,编译得到的包的大小等。本发明并不将任务类型、资源以及执行结果限制在上述示例中。构建过程中,任务之间存在着依赖关系,也即某一任务直接受到其他一个或多个任务的执行结果的影响。例如编译依赖获取源代码的执行结果;构建结果上载等任务与获取源代码之间仅存在间接的关系,不属于依赖;再例如,构建结果上载以及应用部署都依赖编译的执行结果。在本发明一实施例中,任务之间的依赖关系会因采用的技术手段不同或者任务的执行顺序不同而变化。例如,若在获取源代码任务后通过对源代码的扫描获知测试例的数量,则运行测试例任务依赖获取源代码的执行结果;若通过对编译好的代码进行分析获知测试例的数量,则运行测试例任务只间接受到获取源代码的任务的影响。
本发明一实施例中,步骤310可以是从构建任务配置文件中获取任务元数据。在配置文件中例如可以包括任务的类型、任务的执行顺序、任务的依赖关系等。本领域技术人员可以理解,还可以采用其它技术手段获取任务元数据。例如,可以在构建过程中通过对第一任务或者其它已经执行完毕的任务的执行结果进行分析来获取任务元数据。例如,可以通过构建管道分析获取任务之间的依赖关系。构建管道分析还可以获知任务的工作负载特征,例如任务属于计算密集型或者内存密集型等。
本发明一实施例中,步骤320可以是在构建过程中捕获执行元数据。该步骤例如可以在整个构建过程中不断重复执行。本领域技术人员可以理解,可以采用各种技术手段来实现执行元数据的捕获。例如,对于获取源代码的执行结果以及编译的执行结果可以通过静态扫描来获知取回的数量以及编译得到的包的大小。本发明一实施例中,可以仅捕获执行结果中与第二任务资源需求相关的部分。
本发明一实施例中,步骤330例如可以根据预定规则或者算法来依据任务元数据和执行元数据来确定第二任务需要的资源。例如步骤310中获取的任务元数据为第二任务的任务类型为编译。第二任务依赖第一任务,该第一任务为获取源代码。步骤320中获取的执行元数据为第一任务的执行结果为获取了10万行的源代码。步骤330根据预定规则或者算法确定编译10万行源代码需要计算密集型的资源分配。
与在构建过程开始或者之前静态分配资源相比,上述实施例提供的方法可以实现动态的资源分配。例如,采用静态资源分配方案,在构建过程A开始之前为该构建过程A分配8个CPU,8G内存,50M带宽以及20G硬盘。在执行获取源代码的任务时,需要2个CPU,4G内存,100M带宽以及10G硬盘。可以看到6个CPU的计算资源和4G内存资源都处于闲置状态,没有得到充分的利用,同时由于这些资源已经被分配给构建过程A,它们也不能被其它的应用所利用。同时,由于为构建过程A分配的带宽资源不足,获取源代码任务需要更长的时间才能完成。如果采用上述实施例提供的方法,可以在执行获取源代码任务时动态的分配2个CPU、4G内存、100M带宽和10G硬盘资源,并在之后进行编译、运行测试例时动态调整资源分配。例如当构建过程执行编译阶段时,根据任务类型和之前获得的执行结果如项目数量、代码数量、编译并行度等,为编译任务分配8个CPU、8G内存、50M带宽以及20G硬盘。通过对比可以非常明显的看出,上述实施例提供的方法能够提高资源的利用效率并且尽可能的提高构建过程的效率。
本发明一实施例中,任务元数据包括所述多个任务之间的依赖关系,所述多个任务之间的依赖关系用于指示所述多个任务中的某一任务依赖所述多个任务中的其它一个或多个任务的执行结果。图3所示的实施例在步骤330之前还可以包括步骤:根据刚执行完的任务以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。本领域技术人员可以理解,根据任务之间的依赖关系,只要第二任务所依赖的任务都执行完毕,无论下一个执行的任务是否为第二任务都可以为第二任务确定需要的资源。若下一个执行的任务不是第二任务,则还可以把确定的第二任务所需要的资源记录下来,以备以后为第二任务分配资源时使用。
本发明一实施例中,所述任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序。如图3所示的实施例所提供的方法还可以包括:获取资源元数据,所述资源元数据用于指示当前可用资源;执行顺序数据确定下一个执行的任务为所述第二任务;根据所述资源元数据以及确定的所述第二任务需要的资源为所述第二任务分配资源。当前任务执行完毕以后,可以根据执行顺序确定下一个执行的任务,当下一个执行的任务为第二任务时,由于之前已经确定了该第二任务所需要的资源,就可以根据当前可用资源以及第二任务需要的资源为第二任务分配资源了。本领域技术人员可以理解,可以采用各种技术手段来获取资源元数据,例如利用基础设施即服务(Infrastructure as A Service,IaaS)监控服务获知物理资源或者虚拟资源的使用信息,从而得知可用的资源。例如还可以获取可用资源的快照来获知某一时刻或最新的可用资源。通过获知当前可用的资源,根据通过上述实施例确定的第二任务需要的资源,可以实现为第二任务合理的分配资源。具体的资源分配可以根据现有的算法实现,例如根据构建任务的权重或者期望交付的构建能力,基于轮叫调度(Round Robin调度)算法进行资源的分配。获取资源元数据的步骤在构建过程中例如可以重复执行。本领域技术人员可以理解,获取资源元数据的步骤可以在确定第二任务需要的资源的步骤之后执行、之后执行或者同时执行。例如,软件产品B包括组件1和组件2。对于软件产品B的构建过程B包括了任务1至任务8。其中任务1为获取组件1的源代码;任务2为编译组件1的源代码;任务3为运行组件1的测试例;任务4为上载组件1;任务5为获取组件2的源代码;任务6为编译组件2的源代码;任务7为运行组件2的测试例;任务8为上载组件2。构建过程B可以是按照顺序执行任务1、2、3、4、5、6、7、8,或者可以是按照顺序执行任务1、5、2、4、3、7、4、8。构建过程B还可以按照其它顺序执行上述任务,只要符合任务之间的依赖关系即可。举例而言,若执行任务1之后执行任务5,则确认任务2需要的资源可以在任务1刚刚执行完毕之后进行,也可以在任务5执行完毕之后进行。在本发明一实施例中,可以将获得的任务元数据、执行元数据以及资源元数据聚合为单个文件。将资源分配的具体算法、策略等运用到该单个文件可以实现具体的资源分配。在本发明一实施例中,可以将上述任务元数据、执行元数据和资源元数据的内容复制到单个文件中,并按照预定的规则组织这些元数据以形成用于资源分配的单个文件。本发明实施例并不限制实施聚合的具体技术手段。本领域技术人员可以理解,还可以将上述任务元数据、执行元数据和资源元数据记录为内存中的一个记录的形式来完成资源分配。
本发明一实施例中,所述执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕。根据刚执行完的任务以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源的步骤可以包括:根据执行阶段数据以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。
本发明一实施例中,多个任务之间的依赖关系不仅仅可以通过获取得到,其也可以是预设的,或者还可以是默认的。执行阶段数据可以是直接指示当前任务执行完毕,或者也可以是当前任务执行完毕的条件。在条件满足时可以确定当前任务执行完毕。本领域技术人员可以理解,除了获取执行阶段数据,也可以通过其它手段来获知当前任务执行完毕,例如在得到了当前任务执行结果时就认为当前任务执行完毕。
本发明一实施例中,如图3所示的实施例提供的方法在步骤330之前还可以包括:根据执行顺序数据确定下一个执行的任务为第二任务,并确认需要为该第二任务分配资源。可以理解,确认需要为第二任务分配资源不但可以在第二任务所依赖的所有任务都执行完毕时执行,或者在所有任务都执行完毕后一段时间执行,也可以在确定将要执行第二任务时执行。
本发明一实施例中,根据所述执行顺序数据确定下一个执行的任务为所述第二任务的步骤还可以包括:根据执行顺序数据以及执行阶段数据判断下一个执行的任务为所述第二任务。
本发明一实施例中,任务元数据进一步包括第一任务的任务类型。图3所示实施例进一步包括:根据所述第一任务的任务类型确定所述第一任务需要的资源。在构建过程中,对于第一任务可以是采用现有技术静态为其分配资源,也可以根据第一任务的任务类型确定其需要的资源。例如,每种任务类型对应有默认的需要的资源,在获取了第一任务的任务类型后,可以得知第一任务需要的资源。在本发明一实施例中,根据任务类型确定需要的资源例如是针对每个组件最先执行的任务或者整个构建过程最先执行的任务。
在本发明一实施例中,执行元数据例如还可以包括执行异常信息。在捕获到执行异常信息之后,可以停止资源分配。
本发明上述实施例之间可以彼此参照、结合,得到更多的实施例。例如,图3所示的实施例可以同时包括获取资源元数据并分配资源的步骤以及确认第一任务需要的资源的步骤。
参照图4,本发明实施例提供了一种用于为构建过程中的任务分配资源的系统400。该构建过程包括多个任务。该系统400包括:第一捕获模块410被配置为获取任务元数据,所述任务元数据包括该多个任务中第二任务的任务类型;第二捕获模块420,被配置为获取执行元数据,所述执行元数据包括该多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;资源需求确认模块430,被配置为根据所述第一捕获模块获取的任务元数据和所述第二捕获模块获取的执行元数据确定所述第二任务需要的资源。
采用本实施例提供的系统,对于依赖于第一任务执行结果的第二任务,可以根据第一任务的执行结果以及第二任务的任务类型来确定第二任务所需要的资源,从而能够根据现有可用资源为第二任务合理的分配资源。进而使得在整个的构建过程中,随着不同任务的执行,动态的进行资源分配。
在本发明一实施例中,任务元数据包括所述多个任务之间的依赖关系,所述多个任务之间的依赖关系用于指示所述多个任务中的某一任务依赖所述多个任务中的其它一个或多个任务的执行结果。系统400进一步包括:第一待分配确认模块440,被配置为根据刚执行完的任务以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。本实施例中,资源需求确认模块430被进一步配置为在所述第一待分配确认模块440确定需要为所述第二任务分配资源后,根据所述第一捕获模块410获取的任务元数据和所述第二捕获模块420获取的执行元数据确定所述第二任务需要的资源。
本发明一实施例中,所述任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序。系统400进一步包括:第三捕获模块450被配置为获取资源元数据,所述资源元数据用于指示当前可用资源;待执行确认模块460,被配置为根据所述执行顺序数据确定下一个执行的任务为所述第二任务;第一资源分配模块470,被配置为根据所述资源元数据以及确定的所述第二任务需要的资源为所述第二任务分配资源。
本发明一实施例中,执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕。第一待分配确认模块440进一步被配置为根据所述执行阶段数据以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。
如图5所示,本发明一实施例中,系统500包括第一捕获模块510,第二捕获模块520,需求确认模块530。上述模块的具体实现方式以及连接关系可以参照图4所示实施例的相应部分。任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序。系统500还包括第二待分配确认模块540,被配置为根据所述执行顺序数据确定下一个执行的任务为所述第二任务,并确认需要为所述第二任务分配资源。资源需求确认模块530进一步被配置为在所述第二待分配确认模块540确定需要为所述第二任务分配资源后,根据所述第一捕获模块510获取的任务元数据和所述第二捕获模块520获取的执行元数据确定所述第二任务需要的资源。
本发明一实施例中,执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕。第二待分配确认模块540进一步被配置为根据所述执行顺序数据以及所述执行阶段数据判断下一个执行的任务为所述第二任务。
本发明一实施例中,系统400和系统500均可包括第四捕获模块以及第二资源分配模块。其中第四捕获模块被配置为获取资源元数据,所述资源元数据用于指示当前可用资源;第二资源分配模块,被配置为根据确定的所述第二任务需要的资源以及所述资源元数据为所述第二任务分配资源。
根据上述实施提供的系统400和500,可以实现构建过程中的动态资源分配,以提高资源的利用效率,并保证构建过程的有效进行。
本发明上述装置实施例中的实现细节可以参照相应的方法实施例,此处不再赘述。并且上述装置实施例之间可以彼此参照、结合,得到更多的实施例。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
1.一种用于为构建过程中的任务分配资源的方法,所述构建过程包括多个任务,所述方法包括:
获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任务类型;
获取执行元数据,所述执行元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;
根据所述任务元数据和所述执行元数据确定所述第二任务的工作负载特征,其中第二任务的工作负载特征包括是所述第二任务属于计算密集型还是内存密集型;
根据所述第二任务的工作负载特征确定所述第二任务需要的资源。
2.根据权利要求1所述的方法,其中,所述任务元数据包括所述多个任务之间的依赖关系,所述多个任务之间的依赖关系用于指示所述多个任务中的某一任务依赖所述多个任务中的其它一个或多个任务的执行结果;
在所述根据所述任务元数据和所述执行元数据确定所述第二任务需要的资源之前,所述方法进一步包括:根据刚执行完的任务以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。
3.根据权利要求2所述的方法,其中,所述任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序;
所述方法进一步包括:获取资源元数据,所述资源元数据用于指示当前可用资源;根据所述执行顺序数据确定下一个执行的任务为所述第二任务;根据所述资源元数据以及确定的所述第二任务需要的资源为所述第二任务分配资源。
4.根据权利要求2所述的方法,其中,所述执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕;
所述根据刚执行完的任务以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源包括:根据所述执行阶段数据以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。
5.根据权利要求1所述的方法,其中,所述任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序;
在所述根据所述任务元数据和所述执行元数据确定所述第二任务需要的资源之前,所述方法进一步包括:根据所述执行顺序数据确定下一个执行的任务为所述第二任务,并确认需要为所述第二任务分配资源。
6.根据权利要求5所述的方法,其中,所述执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕;
所述根据所述执行顺序数据确定下一个执行的任务为所述第二任务,包括:根据所述执行顺序数据以及所述执行阶段数据判断下一个执行的任务为所述第二任务。
7.根据权利要求1或5所述的方法,其中,所述方法进一步包括:
获取资源元数据,所述资源元数据用于指示当前可用资源;
根据确定的所述第二任务需要的资源以及所述资源元数据为所述第二任务分配资源。
8.一种用于为构建过程中的任务分配资源的系统,其中,所述构建过程包括多个任务,所述系统包括:
第一捕获模块,被配置为获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任务类型;
第二捕获模块,被配置为获取执行元数据,所述执行元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;
资源需求确认模块,被配置为根据所述任务元数据和所述执行元数据确定所述第二任务的工作负载特征并根据所述第二任务的工作负载特征确定所述第二任务需要的资源,其中第二任务的工作负载特征包括是所述第二任务属于计算密集型还是内存密集型。
9.根据权利要求8所述的系统,其中,
所述任务元数据包括所述多个任务之间的依赖关系,所述多个任务之间的依赖关系用于指示所述多个任务中的某一任务依赖所述多个任务中的其它一个或多个任务的执行结果;
所述系统进一步包括:第一待分配确认模块,被配置为根据刚执行完的任务以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。
10.根据权利要求9所述的系统,其中,
所述任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序;
所述系统进一步包括:第三捕获模块,被配置为获取资源元数据,所述资源元数据用于指示当前可用资源;待执行确认模块,被配置为根据所述执行顺序数据确定下一个执行的任务为所述第二任务;第一资源分配模块,被配置为根据所述资源元数据以及确定的所述第二任务需要的资源为所述第二任务分配资源。
11.根据权利要求9所述的系统,其中,所述执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕;
所述第一待分配确认模块进一步被配置为根据所述执行阶段数据以及所述多个任务之间的依赖关系确定需要为所述第二任务分配资源。
12.根据权利要求8所述的系统,其中,所述任务元数据进一步包括执行顺序数据,所述执行顺序数据用于指示所述多个任务之间的执行顺序;
所述系统进一步包括:第二待分配确认模块,被配置为根据所述执行顺序数据确定下一个执行的任务为所述第二任务,并确认需要为所述第二任务分配资源;
所述资源需求确认模块,被进一步配置为在所述第二待分配确认模块确定需要为所述第二任务分配资源后,根据所述第一捕获模块获取的任务元数据和所述第二捕获模块获取的执行元数据确定所述第二任务需要的资源。
13.根据权利要求12所述的系统,其中,所述执行元数据进一步包括执行阶段数据,所述执行阶段数据用于指示当前的某一任务执行完毕;所述第二待分配确认模块进一步被配置为根据所述执行顺序数据以及所述执行阶段数据判断下一个执行的任务为所述第二任务。
14.根据权利要求8或12所述的系统,其中,所述系统进一步包括:
第四捕获模块,被配置为获取资源元数据,所述资源元数据用于指示当前可用资源;
第二资源分配模块,被配置为根据确定的所述第二任务需要的资源以及所述资源元数据为所述第二任务分配资源。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310154425.3A CN104123184B (zh) | 2013-04-28 | 2013-04-28 | 一种用于为构建过程中的任务分配资源的方法和系统 |
US14/191,944 US9471386B2 (en) | 2013-04-28 | 2014-02-27 | Allocating resources to tasks in a build process |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310154425.3A CN104123184B (zh) | 2013-04-28 | 2013-04-28 | 一种用于为构建过程中的任务分配资源的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104123184A CN104123184A (zh) | 2014-10-29 |
CN104123184B true CN104123184B (zh) | 2017-12-22 |
Family
ID=51768606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310154425.3A Expired - Fee Related CN104123184B (zh) | 2013-04-28 | 2013-04-28 | 一种用于为构建过程中的任务分配资源的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9471386B2 (zh) |
CN (1) | CN104123184B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471371B2 (en) * | 2014-02-27 | 2016-10-18 | International Business Machines Corporation | Dynamic prediction of concurrent hardware transactions resource requirements and allocation |
US10509683B2 (en) * | 2015-09-25 | 2019-12-17 | Microsoft Technology Licensing, Llc | Modeling resource usage for a job |
CN105373430A (zh) * | 2015-10-13 | 2016-03-02 | 惠州Tcl移动通信有限公司 | 一种动态分配编译机的系统及其方法 |
US10977092B2 (en) * | 2015-10-16 | 2021-04-13 | Qualcomm Incorporated | Method for efficient task scheduling in the presence of conflicts |
CN105975276B (zh) * | 2016-05-09 | 2019-04-09 | 上海携程商务有限公司 | 分布式构建系统及方法 |
US10152349B1 (en) * | 2016-09-27 | 2018-12-11 | Juniper Networks, Inc. | Kernel scheduling based on precedence constraints and/or artificial intelligence techniques |
CN107015853B (zh) * | 2016-10-10 | 2021-03-23 | 创新先进技术有限公司 | 多阶段任务的实现方法和装置 |
CN106897144B (zh) * | 2017-01-05 | 2021-04-20 | 创新先进技术有限公司 | 一种资源分配方法及装置 |
GB201720823D0 (en) * | 2017-12-14 | 2018-01-31 | Palantir Technologies Inc | Pipeline task verification for data processing platform |
CN108279980A (zh) * | 2018-01-22 | 2018-07-13 | 上海联影医疗科技有限公司 | 资源分配方法及系统和资源分配终端 |
CN110389763B (zh) * | 2018-04-20 | 2023-06-16 | 伊姆西Ip控股有限责任公司 | 用于调度专用处理资源的方法、设备和计算机可读介质 |
CN109144695B (zh) * | 2018-08-30 | 2021-08-10 | 百度在线网络技术(北京)有限公司 | 一种任务拓扑关系的处理方法、装置、设备和介质 |
CN111831287B (zh) * | 2019-04-22 | 2024-03-22 | 伊姆西Ip控股有限责任公司 | 用于确定执行代码段所需的资源的方法、设备和程序产品 |
CN110225082B (zh) * | 2019-04-30 | 2021-12-10 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
CN111124696B (zh) * | 2019-12-30 | 2023-06-23 | 北京三快在线科技有限公司 | 单元组创建、数据同步方法、装置、单元和存储介质 |
CN111949400B (zh) * | 2020-07-31 | 2024-04-09 | 上海中通吉网络技术有限公司 | 业务线的任务资源消耗分摊方法、装置、设备和存储介质 |
CN112035256A (zh) * | 2020-08-28 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 一种资源分配方法、装置、电子设备及介质 |
CN112463397B (zh) * | 2020-12-10 | 2023-02-10 | 中国科学院深圳先进技术研究院 | lock-free的分布式死锁避免方法及装置、计算机设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101715001A (zh) * | 2009-10-21 | 2010-05-26 | 南京邮电大学 | 一种控制网格任务执行的方法 |
CN101743534A (zh) * | 2007-07-16 | 2010-06-16 | 微软公司 | 通过增长和收缩资源分配来进行调度 |
CN102708007A (zh) * | 2012-04-06 | 2012-10-03 | 沈阳航空航天大学 | 片上多线程计算机系统中线程性能预测和控制方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676788B1 (en) | 2003-03-25 | 2010-03-09 | Electric Cloud, Inc. | Architecture and method for executing program builds |
US7086063B1 (en) | 2003-03-25 | 2006-08-01 | Electric Cloud, Inc. | System and method for file caching in a distributed program build environment |
US7810099B2 (en) * | 2004-06-17 | 2010-10-05 | International Business Machines Corporation | Optimizing workflow execution against a heterogeneous grid computing topology |
WO2006053093A2 (en) * | 2004-11-08 | 2006-05-18 | Cluster Resources, Inc. | System and method of providing system jobs within a compute environment |
US8458661B2 (en) | 2006-03-31 | 2013-06-04 | Ebay Inc. | Distributed parallel build system |
US8042089B2 (en) | 2006-10-03 | 2011-10-18 | Electric Cloud, Inc. | Process automation system and method employing multi-stage report generation |
US8161488B2 (en) | 2007-10-23 | 2012-04-17 | Microsoft Corporation | System and method for registering a subscription of interest of needed new resource in a store accessible by a plurality of resource creators and pushing the needed resource thereto by the creator based upon the registered subscription |
US8782653B2 (en) * | 2010-03-26 | 2014-07-15 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
US9710261B2 (en) | 2010-05-06 | 2017-07-18 | Microsoft Technology Licensing, Llc | Techniques to enhance software production |
US8756599B2 (en) * | 2011-01-17 | 2014-06-17 | International Business Machines Corporation | Task prioritization management in a virtualized environment |
US8635607B2 (en) | 2011-08-30 | 2014-01-21 | Microsoft Corporation | Cloud-based build service |
CN103377076A (zh) * | 2012-04-28 | 2013-10-30 | 国际商业机器公司 | 一种运行时调整任务执行计划的方法和系统 |
US20130311226A1 (en) * | 2012-05-15 | 2013-11-21 | Linda Lee Dreselly | System and method to estimate resource allocations for a project |
-
2013
- 2013-04-28 CN CN201310154425.3A patent/CN104123184B/zh not_active Expired - Fee Related
-
2014
- 2014-02-27 US US14/191,944 patent/US9471386B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101743534A (zh) * | 2007-07-16 | 2010-06-16 | 微软公司 | 通过增长和收缩资源分配来进行调度 |
CN101715001A (zh) * | 2009-10-21 | 2010-05-26 | 南京邮电大学 | 一种控制网格任务执行的方法 |
CN102708007A (zh) * | 2012-04-06 | 2012-10-03 | 沈阳航空航天大学 | 片上多线程计算机系统中线程性能预测和控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140325521A1 (en) | 2014-10-30 |
US9471386B2 (en) | 2016-10-18 |
CN104123184A (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104123184B (zh) | 一种用于为构建过程中的任务分配资源的方法和系统 | |
CN108537543B (zh) | 区块链数据的并行处理方法、装置、设备和存储介质 | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
CN104252391B (zh) | 用于在分布式计算系统中管理多个作业的方法和装置 | |
CN102446114B (zh) | 优化虚拟图形处理单元利用的方法和系统 | |
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
US11429434B2 (en) | Elastic execution of machine learning workloads using application based profiling | |
CN105700956A (zh) | 用于处理分布式作业的方法和系统 | |
CN106383764B (zh) | 一种数据采集方法和设备 | |
US9330199B2 (en) | Striping of directed graphs and nodes with improved functionality | |
US10545847B2 (en) | Grouping and isolating software changes to increase build quality | |
US11568242B2 (en) | Optimization framework for real-time rendering of media using machine learning techniques | |
CN103885876A (zh) | 测试方法及设备 | |
CN109871290A (zh) | 应用于Java的调用堆栈追踪方法、装置和存储介质 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
Han et al. | Refining microservices placement employing workload profiling over multiple kubernetes clusters | |
CN110297743B (zh) | 一种负载测试方法、装置和存储介质 | |
CN109865292A (zh) | 一种基于游戏引擎的游戏资源构建方法和装置 | |
CN109213429B (zh) | 存储管理方法和设备 | |
US20230040564A1 (en) | Learning Causal Relationships | |
US10026500B2 (en) | Address translation stimuli generation for post-silicon functional validation | |
CN109683917A (zh) | 用于将应用部署于应用服务器的方法、设备以及介质 | |
US20130247037A1 (en) | Control computer and method for integrating available computing resources of physical machines | |
US9645637B2 (en) | Managing a free list of resources to decrease control complexity and reduce power consumption | |
CN109120433B (zh) | 用于容器化部署主机的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171222 |
|
CF01 | Termination of patent right due to non-payment of annual fee |