CN110402431A - 使用有向无环图进行事件驱动的调度 - Google Patents
使用有向无环图进行事件驱动的调度 Download PDFInfo
- Publication number
- CN110402431A CN110402431A CN201880017770.3A CN201880017770A CN110402431A CN 110402431 A CN110402431 A CN 110402431A CN 201880017770 A CN201880017770 A CN 201880017770A CN 110402431 A CN110402431 A CN 110402431A
- Authority
- CN
- China
- Prior art keywords
- dependence
- node
- directed acyclic
- acyclic graph
- run
- 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
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000003860 storage Methods 0.000 claims description 44
- 238000004458 analytical method Methods 0.000 claims description 33
- 238000013500 data storage Methods 0.000 claims description 19
- 230000001419 dependent effect Effects 0.000 claims description 13
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 230000004888 barrier function Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 17
- 230000004044 response Effects 0.000 description 17
- 238000007726 management method Methods 0.000 description 14
- 125000002015 acyclic group Chemical group 0.000 description 13
- 230000007613 environmental effect Effects 0.000 description 11
- 230000000977 initiatory effect Effects 0.000 description 8
- 238000012163 sequencing technique Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012854 evaluation process Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
-
- 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
-
- 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]
-
- 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/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/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/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了用于使用有向无环图进行事件驱动的调度的方法、系统和计算机可读介质。生成包括多个节点和多个边缘的有向无环图。所述节点表示作业,并且所述边缘表示各个作业之间的依赖关系。(至少部分地)基于一个或多个事件,作业调度器确定所述节点中的一个节点表示可运行作业。由所述一个或多个事件满足所述依赖关系中所述可运行作业的一个或多个依赖关系。确定所述可运行作业的执行调度。(至少部分地)基于所述执行调度,使用一个或多个计算资源来发起所述可运行作业的执行。
Description
背景技术
许多公司和其它组织操作互连多个计算系统以支持其操作的计算机网络,其例如与计算系统共同定位(例如,作为局部网络的一部分)或者定位在多个不同的地理位置(例如,经由一个或多个私人或公共中间网络连接)。例如,容纳大量互连的计算系统的分布式系统已经变得很普遍。这种分布式系统可以向与客户端交互的服务器提供后端服务。这种分布式系统还可以包含由实体操作以向客户提供计算资源的数据中心。一些数据中心运营商为各个客户拥有的硬件提供网络接入、电力和安全安装设施,而其它数据中心运营商提供“全方位服务(full service)”设施,所述全方位服务设施还包含可供数据中心运营商的客户使用的硬件资源。当被远程客户访问时,数据中心处的这种资源可以被称为驻留“在云中”并且可以被称为云计算资源。
用于商品硬件的虚拟化技术的出现已经在管理具有不同需求的许多客户的大规模计算资源方面提供了益处。例如,虚拟化技术可以通过向每个用户提供由单个物理计算装置托管的一个或多个虚拟机来允许在多个用户之间共享单个物理计算装置。每个这种虚拟机可以是软件模拟,所述软件模拟充当向用户提供用户是给定的硬件计算资源的唯一运营商和管理员的假象的不同逻辑计算系统,同时还在各个虚拟机之间提供应用隔离和安全性。通过虚拟化,单个物理计算装置可以以动态方式创建、保持或删除虚拟机。与用客户端的预置资源可能访问的计算容量相比,使用云计算资源的虚拟化来运行客户端程序可以使一些客户端能够在给定的时间访问更大量的计算容量。
附图说明
图1展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境。
图2展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图中的依赖关系进行分析以确定作业可运行。
图3展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图进行事件驱动的分析以更新依赖关系。
图4展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图中的依赖关系进行事件驱动的分析以确定作业可运行。
图5展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图进行事件驱动的分析以添加表示新提交的作业的新节点。
图6展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图进行事件驱动的分析以除去由于取消或故障产生的节点。
图7是展示根据一个实施例的用于使用有向无环图进行事件驱动的调度的方法的流程图。
图8是展示根据一个实施例的用于使用有向无环图进行事件驱动的调度的方法的流程图,包含对有向无环图进行事件驱动的分析以添加表示新提交的作业的新节点并且添加一个或多个新的依赖关系。
图9是展示根据一个实施例的用于使用有向无环图进行事件驱动的调度的方法的流程图,包含对有向无环图中的依赖关系进行事件驱动的分析以确定一个或多个作业可运行。
图10展示了可以在一些实施例中使用的实例计算装置。
虽然本文通过几个实施例和说明性附图的实例的方式对实施例进行了描述,但是本领域技术人员将认识到,实施例不限于所描述的实施例或附图。应理解的是,附图和其详细描述不旨在将实施例限于所公开的特定形式,而相反,旨在覆盖落入如由所附权利要求书限定的精神和范围内的所有修改、等同物和替代方案。本文所使用的标题仅是出于组织目的,而不意在用于限制本说明书或权利要求书的范围。如贯穿本申请使用的,词语“可以”用于许可的意义(即,意指“有可能”),而非强制性意义(即,意指“必须”)。类似地,词语“包含(include/including/includes)”意指“包含但不限于”。
具体实施方式
描述了用于使用有向无环图进行事件驱动的调度的方法、系统和计算机可读介质的各个实施例。作业调度器可以使用本文所描述的技术通过保持如有向无环图(DAG)等作业图以高效的方式来调度作业执行。所述图可以包含表示作业的节点和表示依赖关系的边缘。在所述图中,依赖关系可以指示哪些节点依赖于其它节点以及哪些节点被其它节点依赖。在评估对应节点时,没有未满足的依赖的作业可被视为可运行并且可以(至少部分地)基于执行调度被调度执行。在不向所述图添加对应节点的情况下,可以将缺少依赖的新提交的作业添加到执行调度。执行调度可以使用如队列或链表等有序数据结构实施。执行调度中的作业顺序可以基于提交时间或任何其它适合的标准。代替重复且低效地评估整个图,可以响应于事件仅对所述图的相关部分进行评估。例如,当提交指示对一个或多个较早提交的作业有依赖的新作业时,可以在图中更新较早提交的作业以指示新作业有依赖,而不对图中的不相关节点进行评估。作为另一个实例,当作业的执行完成时,可以在图中更新依赖于所述执行的作业的任何作业以除去与执行的作业的依赖关系并且还可以评估所述作业的可运行性,而不对图中的不相关节点进行评估。使对图进行部分评估的事件可以包含新作业的提交、作业的执行的发起、作业的成功执行、作业的执行失败、作业的阈值百分比的成功执行等。在作业调度器故障时,可以使用如从数据存储装置中检索到的描述具有未满足的依赖的作业的信息对图进行重建。以此方式,可以针对具有可能复杂的依赖的大量作业高效地进行作业调度。
图1展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境。事件驱动的作业调度器100可以调度作业使用适合的计算资源191执行,并且一些作业可以具有依赖关系。如图1的实例所示出的,作业调度器100可以表示与特定客户端110交互的作业调度服务的一个个例(instance)或客户端特定会话。然而,作业调度服务的其它个例或客户端特定会话可以与另外的客户端交互。客户端110可以表示被配置成向作业调度器100提交一个或多个作业定义111的一个或多个计算装置。作业调度器可以通过客户端界面120接收所述一个或多个作业定义。客户端界面120可以包含一个或多个用户界面(例如,图形用户界面和/或命令行界面)和/或一个或多个应用编程界面(API)或其它程序化界面。客户端110可以与向客户端供应作业调度器和/或供应计算资源191的实体有预先存在的关系,例如,在客户端为作业执行或其它资源使用支付费用的地点方面达成共识。所述一个或多个作业定义111可以由与客户端110相关联的一个或多个用户或自动化系统提交。可以在一段时间内一批或多批地从特定客户端装置110接收作业的一个或多个工作负荷。
作业定义可以描述用于由提供商网络190中的计算资源191进行的一个或多个任务。作业定义内的任务可以包含完全不同的任务(例如,具有不同的程序代码的任务)和/或针对不同的输入数据运行相同的程序代码的任务。对于特定任务,作业定义可以包含或引用用于在处理任务时执行的程序指令。作业定义可以包含作业标识符或与作业标识符相关联。在一个实施例中,作业标识符可以在提交对应的作业定义时由作业调度器100生成。在一个实施例中,作业标识符可以包含由客户端110提供的一个或多个字母数字标签,如人类可读作业名称和/或表征作业的一个或多个标签。作业定义可以包含或引用用于使用程序指令处理的输入数据集,从而可能使用应用的多个副本或程序代码集顺序地或同时处理输入数据的不同元素。作业定义还可以包含或设置有其它适合的元数据,包含定时信息(例如,开始处理工作负载的时间、运行工作负载的预期时间和/或截止日期)、预算信息、预期资源使用等。例如,作业定义中的预期资源使用可以指示预期处理器使用(例如,多个虚拟CPU)、存储器使用、存储使用、网络使用和/或其它硬件资源特性的一个或多个值(包含值的范围)。
在一个实施例中,作业调度器100可以构建并且保持表示由客户端110提供的作业以及作业级依赖的有向无环图(DAG)130。有向无环图130可以是客户端110特定的,并且作业调度器100的相同或不同个例或客户端特定会话可以为同一客户端或不同的客户端构建并且保持不同的有向无环图。图130可以包含表示作业的节点和表示作业到作业的依赖关系的边缘。在图130中,依赖关系可以指示哪些节点依赖于其它节点以及哪些节点被其它节点依赖。在评估对应节点时,没有未满足的依赖的作业可被视为可运行并且可以(至少部分地)基于执行调度140被调度执行。在不向图130添加对应节点的情况下,可以将缺少依赖的新提交的作业添加到执行调度140。执行调度140可以使用如队列或链表等有序数据结构实施。执行调度140中的作业顺序可以基于提交到作业调度器100的时间或任何其它适合的标准。
有向无环图130可以是动态的,因为可以周期性地添加新作业,同时周期性地从图中除去对应于较旧作业的节点。最初,可以使用用于拓扑排序的任何适合的算法例如Kahn算法构建图130。拓扑排序可以计算节点的顺序,其中每个低阶节点对高阶节点没有依赖。对任何低阶节点没有依赖的节点可以称为零阶节点(或作业)并且可以添加到执行调度。零阶节点可以按由对应的作业的其它属性确定的特定顺序来执行,如由作业定义的时间戳指定的先进先出(FIFO)顺序。图130中的节点和执行调度140中的零阶节点可以在作业调度器100处保持在存储器中,其中可以使用同步技术和锁定技术来进行并行控制。作业调度器100还可以对事件实施幂等,使得第二次施加相同的事件不会改变结果。
可以通过事件来驱动作业调度器100的各个功能,如对图130中的依赖进行评估和/或对图中的作业的可运行性进行评估。可以响应于关于调度器在内部或外部生成的事件来执行作业调度器100的各个功能。代替重复且低效地评估整个图,可以响应于事件仅对所述图的相关部分进行评估。例如,当提交指示对一个或多个较早提交的作业有依赖的新作业时,可以在图130中更新较早提交的作业以指示新作业有依赖,而不对图中的不相关节点进行评估。作为另一个实例,当作业的执行使用计算资源191完成时,可以在图130中更新依赖于所述执行的作业的任何作业以除去与执行的作业的依赖关系并且还可以评估所述作业的可运行性,而不对图中的不相关节点进行评估。使对图130进行部分评估的事件可以包含新作业的提交、作业的执行的发起、作业的成功执行、作业的执行失败、作业的阈值百分比的成功执行等。以此方式,可以针对具有可能复杂的依赖的大量作业高效地进行作业调度。
作业调度器100或另一个适合的组件可以选择并且预留由提供商网络190供应的一个或多个计算资源191以代表客户端110执行作业。通过与和提供商网络190相关联的资源管理器180交互,可以自动地提供和取消提供计算资源191以执行调度作业。计算资源191可以包含计算个例、存储个例等。计算资源191可以包含对使用作业调度器100进行调度的作业实施作业执行192的组件或其它功能。在一个实施例中,可以选择具有特定配置的计算资源,如特定个例类型的计算个例和/或具有特定参数值的软件配置。在一个实施例中,可以(至少部分地)基于来自客户端110的输入来选择特定配置,如可用于特定作业的个例类型列表或出于优化目的对任务进行测试的个例类型列表。在一个实施例中,可以在没有来自客户端110的输入的情况下例如通过与作业调度器100或资源管理器180相关联的一个或多个组件自动地和/或以编程方式选择特定配置。可以基于作业定义111来选择特定配置。例如,如果作业定义指示任务需要特定数量的虚拟CPU,或者需要特定量的存储器,则在一个实施例中仅可以选择满足或超出这种要求的计算资源。作业调度器100可以例如(至少部分地)基于执行调度140来确定发起特定作业的执行的时间。在一个实施例中,作业调度器100可以例如在与提供特定作业的客户端相关联的计算环境内确定发起作业的执行所用的一个或多个特定计算资源。
在一个实施例中,容器管理系统可以与作业执行192一起使用以部署由客户端提供或以其它方式引用的程序指令。例如,可以使用包含容器管理系统的机器图像来启动所提供的个例。在各个实施例中,可以在调度作业之前或响应于作业的调度来启动个例。在启动之后,可以用由客户端指示的用于进行与作业相关联的一个或多个任务程序指令来填充容器。在一个实施例中,任务还可以表示提交到管理其自己的计算个例群的程序执行服务的程序(以及可能的输入数据)。在一个实施例中,作业执行192可以被配置成用于与批量应用相关联的任务。在一个实施例中,作业执行192可以被配置成用于在如容器服务等环境顶部运行的web应用、微服务应用和/或服务。
可以从提供商网络190的供应不同资源池的一个或多个资源池中选择计算资源191。在一个实施例中,不同的池可以在其组成资源的硬件特性方面有所不同,如处理器能力或配置、存储器能力或配置、存储能力或配置、连网能力或配置等。在一个实施例中,不同的池可以在地理位置方面有所不同,可能包含如由提供商网络190的运营商配置的不同的可用性区或其它区域。可用性区可以表示区域内的位置或区,并且区域可以通过适当的边界(例如,地理边界、基于商业的边界、政治边界和/或任意边界)来限定。在一个实施例中,不同的池可以表示由提供商网络190供应的不同购买模式。例如,可以在现货市场、按需市场或长期市场中供应计算资源191,在所述现货市场中,如果接收到更高出价则无法保证保持个例预留,在所述按需市场中,可以保证个例预留商定的持续时间(例如,一小时),在所述长期市场中,可以保证个例预留更长的时间(例如,一年)。不同的购买模式可以与客户端110的不同成本相关联,例如使得在每单位时间,现货个例通常比按需个例更便宜。
在一个实施例中,计算资源191可以是由包含作业调度器100的计算环境管理系统代表客户端110管理的计算环境的一部分。客户端界面120可以用于从客户端110接收除一个或多个作业定义111之外的输入;另一个输入可以表示用户输入和/或以编程方式生成的输入。例如,输入可以指定或引用特定计算环境的一个或多个约束和/或一个或多个队列标识符。(至少部分地)基于输入,计算环境管理系统可以生成与客户端相关联的计算环境的计算环境规范。然后,计算环境管理系统可以代表客户端管理与规范一致的计算环境中的资源。可替代地,计算环境管理系统可以允许客户端在计算环境内对计算资源进行管理,可能包含提供、取消提供、作业指派和/或资源配置。
计算环境规范还可以包含可用于管理计算资源集的另外的元数据或配置数据。另外的元数据或配置数据可以表示计算环境或其组成资源的其它性质或属性。例如,计算环境规范可以使特定标签(例如,字母数字标签)与特定资源相关联,以便于进行资源管理。作为另一个实例,计算环境规范可以包含使计算环境与表示例如提供商网络190内的虚拟网络的虚拟私云(VPC)相关联的数据。VPC可以与提供商网络190内的其它资源和其它VPC隔离并且可以具有被称为子网的其自己的IP地址范围;计算环境中的资源可以启动到子网中。
在一个实施例中,作业调度器100可以实施与一个或多个特定的队列标识符相关联的一个或多个作业队列,例如如由客户端提供并且映射到特定计算环境中的。作业队列可以包含一组相关的二次队列,使得如果满足了适当的条件,则作业可以从相关队列中的一个队列移动到相关队列中的另一个队列中。例如,当首次提交作业定义时,作业最初可以放置在提交的队列中。如果提交的队列中的作业没有依赖,则调度器100可以将所述作业移动到可运行队列中。可运行队列可以使用链表或其它有序数据结构实施并且可以用来实施执行调度140。可以将具有一个或多个依赖关系的作业从提交的队列移动到未决队列。各个作业可以与各种状态相关联,如已提交、未决、可运行、正在运行、成功、失败等。从一个状态到另一状态的改变可以构成使评估图130的相关部分的事件。
在一个实施例中,各个队列和有向无环图130可以保持在存储器或者实施作业调度器100的所述一个或多个计算装置本地可访问的其它存储装置中。在一个实施例中,与有向无环图130和各个队列有关的信息的至少一部分信息可以存储在存储描述作业的信息151的数据存储装置150中。在一个实施例中,未决队列中的作业可以存储在数据存储装置150中。在一个实施例中,所有作业均可以在数据存储装置中被表示至少某个时间长度。在作业调度器100故障的情况下,可以通过从数据存储装置150加载相关作业信息151由作业调度器的另一个个例来重建未决队列。可以使用任何适合的存储系统或存储服务实施数据存储装置150。在一个实施例中,可以使用如来自亚马逊(Amazon)的DynamoDBTM等键值数据存储装置实施数据存储装置150。在各个实施例中,作业调度器100、数据存储装置150和/或计算资源191可以驻留在“云中”并且可以通过如互联网等公共可访问网络进行访问。
客户端110可以表示一个或多个计算装置,所述一个或多个计算装置中的任何计算装置可以由图10所示的实例计算装置3000实施。所述一个或多个客户端装置110可以经由一个或多个网络耦合到作业调度器100,所述一个或多个网络可能包含互联网。设想可以使用任何适合的数量和配置的客户端装置向作业调度器100提供配置信息和作业。客户端110可以涵盖可配置为向作业调度器100提交配置信息的任何类型的客户端。例如,给定的客户端装置可以包含适合版本的web浏览器,或者其可以包含插件模块或其它类型的代码模块,所述插件模块或代码模块被配置成作为对web浏览器提供的执行环境的扩展来执行或在web浏览器提供的执行环境内执行。可替代地,客户端装置可以涵盖如以下等应用:数据库应用(或其用户界面)、媒体应用、办公室应用或可以与客户端界面120交互以进行各种操作的任何其它应用。在一些实施例中,这种应用可以包含足够的协议支持(例如,用于适合版本的超文本传输协议[HTTP])以用于生成和处理基于网络的服务请求,而不必实施对所有类型的基于网络的数据的完全浏览器支持。在一些实施例中,所述一个或多个客户端装置110可以被配置成根据基于表述性状态转移(REST)风格网络的服务架构、基于以文档或消息为基础的网络的服务架构或另一种适合的基于网络的服务架构来生成基于网络的服务请求。在至少一些实施例中,所述一个或多个客户端装置110可以为在客户端装置处实施的文件系统提供、安装和配置在提供商网络190内在存储服务处实施的存储卷。
所述一个或多个客户端装置110可以经由一个或多个网络将基于网络的服务请求传送到作业调度器100。在各个实施例中,所述一个或多个网络可以涵盖在所述一个或多个客户端装置110与计算环境管理系统100之间建立基于网络的通信所必需的网络硬件和协议的任何适合的组合。例如,所述一个或多个网络通常涵盖共同实施互联网的各种电信网络和服务提供商。所述一个或多个网络还可以包含如局域网(LAN)或广域网(WAN)等专用网络以及公共或专用无线网络。例如,可以在具有自己的内部网络的企业内分别提供所述一个或多个客户端装置110和作业调度器100两者。在这种实施例中,所述一个或多个网络可以包含在所述一个或多个客户端装置110与互联网之间以及在互联网与作业调度器100之间建立联网链路所必需的硬件(例如,调制解调器、路由器、交换机、负载均衡器、代理服务器等)和软件(例如,协议栈、会计软件、防火墙/安全软件等)。注意,在一些实施例中,所述一个或多个客户端装置110可以使用专用网络而非公共互联网与作业调度器100通信。
提供商网络190可以包含多个计算资源191。资源可以包含计算个例、存储个例等。提供商网络190供应的资源可以在其各自的配置方面有所不同。计算资源的配置可以包含其个例类型、硬件能力(例如,处理器核的类型和数量、虚拟CPU的类型和数量、存储器和存储装置的类型和数量、如图形处理单元(GPU)等专用协处理器的存在或不存在、特定的专用集成电路(ASIC)或现场可编程门阵列(FPGA)的存在或不存在等)、软件配置(例如,操作系统类型和配置、虚拟化执行环境类型和配置、应用类型和配置等)和/或其它适合的特性。例如,提供商网络可以包含不同的计算个例类型的一组计算个例(物理计算个例和/或虚拟计算个例),其中计算个例类型可以在其处理器资源、存储器资源、存储装置资源、网络资源等的能力和特征方面有所不同,并且可能还在其成本方面有所不同。计算资源的配置可以影响用于执行特定任务的所述资源的性能,使得具有不同配置的资源可以针对相同或类似的任务在性能(例如,处理器性能、执行时间、存储器使用、存储装置使用、网络使用、能量使用等)方面有所不同。提供商网络190供应的资源还可以在估计的其各自的成本方面有所不同,以供客户端预留和/或使用资源。在一个实施例中,成本可以根据硬件配置以及购买模式有所不同。另外,提供商网络190供应的资源的可用性可以在特定时间在其可用性方面有所不同。提供商网络190可以包含未示出的另外的组件、比所示出的组件更少的组件或与所示出的组件不同的组合、配置或数量的组件。
提供商网络190可以包含由如公司或公共部门组织等实体建立的向一组分布式客户端提供可经由互联网和/或其它网络访问的一种或多种服务(如各种类型的网络可访问的计算或存储)的网络。提供商网络190可以包含托管用于实施和分布提供商供应的基础设施和服务的各种资源池的多个数据中心,如物理和/或虚拟化计算机服务器、存储装置、连网装备等的集合。在一些实施例中,计算资源可以以被称为“个例”的单位供应到客户端,如虚拟或物理计算个例。例如,虚拟计算个例可以包括具有指定的计算容量(所述指定的计算容量可以通过指示CPU的类型和数量、主存储器大小等来指定)和指定的软件栈(例如,特定版本的操作系统,所述操作系统进而可以在管理程序顶部运行)的一个或多个服务器。在不同的实施例中,多个不同类型的计算装置可以单独地或组合地使用以实施提供商网络190的资源,包含通用或专用计算机服务器、存储装置、网络装置等。因为提供商网络190的资源可以同时受多个客户端(或租户)控制,所以可以说提供商网络供应多租户并且可以被称为多租户提供商网络。例如,多租户提供商网络190中的虚拟计算个例可以同时用于由客户端110以及由另一个客户端对作业进行处理。
在一些实施例中,提供商网络190的运营商可以为其客户端实施一组灵活的资源预留、控制和访问界面。例如,资源管理器180可以实施程序资源预留界面(例如,经由网站或一组网页),所述程序资源预留界面允许客户端和/或如作业调度器100等其它组件了解、选择、购买访问和/或预留提供商网络190供应的计算个例。这种界面可以包含允许浏览资源目录并且提供所支持的不同类型或大小的资源、所支持的不同预留类型或模式、定价模型等的细节和规范的能力。在各个实施例中,提供商网络190可以支持几个不同的购买模式(购买模式在本文中也可以称为预留模式):例如,长期预留、按需资源分配或基于现货价格的资源分配。
使用长期预留模式,客户端可以针对资源个例进行较低的一次性预付支付、预留资源个例指定的持续时间如一年或三年的期限并且为个例支付较低的小时率;可以确保客户端使预留个例在预留的期限内可用。使用按需模式,客户端可以按小时(或某个适当的时间单位)支付容量,而无需任何长期承诺或预付支付。在现货价格模式下,客户端可以指定愿意为特定类型的资源支付的每单位时间的最高价格,并且如果客户端的最高价格超过了至少部分地由供需确定的动态现货价格,则将所述类型的资源提供到客户端。在一些实施例中,可以为不同的预留类型或模式留出动态可调整大小的资源个例池:例如,可以从一个池分配长期预留个例、从另一个池分配按需个例等。在所请求的资源类型的供应超出需求的时期期间,现货价格可以变得显著低于按需模式的价格。在一些实施方案中,如果现货价格提高超出客户端指定的最高出价,则可以中断资源分配:例如,先前分配给客户端的资源个例可以由资源管理器180收回并且可以分配给愿意支付更高价格的其它某个客户端。在一些实施例中,其它购买模式或模式组合可以通过资源管理器180实施。
在一个实施例中,提供商网络190可以为虚拟计算个例供应不同的计算和/或存储器资源。在一个实施例中,虚拟计算个例中的每个虚拟计算个例可以对应于几个个例类型中的一个个例类型。个例类型可以表征为其计算资源(例如,中央处理单元[CPU]或CPU核的数量、类型和配置,包含虚拟CPU)、存储器资源(例如,本地存储器的容量、类型和配置)、存储装置资源(例如,本地可访问存储装置的容量、类型和配置)、网络资源(例如,其网络接口和/或网络能力的特性)和/或其它适合的描述性特性。使用资源管理器180,可以例如(至少部分地)基于来自客户端的输入为作业选择个例类型。例如,客户端可以从预先定义的一组个例类型中选择个例类型。作为另一个实例,客户端可以为作业指定个例类型的期望资源(例如,在作业定义中),并且资源管理器180可以基于这种指定来选择个例类型。
虚拟计算个例配置还可以包含通用或专用目的的虚拟计算个例,如用于计算密集型应用的计算工作负载(例如,高流量web应用、广告投放、批处理、视频编码、分布式分析、高能物理、基因组分析以及计算流体力学)、图形密集型工作负载(例如,游戏流式传输、3D应用流式传输、服务器端图形工作负载、渲染、金融建模和工程设计)、存储器密集型工作负载(例如,高性能数据库、分布式存储器高速缓存、内存分析、基因组汇编和分析)以及存储优化工作负载(例如,数据仓储和集群文件系统)。虚拟计算个例的配置还可以包含其在特定数据中心或可用性区中的位置、地理位置和(在预留的计算个例的情况下)预留期限长度。
在一个实施例中,包含作业调度器100的计算环境管理系统可以代表客户端自动管理调度的预留计算个例的提供和取消提供,例如使得调度的预留个例在适当的时间自动添加到特定计算环境中或者从特定计算环境中除去。调度的预留个例可以包含例如基于预留可由客户端或代表客户端访问特定时间段的计算资源(例如,计算个例)。在一个实施例中,与这种预留相关联的计算资源可以在所述时间段期间仅由特定客户端而非其它客户端使用。计算环境管理系统的作业调度器100可以自动管理与调度的预留计算个例和其计算环境相关联的作业队列,例如使得客户端可以在与调度的预留个例相关联的时间窗之前和/或期间向队列添加作业。
作业调度器100可以包含多个计算装置,所述多个计算装置中的任何计算装置均可以由图10所示的个例计算装置3000来实施。在各个实施例中,作业调度器100的所描述功能的一部分可以由同一计算装置或者由任何适合数量的不同计算装置来提供。如果使用不同的计算装置实施作业调度器100的任何组件,则组件和其各自的计算装置可以例如经由网络以通信方式耦合。所示组件中的每个组件可以表示可用于其各自的功能的软件和硬件的任何组合。设想作业调度器100可以包含未示出的另外的组件、比所示出的组件更少的组件或与所示出的组件不同的组合、配置或数量的组件。
图2展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图中的依赖关系进行分析以确定作业可运行。有向无环图130可以包含表示客户端100提供的作业的节点。在一个实施例中,最初可以通过检查一批或其它组作业定义中的任何作业级依赖来构建有向无环图130。在一个实施例中,只要作业调度器100仍可操作,有向无环图130就可以响应于新事件而高效地更新,而不是用每个事件进行完全重建。表示尚未准备运行的作业的节点可以保持在有向无环图130中,例如直到其依赖得到满足。即使已经完成了对较早提交的节点的执行,图130还可以包含稍后提交的节点继续依赖的较早提交的节点。在一个实施例中,每个节点可以与当前状态相关联,如已提交、未决、可运行、正在运行、成功、失败等。从一个状态到另一状态的改变可以构成使评估图130的相关部分的事件。不具有未满足的“主动依赖(DependsOn)”的节点可被视为在任何时间均可运行并且可以在执行调度140中表示。可以例如基于作业定义的提交的时间戳和/或基于任何其它适合的标准对执行调度140中的作业进行排序。
如在图2的实例所示出的,执行调度最初可以包含作业112A和作业112C。稍后当作业112A和112C对较早提交的作业的依赖得到满足时,如果所述作业缺少依赖或者如果所述作业最初具有依赖,则所述作业一提交就添加到调度。在一个实施例中,可以评估有向无环图130中的一个或多个节点以确定所述一个或多个节点(和对应的一个或多个作业)是否可运行。可运行节点和作业可以不具有未满足的主动依赖关系并且可以无延迟地执行,例如不必等待与其它作业相关联的条件得到满足。可以(至少部分地)基于与依赖所涉及的作业相关联的事件(如事件194)来确定依赖的满足。例如,如果特定作业依赖于较早提交的作业的完成并且所述较早提交的作业已经完成执行,则响应于与较早提交的作业相关联的执行事件,通过评估图130中特定作业的对应节点,可以认为特定作业可运行。使部分地评估图130的事件194可以表示新作业的提交、作业的执行的发起、作业的成功执行、作业的执行失败、作业的完成(成功或失败)、作业的阈值百分比的成功执行、作业的取消等。
又如图2的实例所示出的,有向无环图130可以包含表示一组作业的节点,如作业112B、作业112D、作业112E、作业112F、作业112G、作业112P、作业112Q等。图2中的图130所示的节点中的任何节点可以例如使用与节点相关联的适当的数据结构指示零个、一个或多个主动依赖关系。图2中的图130所示的节点中的任何节点可以例如使用与节点相关联的适当的数据结构指示零个、一个或多个被动依赖(DependedOn)关系。例如,作业112B可以与作业112D和作业112E有被动依赖关系。作业112B还可以与另一个节点具有先前主动依赖关系,并且所述依赖已经由事件194满足。例如,作业112B可能已经依赖于较早提交的作业的完成,并且事件194可以表示所述完成。同样地,作业112D和112E可以与作业112B有主动依赖关系,使得在关于作业112B的条件得到满足之前作业112D和作业112E可以不被认为可运行。在一个实施例中,依赖关系可以与各种条件相关联,如作业执行的发起、作业执行的成功完成、作业执行的完成失败、作业执行的成功完成或完成失败、工作中的任务的阈值百分比(例如,60%)的成功完成等。
依赖关系可以是一对一、一对多或多对一。例如,图130还可以包含作业112F对作业112D和作业112E两者的依赖关系,使得在作业112F可以被视为可运行并且添加到执行调度140之前必须满足作业112D和112E两者的条件(例如,用于成功执行)。作业112E可以被作业112F和作业112G两者依赖。响应于事件,可以仅对图130中的相关节点进行评估,例如关于可运行性。作业112Q可以依赖于作业112P,但是作业112P和112Q可以不连接到图2所示的其余作业。如果接收到与作业112B、作业112D、作业112E、作业112F或作业112G相关的事件,则对所述事件的影响的评估可以仅涉及那些节点并且可以绕过对应于不相关作业112P和112Q的节点。以此方式,可以构建一次有向无环图130,并且然后通过分析和修改图的仅相关部分来周期性且高效地更新。
又如图2的实例所示出的,鉴于事件194,可以对对应于作业112B的节点进行评估,以确定所述节点是否可运行(即,关于可运行性)。可以自动地(例如,不一定需要用户输入)以及以编程方式(例如,通过执行程序指令)执行评估和分析。可以响应于与所述作业112B相关的事件194来评估工作112B的可运行性,所述事件如涉及作业112B所依赖的作业的执行事件。如图2的实例所示出的,如果对节点的评估确定作业112B不具有更多未满足的主动依赖关系,则调度器100可以将作业移动到执行调度140中。例如如(至少部分地)基于作业提交到调度器100的顺序,可以将作业112B插入到调度表140中的现有作业顺序中在任何适当的位置。例如,基于作业112A、112B和112C的相应时间戳,可以将作业112B插入到较早提交的作业112A与稍后提交的作业112C之间的调度140中。在一个实施例中,执行调度140中的作业顺序可以保持在数据存储装置150中。例如,数据存储装置150可以包含排序功能,所述排序功能可以基于特定键值例如提交时间对可运行作业进行排序。当评估图130并且修改执行调度140时,作业调度器100可以将新的可运行作业插入到预定顺序中,而不必采用整个调度。在一个实施例中,对应于作业112B的节点可以留在图130中,条件是一个或多个其它节点依赖于所述节点。
在一个实施例中,可以通过在将作业提交到作业调度器100时自动生成作业标识符并且通过要求根据作业标识符指定依赖关系来强制执行图130的无环性。因此,在一个实施例中,特定作业的依赖关系可以仅指定较早提交的作业的作业标识符。在一个实施例中,作业标识符反而可以由客户端110指派,并且图130的无环性可以通过不同的方式来强制实施。例如,可以保持表示依赖关系的边缘的列表,并且可以对边缘进行分析以确定任何循环依赖,例如在发生与作业提交相关联的事件时。提交的具有循环依赖的作业可以被作业调度器100拒绝。
图3展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图进行事件驱动的分析以更新依赖关系。继续图2的实例,作业112B可以使用提供商网络190的计算资源191A的作业执行组件192A来执行。可以生成与作业112B的执行相关联的执行事件195并且提供到作业调度器100。执行事件195可以指示条件,如发起作业执行、作业执行的成功完成、作业执行的完成失败、作业执行的成功完成或完成失败、工作中的任务的阈值百分比(例如,60%)的成功完成等。在一个实施例中,执行事件195可以由计算资源191A“推动”。(至少部分地)基于执行事件195,可以分析或评估图130的相关部分,而无需评估图的其余部分。例如,对图130的自动和程序化分析或评估可以确定两个其它节点(对应于作业112D和112E)与作业112B有依赖关系。对图130的自动化和程序化分析或评估可以更新对应于作业112B的节点以除去所述节点的被动依赖元素,并且还可以更新对应于作业112D和112E的节点以除去这两个节点的主动依赖元素。除去被动依赖元素和其对应的主动依赖元素可以表示从图130中除去所述边缘。在一个实施例中,在确定对应于作业112B的节点不具有进一步的被动依赖关系时,调度器100可以从图130中除去节点。
图4展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图中的依赖关系进行事件驱动的分析以确定作业可运行。如上文关于图3所讨论的,对图130的事件驱动的分析或评估可以更新对应于作业112B的节点以除去所述节点的被动依赖元素,并且还可以更新对应于作业112D和112E的节点以除去这两个节点的主动依赖元素。在一个实施例中,在确定对应于作业112D的节点由于事件195而不具有进一步的主动依赖关系时,调度器100可以认为作业112D可运行并且可以将作业112D添加到执行调度140。类似地,在确定对应于作业112E的节点由于事件195而不具有进一步的主动依赖关系时,调度器100可以认为作业112E可运行并且可以将作业112E添加到执行调度140。例如如(至少部分地)基于作业提交到调度器100的顺序,可以将作业112D和112E插入到调度表140中的现有作业顺序中在任何适当的位置。例如,基于作业112C、112D和112E的相应时间戳,可以将作业112D插入到调度140中在较早提交的作业112C之后,并且可以将作业112E插入到调度140中在较早提交的作业112D之后。在一个实施例中,对应于作业112D和112E的节点可以留在图130中,条件是一个或多个其它节点依赖于所述节点。如上文所讨论的,在进行事件驱动的评估和分析的这一特定过程中,作业112P和112Q的未连接节点可以保持原样。
图5展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图进行事件驱动的分析以添加表示新提交的作业的新节点。如图5的实例所示出的,可以在评估上文所讨论的执行事件195之后将新作业112H提交到作业调度器100。新作业112H的提交可以表示作业提交事件196。对作业提交事件196的自动化评估和分析可以确定新作业依赖于较早提交的作业112G。在一个实施例中,可以自动地(例如,不一定需要用户输入)以及以编程方式(例如,通过执行程序指令)更新对应于作业112G的节点,以关于新作业112H添加被动依赖元素。还可以将对应于新作业112H的节点添加到图130中,并且所述节点可以包含关于作业112G的主动依赖元素。将被动依赖元素添加到节点112G以及将主动依赖元素添加到节点112H可以表示将边缘添加到有向无环图130。在进行事件驱动的评估和分析的这一特定过程中,不相关节点(例如,用于作业112D、112E、112F、112P和112Q)可以保持原样。在一个实施例中,新提交的作业可以指定与当前未在图130中的较早提交的作业的主动依赖关系,例如如果较早提交的作业在执行调度140中并且不具有任何类型的先前依赖的话。在这种情况下,可以将对应于较早提交的作业的节点添加到图130中,以表示与新提交的作业的依赖关系。
图6展示了根据一个实施例的用于使用有向无环图进行事件驱动的调度的实例系统环境的进一步方面,包含对有向无环图进行事件驱动的分析以除去由于取消或故障产生的节点。如图6的实例所示出的,可以在评估上文所讨论的作业提交事件196之后将关于作业112P的取消或故障指示提交到作业调度器100。取消或故障指示可以表示作业取消事件197。取消或故障指示可以基于用户输入(例如,请求取消作业112P)生成或者基于作业112P的执行失败自动生成。响应于事件197,可以从图130中除去对应于作业112P的节点。对事件197的自动和程序化评估和分析还可以确定取消的作业112P与作业112Q有被动依赖关系。在一个实施例中,对应于作业112Q的节点也可以从图130中除去,因为鉴于作业112P的取消或故障,所述节点的主动依赖关系永远无法得到满足。类似地,自动和程序化评估和分析可以除去依赖于作业112Q等的任何节点。以此方式,可以高效地更新图130,以除去依赖于取消或故障的作业的节点的链。在这一特定过程中,图130的其余部分可以保持原样。在一个实施例中,可以(至少部分地)基于策略来执行如作业112Q等依赖性作业的取消。可替代地,策略可以指示,鉴于作业取消事件197,作业112Q(以及任何其它依赖性作业)应当以未决状态(经受评估)留在图中,例如通过将事件197视为较早提交的工作112P完成。这种策略可以全局性地适用于许多客户端,特定于一个客户端或特定于特定工作。
图7是展示根据一个实施例的用于使用有向无环图进行事件驱动的调度的方法的流程图。如710所示出的,可以由作业调度器从客户端接收描述作业的信息(例如,作业定义)。在一个实施例中,可以将未指定作业级依赖的作业定义添加到执行调度以便无延迟地执行。在一个实施例中,在由作业调度器接收时,可以将作业定义中的至少一些作业定义在数据存储装置中备份。例如,可以将指定作业级依赖的作业定义可以存储在数据存储装置中以及在作业调度器处存储在存储器中。
如720所示出的,可以(至少部分地)基于作业信息来生成或更新有向无环图。所述图可以包含表示作业的节点和表示各个作业之间的依赖关系的边缘。依赖关系可以指定要满足的条件,如作业的成功执行、作业的执行失败、作业的完成成功或失败、作业的阈值百分比的成功执行、发起作业的执行等。在一个实施例中,每个依赖关系可以包含与一个或多个节点相关联的至少一个主动依赖元素以及与一个或多个其它节点相关联的至少一个被动依赖元素。
在一个实施例中,只要作业调度器仍可操作,有向无环图就可以响应于新事件而高效地更新,而不是用每个事件进行完全重建。如730所示出的,可以响应于事件来分析和评估图的与所述事件相关的部分。在一个实施例中,可以评估有向无环图中的一个或多个节点以确定所述一个或多个节点(和对应的一个或多个作业)是否可运行。可运行节点和作业可以不具有未满足的“主动依赖”关系并且可以无延迟地执行,例如不必等待其它作业。可以(至少部分地)基于与依赖所涉及的作业相关联的事件来确定依赖的满足。例如,如果特定作业依赖于较早提交的作业的完成并且所述较早提交的作业已经完成执行,则响应于与较早提交的作业相关联的执行事件,通过评估图中特定作业的对应节点,可以认为特定作业可运行。如720所示出的,对图的自动和程序化评估可以确定特定节点现在表示可运行作业。
如740所示出的,可以确定可运行作业的执行调度。执行调度可以使用如队列或链表等有序数据结构实施。执行调度中的作业顺序可以基于提交到作业调度器的时间或任何其它适合的标准。确定可运行作业的执行调度可以包含例如通过将可运行作业插入到列表的末端、列表的开头或列表中的其它作业之间来将作业添加到包含一个或多个其它可运行作业的现有执行调度中。如750所示出的,可以(至少部分地)基于执行调度来发起可运行作业的执行。例如,当可运行作业队列中没有其它作业超过可运行作业时,可以发起可运行作业的执行。执行可以使用提供商网络的一个或多个计算资源(例如,虚拟计算个例)来进行。
图8是展示根据一个实施例的用于使用有向无环图进行事件驱动的调度的方法的流程图,包含对有向无环图进行事件驱动的分析以添加表示新提交的作业的新节点并且添加一个或多个新的依赖关系。如810所示出的,可以在作业调度器处接收与新作业相关联的作业提交事件。新作业可以由客户端使用作业定义来提供。如820所示出的,自动和程序化评估过程可以确定新作业是否如作业定义中指定的对其它作业有任何依赖。如果不具有依赖,则如830所示出的,可以认为新作业可运行并且可以将新作业添加到执行调度。执行调度中的作业顺序可以基于提交到作业调度器的时间或任何其它适合的标准。如果新作业具有一个或多个依赖关系,则如840所示出的,可以自动地且以编程方式分析有向无环图的相关部分。可以(至少部分地)基于作业提交事件来执行分析。作为分析的结果,可以将表示新作业的新节点添加到图中。表示依赖关系的一个或多个边缘也可以添加到图中,例如通过将主动依赖元素添加到新节点中。还可以更新一个或多个较早提交的节点以反映所述一个或多个依赖关系,例如通过将被动依赖元素添加或更新到那些节点中。
图9是展示根据一个实施例的用于使用有向无环图进行事件驱动的调度的方法的流程图,包含对有向无环图中的依赖关系进行事件驱动的分析以确定一个或多个作业可运行。如910所示出的,可以由作业调度器接收执行事件。执行事件可以与已经发起其执行的作业相关联。执行事件可以指定已经满足的执行条件,如作业的成功执行、作业的执行失败、作业的完成成功或失败、作业的阈值百分比的成功执行、发起作业的执行等。如920所示出的,自动和程序化评估过程可以确定与执行事件相关联的作业是否与其它作业有任何依赖关系,例如任何其它作业是否依赖于所执行的作业。如果不具有依赖关系,则过程可以在不对有向无环图进行评估或修改的情况下结束。如果具有依赖关系,则如930所示出的,可以自动地且以编程方式分析有向无环图的相关部分。可以(至少部分地)基于执行事件来进行分析。在930所示出的操作中,可以更新依赖于所执行的作业的一个或多个稍后提交的节点,以反映依赖已经得到满足。还可以对这些受影响的节点进行分析以确定其可运行性,例如受影响的节点是否具有任何未满足的主动依赖关系。如940所示出的,自动和程序化评估过程可以确定任何作业在响应于执行事件而被更新之后现在是否可运行。如果可运行,则如950所示出的,可以以适当的顺序将所述一个或多个可运行作业添加到执行调度。
可以根据以下条款描述本公开的实施例:
1.一种系统,其包括:
提供商网络的多个计算资源;
数据存储装置;以及
一个或多个计算装置,其被配置成实施作业调度器,其中所述作业调度器被配置成:
接收描述多个作业的信息;
生成包括多个节点和多个边缘的有向无环图,其中所述节点表示所述多个作业的至少一部分,其中所述边缘表示所述作业中的各个作业之间的依赖关系,并且其中将描述具有未满足的依赖关系的作业存储在所述数据存储装置中的未决作业队列中;
至少部分地基于一个或多个事件和对所述有向无环图的分析,确定所述节点中的一个节点表示可运行作业,其中已经由所述一个或多个事件满足了所述依赖关系中所述可运行作业的一个或多个依赖关系;以及
将所述可运行作业放置在可运行作业队列中;并且
其中所述计算资源的至少子集被配置成:
发起来自所述可运行作业队列的所述可运行作业的执行。
2.根据条款1所述的系统,其中至少部分地基于与和一个或多个较早提交的作业有一个或多个新的依赖关系的新作业的提交相关联的事件,所述作业调度器被进一步配置成:
向所述有向无环图添加表示所述新作业的新节点;
向所述有向无环图添加表示所述新作业与所述一个或多个较早提交的作业之间的所述一个或多个新的依赖关系的一个或多个新边缘;以及
在所述有向无环图中更新表示所述一个或多个较早提交的作业的一个或多个节点,而不评估不与所述一个或多个新的依赖关系相关联的其它节点。
3.根据条款1所述的系统,其中所述一个或多个事件包括与和一个或多个稍后提交的作业有一个或多个依赖关系的调度作业的执行相关联的事件,并且其中至少部分地基于与所述调度作业的所述执行相关联的事件,所述作业调度器被进一步配置成:
从所述有向无环图中除去表示所述依赖关系中与所述一个或多个稍后提交的作业的至少一种依赖关系的一个或多个边缘;以及
在所述有向无环图中更新表示所述一个或多个稍后提交的作业的一个或多个节点,而不评估不与所述调度作业有依赖关系的其它节点。
4.一种计算机实施的方法,其包括:
生成包括多个节点和多个边缘的有向无环图,其中所述节点表示多个作业,并且其中所述边缘表示所述作业中的各个作业之间的依赖关系;
至少部分地基于一个或多个事件和对所述有向无环图的分析,确定所述节点中的一个节点表示可运行作业,其中由所述一个或多个事件满足所述依赖关系中所述可运行作业的一个或多个依赖关系;
确定所述可运行作业的执行调度;以及
至少部分地基于所述执行调度,使用一个或多个计算资源来发起所述可运行作业的执行。
5.根据条款4所述的方法,其中所述方法进一步包括:至少部分地基于与和一个或多个较早提交的作业有一个或多个新的依赖关系的新作业的提交相关联的事件,
向所述有向无环图添加表示所述新作业的新节点;
向所述有向无环图添加表示所述新作业与所述一个或多个较早提交的作业之间的所述一个或多个新的依赖关系的一个或多个新边缘;以及
在所述有向无环图中更新表示所述一个或多个较早提交的作业的一个或多个节点,而不评估不与所述一个或多个新的依赖关系相关联的其它节点。
6.根据条款4所述的方法,其中所述一个或多个事件包括与和一个或多个稍后提交的作业有一个或多个依赖关系的调度作业的执行相关联的事件,并且其中所述方法进一步包括:至少部分地基于与所述调度作业的所述执行相关联的事件,
从所述有向无环图中除去表示所述依赖关系中与所述一个或多个稍后提交的作业的至少一种依赖关系的一个或多个边缘;以及
在所述有向无环图中更新表示所述一个或多个稍后提交的作业的一个或多个节点,而不评估不与所述调度作业有依赖关系的其它节点。
7.根据条款4所述的方法,其进一步包括:
确定无节点依赖于所述可运行作业;以及
至少部分地基于确定无节点依赖于所述可运行作业,从所述有向无环图中除去表示所述可运行作业的节点。
8.根据条款4所述的方法,其进一步包括:
确定新提交的作业与其它作业无依赖关系;以及
至少部分地基于确定所述新提交的作业与其它作业无依赖关系,将所述新提交的作业放置在可运行作业队列中,而不向所述有向无环图添加表示所述新提交的作业的节点。
9.根据条款4所述的方法,其进一步包括:
至少部分地基于与作业的故障或取消相关联的事件以及策略,从所述有向无环图中除去表示与所述作业有依赖关系或者与一个或多个除去的节点有依赖关系的一个或多个作业的一个或多个节点。
10.根据条款4所述的方法,其进一步包括:
从数据存储装置加载描述具有未满足的依赖关系的多个作业的信息;以及
至少部分地基于描述具有未满足的依赖关系的所述多个作业的所述信息,在调度器故障之后重建所述有向无环图。
11.根据条款4所述的方法,其中所述一个或多个事件包括与作业的阈值百分比的完成相关联的事件。
12.根据条款4所述的方法,其进一步包括:
确定新提交的作业对较早提交的作业有依赖关系;以及
至少部分地基于确定所述新提交的作业对所述较早提交的作业有所述依赖关系,向所述有向无环图添加与所述新提交的作业相对应的节点和与所述较早提交的作业相对应的节点。
13.根据条款4所述的方法,其中确定所述可运行作业的所述执行调度包括:
至少部分地基于作业提交的一个或多个时间戳,将所述可运行作业插入到可运行作业有序列表中,其中在插入所述可运行作业时未采用可运行作业列表。
14.一种计算机可读存储介质,其存储程序指令,所述程序指令在被执行时进行:
生成包括多个节点和多个边缘的有向无环图,其中所述节点表示多个作业,并且其中所述边缘表示所述作业中的各个作业之间的依赖关系;
至少部分地基于一个或多个事件和对所述有向无环图的分析,确定所述节点中的一个节点表示可运行作业,其中由所述一个或多个事件满足所述依赖关系中所述可运行作业的一个或多个依赖关系;
确定所述可运行作业的执行调度,其中所述执行调度包括所述可运行作业和一个或多个另外的可运行作业的执行顺序;以及
至少部分地基于所述执行调度,使用提供商网络的一个或多个计算资源来发起所述可运行作业的执行。
15.根据条款14所述的计算机可读存储介质,其中至少部分地基于与和一个或多个较早提交的作业有一个或多个新的依赖关系的新作业的提交相关联的事件,所述程序指令可被计算机进一步执行以进行:
向所述有向无环图添加表示所述新作业的新节点;
向所述有向无环图添加表示所述新作业与所述一个或多个较早提交的作业之间的所述一个或多个新的依赖关系的一个或多个新边缘;以及
在所述有向无环图中更新表示所述一个或多个较早提交的作业的一个或多个节点,而不评估不与所述一个或多个新的依赖关系相关联的其它节点。
16.根据条款14所述的计算机可读存储介质,其中所述一个或多个事件包括与和一个或多个稍后提交的作业有一个或多个依赖关系的调度作业的执行相关联的事件,并且其中至少部分地基于与所述调度作业的所述执行相关联的事件,所述程序指令可被计算机进一步执行以进行:
从所述有向无环图中除去表示所述依赖关系中与所述一个或多个稍后提交的作业的至少一种依赖关系的一个或多个边缘;以及
在所述有向无环图中更新表示所述一个或多个稍后提交的作业的一个或多个节点,而不评估不与所述调度作业有依赖关系的其它节点。
17.根据条款14所述的计算机可读存储介质,其中所述程序指令可被计算机进一步执行以进行:
确定无节点依赖于所述可运行作业;以及
至少部分地基于确定无节点依赖于所述可运行作业,从所述有向无环图中除去表示所述可运行作业的节点。
18.根据条款14所述的计算机可读存储介质,其中所述程序指令可被计算机进一步执行以进行:
确定新提交的作业与其它作业无依赖关系;以及
至少部分地基于确定所述新提交的作业与其它作业无依赖关系,将所述新提交的作业放置在可运行作业队列中,而不向所述有向无环图添加表示所述新提交的作业的节点。
19.根据条款14所述的计算机可读存储介质,其中所述程序指令可被计算机进一步执行以进行:
至少部分地基于与作业的故障或取消相关联的事件以及策略,从所述有向无环图中除去表示与所述作业有依赖关系或者与一个或多个除去的节点有依赖关系的一个或多个作业的一个或多个节点。
20.根据条款14所述的计算机可读存储介质,其中所述程序指令可被计算机进一步执行以进行:
从数据存储装置加载描述具有未满足的依赖关系的多个作业的信息;以及至少部分地基于描述具有未满足的依赖关系的所述多个作业的所述信息,在调度器故障之后重建所述有向无环图。
说明性计算机系统
在至少一些实施例中,实施本文所描述的技术中的一种或多种技术的部分或全部技术的计算机系统可以包含包括或被配置成访问一个或多个计算机可读介质的计算机系统。图10展示了这种计算装置3000。在所示实施例中,计算装置3000包含经由输入/输出(I/O)接口3030耦合到系统存储器3020的一个或多个处理器3010A-3010N。计算装置3000进一步包含耦合到I/O接口3030的网络接口3040。
在各个实施例中,计算装置3000可以是包含一个处理器的单处理器系统或者包含几个处理器3010A-3010N(例如,两个、四个、八个或另一适合的数量)的多处理器系统。处理器3010A-3010N可以包含能够执行指令的任何适合的处理器。例如,在各个实施例中,处理器3010A-3010N可以是实施各种指令集架构(ISA)中的任何指令集架构的处理器,如x86、PowerPC、SPARC或MIPS ISA或任何其它适合的ISA。在多处理器系统中,处理器3010A-3010N中的每个处理器通常可以但不一定实施相同的ISA。
系统存储器3020可以被配置成存储一个或多个处理器3010A-3010N可访问的程序指令和数据。在各个实施例中,系统存储器3020可以使用任何适合的存储器技术实施,如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存型存储器或任何其它类型的存储器。在所示实施例中,实施一个或多个期望功能的程序指令和数据如上文所描述的那些方法、技术和数据被示出为作为代码(即程序指令)3025和数据3026存储在系统存储器3020内。
在一个实施例中,I/O接口3030可以被配置成协调装置中的处理器3010A-3010N、系统存储器3020和任何外围装置之间的I/O通信,所述外围装置包含网络接口3040或其它外围接口。在一些实施例中,I/O接口3030可以执行任何必要的协议、定时或其它数据转化,以将来自一个组件(例如,系统存储器3020)的数据信号转换为适于供另一个组件(例如,处理器3010A-3010N)使用的格式。例如,在一些实施例中,I/O接口3030可以包含对通过如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体等各种类型的外围总线附接的装置的支持。例如,在一些实施例中,I/O接口3030的功能可以切分为两个或更多个单独的组件,如北桥和南桥。而且,在一些实施例中,如到系统存储器3020的接口等I/O接口3030的功能中的一些或全部功能可以直接并入处理器3010A-3010N中。
网络接口3040可以被配置成允许在计算装置3000与附接到一个或多个网络3050的其它装置3060之间交换数据。例如,在各个实施例中,网络接口3040可以支持经由任何适合的有线或无线一般数据网络进行通信,如以太网类型。另外,网络接口3040可以支持经由以下进行通信:如模拟语音网络或数字光纤通信网络等电信/电话网络、如光纤通道SAN等存储区域网络、或任何其它适合的类型的网络和/或协议。
在一些实施例中,系统存储器3020可以是计算机可读(即,计算机可访问)介质的一个实施例,所述计算机可读介质被配置成存储如上文所描述的用于实施对应的方法和设备的实施例的程序指令和数据。然而,在其它实施例中,程序指令和/或数据可以在不同类型的计算机可读介质上接收、发送或存储。一般而言,计算机可读介质可以包含经由I/O接口3030耦合到计算装置3000的非暂时性存储介质,如磁性或光学介质,例如磁盘或DVD/CD。非暂时性计算机可读存储介质还可以包含可以作为系统存储器3020或另一种类型的存储器包含在计算装置3000的一些实施例中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。进一步地,计算机可读介质可以包含传输介质或如电信号、电磁信号或数字信号等信号,所述传输介质或所述信号经由如网络和/或无线链路等通信介质进行传送,如可以经由网络接口3040实施。可以使用如图10所示的计算装置等多个计算装置中的部分或全部计算装置来实施各个实施例中的所描述功能;例如,在各种不同的装置和服务器上运行的软件组件可以协作以提供功能。在一些实施例中,所描述功能中的部分功能可以使用存储装置、网络装置或各种类型的计算机系统实施。如本文所使用的术语“计算装置”指代至少所有这些类型的装置并且不限于这些类型的装置。
如附图所展示并且本文所描述的各种方法表示方法的实施例的实例。所述方法可以在软件、硬件或其组合中实施。在所述方法中的各种方法中,可以改变步骤的顺序,并且可以添加、重新排序、组合、省略、修改各个元素等。可以自动地(例如,在未通过用户输入直接提示的情况下)和/或以编程方式(例如,根据程序指令)执行所述步骤中的各个步骤。
本文中,在描述本发明时使用的术语仅是出于描述特定实施例的目的并且不旨在限制本发明。如在描述本发明和所附权利要求书时使用的,除非上下文另外明确地指示,否则单数形式“一个/种(a/an)”和“所述(the)”旨在同样包含复数形式。还将理解的是,如本文使用的术语“和/或”指代并且涵盖关联列举项中的一个或多个关联列举项的任何和所有可能的组合。将进一步理解的是,当在本说明书中使用时,术语“包含(include)”、“包含(including)”、“包括(comprise)”和/或“包括(comprising)”指定了所叙述的特征、整体、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或其组的存在或添加。
如本文所使用的,根据上下文,可以将术语“如果”解释为意指“当…时”或“在…时”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,可以将短语“如果确定…”或“如果检测到[所叙述的条件或事件]”解释为意指“在确定…时”或“响应于确定…”或“在检测到[所叙述的条件或事件]时”或“响应于检测到[所叙述的条件或事件]”。
还将理解的是,尽管术语第一、第二等在本文中可以用来描述各个元件,但是这些元件不应受这些术语限制。这些术语仅用于区分一个元件与另一个元件。例如,在不脱离本发明的范围的情况下,可以将第一接触称为第二接触,并且类似地,可以将第二接触称为第一接触。第一接触和第二接触均为接触,但是第一接触和第二接触不是同一接触。
本文阐述了大量具体细节以提供对所要求保护的主题的全面理解。然而,本领域技术人员将理解的是,可以在没有这些具体细节的情况下实践所要求保护的主题。在其它情况下,并未详细地描述普通技术人员所已知的方法、设备或系统,以免模糊所要求保护的主题。如对受益于本公开的本领域技术人员显而易见的,可以作出各种修改和改变。本公开旨在包含所有这种修改和变化,并且因此,以上说明被视为是说明性的而非限制性的。
Claims (15)
1.一种计算机实施的方法,其包括:
生成包括多个节点和多个边缘的有向无环图,其中所述节点表示多个作业,并且其中所述边缘表示所述作业中的各个作业之间的依赖关系;
至少部分地基于一个或多个事件和对所述有向无环图的分析,确定所述节点中的一个节点表示可运行作业,其中由所述一个或多个事件满足所述依赖关系中所述可运行作业的一个或多个依赖关系;
确定所述可运行作业的执行调度;以及
至少部分地基于所述执行调度,使用一个或多个计算资源来发起所述可运行作业的执行。
2.根据权利要求1所述的方法,其中所述方法进一步包括:至少部分地基于与和一个或多个较早提交的作业有一个或多个新的依赖关系的新作业的提交相关联的事件,
向所述有向无环图添加表示所述新作业的新节点;
向所述有向无环图添加表示所述新作业与所述一个或多个较早提交的作业之间的所述一个或多个新的依赖关系的一个或多个新边缘;以及
在所述有向无环图中更新表示所述一个或多个较早提交的作业的一个或多个节点,而不评估不与所述一个或多个新的依赖关系相关联的其它节点。
3.根据权利要求1所述的方法,其中所述一个或多个事件包括与和一个或多个稍后提交的作业有一个或多个依赖关系的调度作业的执行相关联的事件,并且其中所述方法进一步包括:至少部分地基于与所述调度作业的所述执行相关联的事件,
从所述有向无环图中除去表示所述依赖关系中与所述一个或多个稍后提交的作业的至少一种依赖关系的一个或多个边缘;以及
在所述有向无环图中更新表示所述一个或多个稍后提交的作业的一个或多个节点,而不评估不与所述调度作业有依赖关系的其它节点。
4.根据权利要求1所述的方法,其进一步包括:
确定新提交的作业与其它作业无依赖关系;以及
至少部分地基于确定所述新提交的作业与其它作业无依赖关系,将所述新提交的作业放置在可运行作业队列中,而不向所述有向无环图添加表示所述新提交的作业的节点。
5.根据权利要求1所述的方法,其进一步包括:
从数据存储装置加载描述具有未满足的依赖关系的多个作业的信息;以及
至少部分地基于描述具有未满足的依赖关系的所述多个作业的所述信息,在调度器故障之后重建所述有向无环图。
6.根据权利要求1所述的方法,其中所述一个或多个事件包括与作业的阈值百分比的完成相关联的事件。
7.根据权利要求1所述的方法,其进一步包括:
确定新提交的作业对较早提交的作业有依赖关系;以及
至少部分地基于确定所述新提交的作业对所述较早提交的作业有所述依赖关系,向所述有向无环图添加与所述新提交的作业相对应的节点和与所述较早提交的作业相对应的节点。
8.根据权利要求1所述的方法,其中确定所述可运行作业的所述执行调度包括:
至少部分地基于作业提交的一个或多个时间戳,将所述可运行作业插入到可运行作业有序列表中,其中在插入所述可运行作业时未采用可运行作业列表。
9.一种系统,其包括:
处理器,其耦合到存储程序指令的计算机可读存储介质,所述程序指令在被执行时使所述系统:
生成包括多个节点和多个边缘的有向无环图,其中所述节点表示多个作业,并且其中所述边缘表示所述作业中的各个作业之间的依赖关系;
至少部分地基于一个或多个事件和对所述有向无环图的分析,确定所述节点中的一个节点表示可运行作业,其中由所述一个或多个事件满足所述依赖关系中所述可运行作业的一个或多个依赖关系;
确定所述可运行作业的执行调度,其中所述执行调度包括所述可运行作业和一个或多个另外的可运行作业的执行顺序;以及
至少部分地基于所述执行调度,使用提供商网络的一个或多个计算资源来发起所述可运行作业的执行。
10.根据权利要求9所述的系统,其中至少部分地基于与和一个或多个较早提交的作业有一个或多个新的依赖关系的新作业的提交相关联的事件,所述程序指令能够被计算机进一步执行以使所述系统:
向所述有向无环图添加表示所述新作业的新节点;
向所述有向无环图添加表示所述新作业与所述一个或多个较早提交的作业之间的所述一个或多个新的依赖关系的一个或多个新边缘;以及
在所述有向无环图中更新表示所述一个或多个较早提交的作业的一个或多个节点,而不评估不与所述一个或多个新的依赖关系相关联的其它节点。
11.根据权利要求9所述的系统,其中所述一个或多个事件包括与和一个或多个稍后提交的作业有一个或多个依赖关系的调度作业的执行相关联的事件,并且其中至少部分地基于与所述调度作业的所述执行相关联的事件,所述程序指令能够被计算机进一步执行以使所述系统:
从所述有向无环图中除去表示所述依赖关系中与所述一个或多个稍后提交的作业的至少一种依赖关系的一个或多个边缘;以及
在所述有向无环图中更新表示所述一个或多个稍后提交的作业的一个或多个节点,而不评估不与所述调度作业有依赖关系的其它节点。
12.根据权利要求9所述的系统,其中所述程序指令能够被计算机进一步执行以使所述系统:
确定无节点依赖于所述可运行作业;以及
至少部分地基于确定无节点依赖于所述可运行作业,从所述有向无环图中除去表示所述可运行作业的节点。
13.根据权利要求9所述的系统,其中所述程序指令能够被计算机进一步执行以使所述系统:
确定新提交的作业与其它作业无依赖关系;以及
至少部分地基于确定所述新提交的作业与其它作业无依赖关系,将所述新提交的作业放置在可运行作业队列中,而不向所述有向无环图添加表示所述新提交的作业的节点。
14.根据权利要求9所述的系统,其中所述程序指令能够被计算机进一步执行以使所述系统:
至少部分地基于与作业的故障或取消相关联的事件以及策略,从所述有向无环图中除去表示与所述作业有依赖关系或者与一个或多个除去的节点有依赖关系的一个或多个作业的一个或多个节点。
15.根据权利要求9所述的系统,其中所述程序指令能够被计算机进一步执行以使所述系统:
从数据存储装置加载描述具有未满足的依赖关系的多个作业的信息;以及
至少部分地基于描述具有未满足的依赖关系的所述多个作业的所述信息,在调度器故障之后重建所述有向无环图。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/468,036 | 2017-03-23 | ||
US15/468,036 US10713088B2 (en) | 2017-03-23 | 2017-03-23 | Event-driven scheduling using directed acyclic graphs |
PCT/US2018/021910 WO2018175128A1 (en) | 2017-03-23 | 2018-03-12 | Event-driven scheduling using directed acyclic graphs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110402431A true CN110402431A (zh) | 2019-11-01 |
CN110402431B CN110402431B (zh) | 2024-02-06 |
Family
ID=61768529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880017770.3A Active CN110402431B (zh) | 2017-03-23 | 2018-03-12 | 使用有向无环图进行事件驱动的调度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10713088B2 (zh) |
EP (1) | EP3602296A1 (zh) |
CN (1) | CN110402431B (zh) |
WO (1) | WO2018175128A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990059A (zh) * | 2019-11-28 | 2020-04-10 | 中国科学院计算技术研究所 | 一种用于倾斜数据的流式计算引擎运行方法及系统 |
CN111736969A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN112346842A (zh) * | 2020-11-19 | 2021-02-09 | 广州嘉为科技有限公司 | 一种基于有向无环图的工作流任务调度方法 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112988705A (zh) * | 2021-03-08 | 2021-06-18 | 北京靠谱云科技有限公司 | 一种可用于企业级生产的数据中台构建方法 |
CN113239028A (zh) * | 2021-05-10 | 2021-08-10 | 成都新潮传媒集团有限公司 | 一种数据仓库调度的数据修复方法、装置和可读存储介质 |
CN113238533A (zh) * | 2021-05-12 | 2021-08-10 | 广东美房智高机器人有限公司 | 一种移动机器人的作业任务动态调度下发系统及方法 |
WO2022236834A1 (en) * | 2021-05-14 | 2022-11-17 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method and system for scheduling tasks |
CN117149304A (zh) * | 2023-09-01 | 2023-12-01 | 安徽慢音科技有限公司 | 一种插件管理的方法、装置、设备及介质 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11237865B2 (en) * | 2017-05-04 | 2022-02-01 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scheduler and workload manager that identifies and consumes global virtual resources |
US11294726B2 (en) | 2017-05-04 | 2022-04-05 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scalable scheduler with heterogeneous resource allocation of large competing workloads types using QoS |
US10545796B2 (en) | 2017-05-04 | 2020-01-28 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scheduler with preemptive termination of existing workloads to free resources for high priority items |
US10692254B2 (en) * | 2018-03-02 | 2020-06-23 | International Business Machines Corporation | Systems and methods for constructing clinical pathways within a GUI |
US10754706B1 (en) * | 2018-04-16 | 2020-08-25 | Microstrategy Incorporated | Task scheduling for multiprocessor systems |
CN111435352A (zh) * | 2019-01-11 | 2020-07-21 | 北京京东尚科信息技术有限公司 | 一种分布式实时计算方法、装置、系统及其存储介质 |
US20200249998A1 (en) * | 2019-02-01 | 2020-08-06 | Alibaba Group Holding Limited | Scheduling computation graph heterogeneous computer system |
KR20210121266A (ko) * | 2019-02-27 | 2021-10-07 | 마이크론 테크놀로지, 인크. | 다중 사용자 네트워크에서의 산술 및 논리 연산 |
US10990387B2 (en) | 2019-02-27 | 2021-04-27 | Micron Technology, Inc. | Converting floating-point operands into universal number format operands for processing in a multi-user network |
US11074106B2 (en) * | 2019-07-01 | 2021-07-27 | Sap Se | Sorting tasks with dependencies and resource sharing |
CN112214289A (zh) * | 2019-07-11 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 一种任务调度方法、装置及服务器、存储介质 |
US11316951B2 (en) | 2019-09-30 | 2022-04-26 | Citrix Systems, Inc. | Polytree queue for synchronizing data with a shared resource |
US11501231B2 (en) * | 2019-10-17 | 2022-11-15 | Université De Lorraine | Method for process analysis |
LU101480B1 (en) * | 2019-11-18 | 2021-05-18 | Luxembourg Inst Science & Tech List | Data preprocessing for a supervised machine learning process |
US11288091B2 (en) * | 2019-12-03 | 2022-03-29 | Sap Se | Dynamic orchestration in a mircroservice architecture |
CN111324470B (zh) * | 2020-01-20 | 2023-11-07 | 北京百度网讯科技有限公司 | 用于生成信息的方法及装置 |
CN111367644B (zh) * | 2020-03-17 | 2023-03-14 | 中国科学技术大学 | 一种面向异构融合系统的任务调度方法及装置 |
US11740933B2 (en) | 2020-07-01 | 2023-08-29 | International Business Machines Corporation | Heterogeneous system on a chip scheduler with learning agent |
US11704155B2 (en) | 2020-07-01 | 2023-07-18 | International Business Machine Corporation | Heterogeneous system on a chip scheduler |
CN111930487B (zh) * | 2020-08-28 | 2024-05-24 | 北京百度网讯科技有限公司 | 作业流调度方法、装置、电子设备及存储介质 |
US11347569B2 (en) * | 2020-10-07 | 2022-05-31 | Microsoft Technology Licensing, Llc | Event-based framework for distributed applications |
CN113282606A (zh) * | 2021-05-14 | 2021-08-20 | 杭州网易云音乐科技有限公司 | 数据处理方法、装置、存储介质和计算设备 |
CN113742538A (zh) * | 2021-07-16 | 2021-12-03 | 深圳云天励飞技术股份有限公司 | 基于图层级的业务分析方法、装置、电子设备及存储介质 |
CN117610320B (zh) * | 2024-01-23 | 2024-04-02 | 中国人民解放军国防科技大学 | 有向无环图工作流引擎循环调度方法、装置和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130339972A1 (en) * | 2012-06-18 | 2013-12-19 | Zhuoyao Zhang | Determining an allocation of resources to a program having concurrent jobs |
US20150268992A1 (en) * | 2014-03-21 | 2015-09-24 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
CN106020940A (zh) * | 2015-03-31 | 2016-10-12 | 国际商业机器公司 | 用于确定数据集的放置的存储层级的方法和系统 |
CN106462484A (zh) * | 2014-07-01 | 2017-02-22 | 微软技术许可有限责任公司 | 云中的分布式流处理 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6918111B1 (en) * | 2000-10-03 | 2005-07-12 | Sun Microsystems, Inc. | System and method for scheduling instructions to maximize outstanding prefetches and loads |
US7117500B2 (en) | 2001-12-20 | 2006-10-03 | Cadence Design Systems, Inc. | Mechanism for managing execution of interdependent aggregated processes |
US7516458B2 (en) | 2002-07-31 | 2009-04-07 | Sap Aktiengesellschaft | Job management in presence of implicit dependency |
US7810099B2 (en) | 2004-06-17 | 2010-10-05 | International Business Machines Corporation | Optimizing workflow execution against a heterogeneous grid computing topology |
US7356770B1 (en) | 2004-11-08 | 2008-04-08 | Cluster Resources, Inc. | System and method of graphically managing and monitoring a compute environment |
US7958507B2 (en) * | 2005-06-16 | 2011-06-07 | Hewlett-Packard Development Company, L.P. | Job scheduling system and method |
US9026654B2 (en) * | 2006-10-26 | 2015-05-05 | Avaya Inc. | Peer-to-peer overlay graph construction |
JP4757811B2 (ja) | 2007-02-19 | 2011-08-24 | 日本電気株式会社 | ジョブ制御言語により記述されたジョブ制御文からジョブネットワークフローを生成する装置及びその方法 |
US8990820B2 (en) | 2008-12-19 | 2015-03-24 | Microsoft Corporation | Runtime task with inherited dependencies for batch processing |
US8793365B2 (en) | 2009-03-04 | 2014-07-29 | International Business Machines Corporation | Environmental and computing cost reduction with improved reliability in workload assignment to distributed computing nodes |
US8451744B2 (en) * | 2010-08-16 | 2013-05-28 | Cisco Technology, Inc. | Partitioning directed acyclic graph (DAG) topologies |
WO2012027478A1 (en) | 2010-08-24 | 2012-03-01 | Jay Moorthi | Method and apparatus for clearing cloud compute demand |
US8688625B1 (en) | 2010-12-31 | 2014-04-01 | United Services Automobile Association (Usaa) | Extract, transform, and load application complexity management framework |
US20130268941A1 (en) * | 2012-04-09 | 2013-10-10 | Ludmila Cherkasova | Determining an allocation of resources to assign to jobs of a program |
US8954985B2 (en) * | 2012-06-05 | 2015-02-10 | International Business Machines Corporation | Dependency management in task scheduling |
US9235446B2 (en) | 2012-06-22 | 2016-01-12 | Microsoft Technology Licensing, Llc | Parallel computing execution plan optimization |
US20140101673A1 (en) * | 2012-10-05 | 2014-04-10 | Microsoft Corporation | Dynamic dependency evaluation for computing task execution |
US9332083B2 (en) * | 2012-11-21 | 2016-05-03 | International Business Machines Corporation | High performance, distributed, shared, data grid for distributed Java virtual machine runtime artifacts |
US9477523B1 (en) | 2013-06-25 | 2016-10-25 | Amazon Technologies, Inc. | Scheduling data access jobs based on job priority and predicted execution time using historical execution data |
US9195458B2 (en) * | 2013-07-31 | 2015-11-24 | International Business Machines Corporation | System and/or method for computing interprocedural dominators |
US10310903B2 (en) * | 2014-01-17 | 2019-06-04 | Red Hat, Inc. | Resilient scheduling of broker jobs for asynchronous tasks in a multi-tenant platform-as-a-service (PaaS) system |
US20170235605A1 (en) * | 2014-05-06 | 2017-08-17 | NetSuite Inc. | System and method for implementing cloud based asynchronous processors |
-
2017
- 2017-03-23 US US15/468,036 patent/US10713088B2/en active Active
-
2018
- 2018-03-12 CN CN201880017770.3A patent/CN110402431B/zh active Active
- 2018-03-12 WO PCT/US2018/021910 patent/WO2018175128A1/en unknown
- 2018-03-12 EP EP18713535.5A patent/EP3602296A1/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130339972A1 (en) * | 2012-06-18 | 2013-12-19 | Zhuoyao Zhang | Determining an allocation of resources to a program having concurrent jobs |
US20150268992A1 (en) * | 2014-03-21 | 2015-09-24 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
CN106462484A (zh) * | 2014-07-01 | 2017-02-22 | 微软技术许可有限责任公司 | 云中的分布式流处理 |
CN106020940A (zh) * | 2015-03-31 | 2016-10-12 | 国际商业机器公司 | 用于确定数据集的放置的存储层级的方法和系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990059A (zh) * | 2019-11-28 | 2020-04-10 | 中国科学院计算技术研究所 | 一种用于倾斜数据的流式计算引擎运行方法及系统 |
CN110990059B (zh) * | 2019-11-28 | 2021-11-19 | 中国科学院计算技术研究所 | 一种用于倾斜数据的流式计算引擎运行方法及系统 |
CN111736969A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN111736969B (zh) * | 2020-06-16 | 2024-04-16 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112434061B (zh) * | 2020-08-25 | 2024-04-16 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112346842B (zh) * | 2020-11-19 | 2024-03-26 | 广州嘉为科技有限公司 | 一种基于有向无环图的工作流任务调度方法 |
CN112346842A (zh) * | 2020-11-19 | 2021-02-09 | 广州嘉为科技有限公司 | 一种基于有向无环图的工作流任务调度方法 |
CN112988705A (zh) * | 2021-03-08 | 2021-06-18 | 北京靠谱云科技有限公司 | 一种可用于企业级生产的数据中台构建方法 |
CN113239028A (zh) * | 2021-05-10 | 2021-08-10 | 成都新潮传媒集团有限公司 | 一种数据仓库调度的数据修复方法、装置和可读存储介质 |
CN113239028B (zh) * | 2021-05-10 | 2023-03-14 | 成都新潮传媒集团有限公司 | 一种数据仓库调度的数据修复方法、装置和可读存储介质 |
CN113238533A (zh) * | 2021-05-12 | 2021-08-10 | 广东美房智高机器人有限公司 | 一种移动机器人的作业任务动态调度下发系统及方法 |
CN113238533B (zh) * | 2021-05-12 | 2022-05-13 | 广东美房智高机器人有限公司 | 一种移动机器人的作业任务动态调度下发系统及方法 |
WO2022236834A1 (en) * | 2021-05-14 | 2022-11-17 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method and system for scheduling tasks |
CN117149304A (zh) * | 2023-09-01 | 2023-12-01 | 安徽慢音科技有限公司 | 一种插件管理的方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3602296A1 (en) | 2020-02-05 |
US10713088B2 (en) | 2020-07-14 |
US20180276040A1 (en) | 2018-09-27 |
WO2018175128A1 (en) | 2018-09-27 |
CN110402431B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110402431A (zh) | 使用有向无环图进行事件驱动的调度 | |
US10620944B2 (en) | Cloud-based decision management platform | |
US10402227B1 (en) | Task-level optimization with compute environments | |
CN103425529B (zh) | 基于资源利用在网络计算环境间迁移虚拟机的系统及方法 | |
US8615584B2 (en) | Reserving services within a cloud computing environment | |
Lin et al. | Online optimization scheduling for scientific workflows with deadline constraint on hybrid clouds | |
US11281498B1 (en) | Job execution with managed compute environments | |
US10877796B1 (en) | Job execution with scheduled reserved compute instances | |
US20170249283A1 (en) | Event resolution as a dynamic service | |
US8032407B2 (en) | Application of brokering methods to scalability characteristics | |
US10635492B2 (en) | Leveraging shared work to enhance job performance across analytics platforms | |
US20080300948A1 (en) | Application of brokering methods to operational support characteristics | |
Teng | Ressource allocation and schelduling models for cloud computing | |
WO2014117051A1 (en) | Data distribution system, method and program product | |
US11037214B2 (en) | Generation of performance offerings for interactive applications | |
Risch et al. | Using SLA mapping to increase market liquidity | |
US11803420B1 (en) | Execution of replicated tasks using redundant resources | |
Mireslami | Cost and Performance Optimization for Cloud-Based Web Applications Deployment. | |
Manoj Kumar et al. | Optimizing time delay in cloud using enhanced multi‐hold inherited maximization algorithm to reduce cost and improve bandwidth | |
Ruiz et al. | Towards a software product line-based approach to adapt IaaS cloud configurations | |
Li | Hybrid cloud service selection strategy: Model and application of campus | |
Croubois et al. | Communication aware task placement for workflow scheduling on daas-based cloud | |
Dib et al. | SLA‐based PaaS profit optimization | |
US20240070476A1 (en) | Optimal constrained multiway split classification tree | |
Saber | Multi-objective Virtual Machine Reassignment for Large Data Centres |
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 |