CN103092683B - 用于数据分析的基于启发式的调度 - Google Patents

用于数据分析的基于启发式的调度 Download PDF

Info

Publication number
CN103092683B
CN103092683B CN201110347633.6A CN201110347633A CN103092683B CN 103092683 B CN103092683 B CN 103092683B CN 201110347633 A CN201110347633 A CN 201110347633A CN 103092683 B CN103092683 B CN 103092683B
Authority
CN
China
Prior art keywords
task
algorithm
scheduling
current work
dispatching
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.)
Active
Application number
CN201110347633.6A
Other languages
English (en)
Other versions
CN103092683A (zh
Inventor
黎文宪
T.范
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Priority to CN201110347633.6A priority Critical patent/CN103092683B/zh
Priority to US13/353,109 priority patent/US9183058B2/en
Publication of CN103092683A publication Critical patent/CN103092683A/zh
Application granted granted Critical
Publication of CN103092683B publication Critical patent/CN103092683B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computer And Data Communications (AREA)

Abstract

一个调度器可以接收用于调度其在多个计算节点上的运行的多个作业。评价模块可以为多个调度算法的每一个提供公共接口。算法选择器可以将评价模块与用于多个变化类型的作业的基准数据一起利用,以将所述多个调度算法中的一个与每个作业类型关联。作业比较器可以将用于调度的当前作业相对于基准数据进行比较,以确定当前作业的当前作业类型。所述评价模块还可以基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行。

Description

用于数据分析的基于启发式的调度
技术领域
本说明书涉及作业调度。
背景技术
计算资源的用户经常难以以高效的、成本有效的方式来利用这种计算资源。例如,这种用户可能具有随时间变化很大的计算需要,并且可能不希望对在高使用率时段期间管理计算性负载所必需的大量计算资源进行投资。例如,拥有大量雇员的企业可能希望,例如,在每月末仅一次地处理全部雇员的工资单。在这种情形中,企业可能在每月末要求的计算资源的数量与在本月的剩余期间需要的计算资源不成比例。从而,因为在本月的剩余期间这些计算资源的相当大部分将空闲(sit idle),所以企业投资足够的计算资源来办理以上示例的工资单处理将是低效的。在这些及其它情形中,计算资源的用户可能不愿意或不能承受与购买和管理满足所有用户的计算需要所必需的计算资源等级有关的成本。
因此,软件、基础架构及其它计算资源的提供商已经实现了以下商业模式(business model),在该商业模式中根据这种提供商的消费者的特定的和波动的需求,在根据需要、针对需求、动态的基础上向用户提供计算资源。这种提供商被已知为、或可以被称为“软件即服务”(Saas)提供商、和/或“基础架构即服务”(Iaas)提供商。这种提供商典型地投资于向他们的消费者远程地提供计算资源所需的相对大量的服务器和相关的计算机/网络设备。例如,在上面描述的示例中,具有所述的工资单处理需要的企业可能有与Saas提供商建立的协议,以在一个月的大部分之中利用相对低量的计算资源,而在当工资单处理发生的每月末可以访问相对更大量的计算资源。
从而,这种服务提供商可以向大量企业或其他消费者提供软件、基础架构及其它计算资源,并且因此可以以高效的、成本有效的方式来承受利用可用的计算资源的负担。为此,这种服务提供商典型地接收对于计算资源的请求,并且在可用的服务器或其它计算节点当中动态地调度所接收的请求。多数情况下,这种服务提供商可以配置很大量的计算资源,并且可以与相对大量的服务消费者建立服务协议,每个服务消费者都可以要求变化的和可能大量的可用的计算资源。结果,服务提供商可能难以以期望的、高效的和成本有效的方式来分配可用的计算资源。
发明内容
根据一个一般方面,一种计算机系统可以包括记录在计算机可读介质上并可由至少一个处理器运行的指令。所述系统可以包括:调度器,被配置为使得处理器接收用于调度其在多个计算节点上的运行的多个作业;以及评价模块,被配置为使得处理器为多个调度算法的每一个提供公共接口。所述系统还可以包括:算法选择器,被配置为使得处理器将评价模块与用于多个变化类型的作业的基准数据一起利用,以将多个调度算法的一个与每个作业类型关联;以及作业比较器,被配置为使得处理器将用于调度的当前作业相对于基准数据进行比较,以确定当前作业的当前作业类型,所述评价模块还可以被配置为基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行。
根据另一个一般的方面,计算机实施的方法可以包括:接收用于调度其在多个计算节点上的运行的多个作业,以及提供用于多个调度算法中的每一个的公共接口。所述方法可以包括:将公共接口与用于多个变化类型的作业的基准数据一起利用,以将多个调度算法的一个与每个作业类型关联,以及相对于基准数据比较用于调度的当前作业以确定当前作业的当前作业类型。所述方法还可以包括基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行。
根据另一个一般的方面,一种计算机程序产品可以有形地实现在计算机可读介质上并且可以包括执行时被如下配置的指令:接收用于调度其在多个计算节点上的运行的多个作业,以及提供用于多个调度算法中的每一个的公共接口。当所述指令被执行时还可以被配置为:将公共接口与用于多个变化类型的作业的基准数据一起利用,以将多个调度算法的一个与每个作业类型关联;以及相对于基准数据比较用于调度的当前作业以确定当前作业的当前作业类型。当所述指令被执行时还可以被配置为:基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行。
在附图和下面的描述中阐明一个或多个实施方式的细节。其它特征从该描述和附图以及从权利要求中将变得清楚。
附图说明
图1是执行用于数据分析的基于启发式的调度的系统的框图。
图2A是示出图1的系统中的作业分布的框图。
图2B是示出作业任务及其数据源的示例安排的框图。
图3A是示出其中作业的全部任务被分配给单个节点的作业放置的框图。
图3B是示出其中作业的任务被独立地分配到多个节点当中的作业布置的框图。
图4是表示可以连同图1的调度算法一起使用的调度结果的阵列。
图5是示出图1的系统的示例操作的流程图。
图6是示出图1的系统的额外示例操作的更详细的流程图。
图7是示出一旦作业调度已经完成用于节点上的任务调度的技术的一系列图形。
图8是示出相应于图7的示例操作的流程图。
具体实施方式
图1是用于执行用于数据分析的启发式空间调度的系统100的框图。在图1的示例中,将所有者和/或操作员102示出为对计算资源的基础架构104进行管理和维护。在图1的简化示例中,将基础架构104示出为包括多个服务器106A、106B、...106N。在示例中,由基础架构104的所有者/操作员102提供的服务的消费者108提交作业110,该作业110将使用服务器106A、106B、...106N和其它与基础架构104关联的相关计算资源完成。更具体地说,如此处详细描述的,与基础架构104关联的调度器112可以被配置为:接收作业110,并且以实现所有者/操作员102的一个或多个期望的目标的方式各服务器106A、106B、...106N上分配作业110。
在图1的示例中,所有者/操作员102可以表示寻求向消费者108提供计算资源的任何人、企业或其他实体,例如,作为由此获得利润的手段。例如,所有者/操作员102可以表示专营软件的远程提供的企业法人,或者可以表示拥有超额计算能力的企业,该企业随后使用超额计算能力来向消费者108提供计算资源。
如以上提到的,图1的简化示例将基础架构104示出为包括服务器106A、106B、...106N。当然,基础架构104可以包括未在图1的示例中示出的许多额外的或替换的元件,在下面更详细地描述其中一些元件。例如,可以理解地是,服务器106A、106B、...106N可以事实上表示被配置为向消费者108提供远程数据存储和处理的任何计算设备、节点或它们的群。从而,例如,基础架构104可以被理解为包括用于提供在服务器106A、106B、...106N之间和当中、以及在服务器106A、106B、...106N和调度器112之间、以及在基础架构104和通过基础架构104外部的一个或多个网络访问的任何或全部数据之间的通信的多种网络连接。此外,基础架构104可以被理解为包括由服务器106A、106B、...106N利用的一个或多个计算机存储器,或与所述一个或多个计算机存储器通信,所述计算机存储器存储与作业110关联的数据和/或代表消费者108的数据。如本领域技术人员显而易见的,这种存储器可以以一对一的、一对多的、多对一或多对多关系与服务器106A、106B、...106N关联。
消费者108可以事实上表示向基础架构104发送计算作业110的任何人、企业、或其他实体,以结合计算作业110利用基础架构104的计算资源。例如,如以上示例描述的,消费者108可以表示具有变化的处理需要(例如,工资单处理)的企业。在某些示例情形中,消费者108可以表示独立的基础架构(未在图1中示出)的所有者,即,消费者108自身可以是软件即服务和/或基础架构即服务的提供商。在这种示例中,消费者108可能不能满足它自己的消费者的要求等级,并且可能因此利用由所有者/操作员102提供的基础架构104的计算资源以便满足它自己的消费者要求。
作业110可以事实上表示对于计算相关的任务的任何请求,所述请求可以由消费者108(例如,通过可适用的计算机网络)向基础架构104提交。例如,作业110可以包括对于将关于一个或多个数据集合执行的特定计算的一个或多个请求。在其它示例实施中,作业110可以包括对于临时或长期数据存储的请求。
多数情况下,作业110的接收和处理可以由在所有者/操作员102和每一个消费者108之间的服务等级协议(SLA)管理。例如,这种SLA可以相对于从单个消费者108接收的其它作业或作业类型、和/或相对于从其他/不同消费者108接收的其他作业或作业类型,来规定(dictate)每个作业的优先级。多少类似地,这种SLA可以管理基础架构104的计算资源关于每个消费者108的相对可用性。此外,这种SLA可以与基于成本的测量相关联,所述基于成本的测量管理与计算机资源关联的可用性和处理时间。例如,SLA可以规定以增加的成本作为交换该消费者108可以接收更多可用性和/或处理时间。这种SLA的其它示例术语和特征为大家所熟知,并且此处在补充细节中仅描述到必需的或有助理解图1的系统100的特征与功能的程度。
例如,如在下面关于图2A详细描述的,每一个作业110可以包括分别地与特定计算要求关联的多个任务或子任务。从而,如在下面还将详细描述的,由给定作业110要求的数据可以与作业110的接收有关地被收到,可以与作业110的较早任务的完成有关地被收到,或者(如图1的示例中所示以及例如关于图2B在下面更详细地描述的)可以包括网络数据114或其它数据,该数据至少最初在相应的作业110以外、或者从相应的作业110分离出来。
如以上提到的以及下面将更详细地描述的,从而可以将调度器112配置为接收作业110并且在服务器106A、106B、...106N之内和当中分配作业110。在这种情况下,调度器112可以被配置为以下述方式来分配作业110:以满足消费者108和所有者/操作员102之间的各种SLA的方式,否则以部分地或完全地实现所有者/操作员102的一个或多个目标的方式。
例如,所有者/操作员102可能希望配置调度器102以便以最小化作业110的运行时间的方式来分配作业110。在这种情况下,所有者/操作员102可以实现消费者108的高度满意,通常可以假定消费者108期望使他们各自的作业110尽快完成。
另一方面,可能发生的是最小化作业110的运行时间可能与基础架构104的资源的非充分利用相关联。例如,可能存在这种情形:所有者/操作员102可能希望最大化服务器106A、106B,...106N的利用,即使以稍微降低作业110的整体运行时间为代价。例如,只要有关的运行时间在由与消费者108协商的并且由消费者108购买的各个SLA规定的参数之内,这样的结果就可能使所有者/操作员102满意。
因此,可以注意到,存在对调度器112分配作业110的方式进行控制的许多动态变量。当然,存在许多其它这种变量并且为本领域技术人员所知,因此未在此处更详细的描述。例如,这种变量可以包括可用的服务器的当前的数量/改变的数量(例如,诸如当添加了新的服务器和/或当一个或多个服务器经历故障时)。
此外,多数情况下,可能发生地是,服务器的总数“N”以及作业110的总数可能相当大。此外,可以注意到用于在N个服务器当中分配作业110的可能性的数量随更多的作业/服务器的添加而成指数增长。
因此,调度器112的功能可以被理解为:从全部可能或有可能性的分布之中识别任务110的分布,该识别的任务110的分布最好地满足相关的SLA和/或否则实现所有者/操作员102的期望目标。然而,仅仅作为描述,要求由调度器112搜索来识别最好的可能分布的、作业110的可能分布的搜索空间对于调度器112而言可能太大而不能在实际的时间限制内完成识别。
因此,调度器112包括多个算法116,该算法116被设计成能帮助调度器112调查作业110的可能分布的搜索空间,并且由此识别作业110的最佳的、近似最佳的、或可接受的分布。此外,调度器112包括评价模块118,该评价模块118被配置为提供与所有的各个算法116的公共接口、或否则具有与所有的各个算法116通信的能力。也就是说,如在下面更详细描述的,评价模块118可以被配置为:使用算法116中的任何一个算法,并且相对于所有者/操作员102的期望目标,来评价和比较各个有可能性的作业分布。例如,评价模块118可以被配置为:将可能的作业分布彼此进行评价,并且相对期望的最小化整体作业运行时间、期望的基础架构104的资源利用的最大化、或其它度量、或其组合来评价可能的作业分布。
如在下面详细描述的,算法116中的每一个可能特别合适于在特定的、相应的上下文中搜索所识别的期望作业分布。例如,作业110可能具有变化的特征和/或类型,并且算法116中的特定一些算法可以很好合适于对于相应类型或具有相应特征的作业来选择或识别期望的作业分布。
有些类似地,在额外的或替换的示例中,在有外部网络数据114的情况下,取决于外部网络数据114的类型或范围,算法116中的特定一些算法可能在确定期望作业分布方面特别有用。在更进一步示例中,在相对小数量的作业110将分布在相对小数量的服务器当中的情形中,算法116中的特定一些算法可能相对更有用,而算法116中的其它算法可能很好适合于在有大数量作业110将分布在大数量服务器的情况下选择/识别作业分布。尽管如此,因为评价模块118被配置为以快速、高效和实用的方式与算法116中的任何或全部算法协作,所以调度器112可以被配置为从算法116选择和利用可用的算法以便实现作业110的当前分布。
具体地,如所示的,调度器112可以积累基准数据120,该基准数据120包括与作业分布的先前计算关联的汇总数据和其它相关的启发。例如,在一些实施中,与调度器112的正常操作一起,基准数据120可以由调度器112随着时间汇总。在额外的或替换的示例中,基准数据120可以和调度器112的操作一起被汇总,为汇总基准数据120目的而具体地实现所述操作。
因此,基准数据120可以通常被理解为包括,例如,由调度器112执行的先前的作业分布处理以及可能对选择用于执行当前或将来的作业分布的算法116有用的相关数据。例如,基准数据120可以包括与名称、性质、类型或包括在基准作业分布中的相关的作业的其它特征有关的数据。基准数据120还可以包括与根据作为结果的、所选择的作业分布来执行的后续计算操作相关的性能数据。
因此,在特定示例中,作业110的一个或多个集合可以最初用于创建基准数据120。例如,初始作业110可以由调度器112接收并且使用算法116的任何或全部可适用的算法来调度,即,使用评价模块118作为关于作业110的初始集合来实施算法116的公共中间件。随后,算法选择器122可以评价与各个算法116关联的结果作业分布,例如,可以评价每个算法所要求的时间长度以选择结果作业分布,和/或可以评价结果计算时间、利用率(utilization measure)、或与作业的初始集合的完成关联的其它度量。以这种方法,算法选择器122可以选择算法116中的特定一个算法,并且可以将该算法116和相关的作业/性能数据一起存储在基准数据120内。
随后,当作业110的当前或将来的集合被接收时,作业比较器124可以被配置为:相对于基准数据120来分析所接收的作业110,因此算法选择器122可以被配置为:从算法116中选择被确定为最佳适合于进行作业110的当前集合的分布的算法。一旦选择完,可以由评价模块118利用选择的算法116继续进行作业分布的识别和选择,所述作业分布要被用来在服务器106A、106B,...106N的可用服务器之内分配作业110。以这种方法,以最有可能实现所有者/操作员102和/或消费者108的期望目标的方式,调度器112提供用于分布作业110的定制的、最优化的、动态的技术。
最后,关于图1的调度器112,示出任务调度器126,可以将任务调度器126配置为排列一个或多个作业110的单独任务以在服务器106A、106B、...106N中的单独的、所分配的服务器上运行。也就是说,如此处描述的,作业110每个都可以包括多个独立的离散的任务。可以使用,例如,从先前完成的任务接收的数据和/或使用外部网络数据114来处理每个任务。从而,一旦评价模块118的操作被完成并且作业110被分布,接收发奥作业110中的一个作业的每个服务器可以继续运行其任务。
然而,如果在运行特定一个任务时存在延迟,诸如当运行的任务要求当前不可用的外部网络数据114时可能发生的,则在有关的服务器的操作中可能经历整体延迟。从而,任务调度器126可以被配置为重调度由特定服务器实施的单独任务,例如,使得如果当前任务经历诸如刚才描述的延迟以及当当前任务经历诸如刚才描述的延迟时,开始另外的后续任务的运行。具体地,如此处描述的,任务调度器126可以被配置为使用算法126中的任何一个或更多算法来运行这种调度/重调度操作。以这种方法,基础架构104的操作可以被更进一步优化。例如,关于图7和图8在下面详细描述任务调度器126的特定示例操作。
在图1的示例中,将调度器112示出为正在由至少一个计算设备128运行。如所示的,至少一个计算设备128可以包括至少一个处理器128A以及计算机可读存储介质128B。因此,例如,可以理解地是:图1的示例可以期待调度器112的许多不同的实现。例如,虽然在图1中将调度器112示出为在单个计算设备上运行,但是可以理解地是:可以使用可以与彼此通信的不同的计算设备实现调度器112的各个模块和相关联的功能。有些类似地,可以理解地是:可以在具有多个处理内核的单个计算设备上实现调度器112,以使得可以使用并行处理和相关联的技术实现调度器112的操作。
此外,虽然将至少一个计算设备128示出为和服务器106A、106B、...106N分离,但是可以理解地是:可以在一个或多个各种服务器或基础架构104的其它计算节点上、或使用一个或多个各种服务器或基础架构104的其它计算节点来实现调度器112。最后关于图1,虽然将调度器112示出和描述为包括各个独立的离散的部件,但是可以理解地是:可以使用两个或更多子部件来实现所示出的部件116-126中的任何一个的功能。相反地,可以理解地是,可以使用单个部件实现部件116-124的任何两个或更多个功能。因此,可以由本领域技术人员实现图1的系统100的许多可能变化,在下面关于图2A-8更详细地提供其中一些示例。
首先参照图2A,将工作负荷202示出为提供给分布式系统204。如所示,工作负荷202包括作业206、208、210、212。每个作业包括任务,例如,作业206包括任务214、216、218。调度入口220接受输入的作业提交请求,预处理作业206-212并且将它们分派到分布式系统204,即,节点222上。
如从图1的以上说明可以清楚的,图2A的示例中的调度入口220可以表示或包括图1的调度器112。如所示的,入口220接受输入的作业、预处理或编译查询、并且将作业分派到计算节点222上。入口220自身可以是分布式部件,但是为了说明目的,仅描述入口的调度职责,而不在这里详细地描述调度入口220的内部实现的特定细节。
为了不限制此处描述的示例,仅仅作为参考,作业包括多个任务。例如,查询/处理请求可以将其各独立语句下编译给物理操作员,所述语句诸如从日志读出、执行映射化简(map-reduce)运行、以及并且写至输出。假定每个作业的任务相对相同作业的其它任务形成有向无环图(DAG)。
作业中的每个任务可以采取两种输入形式:(1)上游任务的输出和(2)从分布式计算系统外部读入的外部数据对象,诸如从外部SQL数据库读入的数据或从网络或FTP服务器读入的文件。对于(2),数据被本地地高速缓存并且可以由运行在相同的节点上的后续任务重新使用,但是对于初始取出而言遭受网络传输延迟。图2B示出具有形成DAG的任务226、228、230、232的示例作业224,其中任务228、230、232从以前的任务接收数据,并且任务226、228、232从网络234的外部数据对象236、238、240接收数据。该图形中的任务可以被配置为串行运行,但是只要保持DAG配置就可以运行复杂图形。任务输入和输出可以分支;例如,执行联合(join)运算的任务可以采用多个输入,而执行分割的任务可以产生多个输出。
例如,不同的作业可以共享相同的任务;例如,用于执行复杂计算的存储过程可以由不同的作业重新使用。一旦任务被分配给计算节点,该节点就依序地运行任务,其中每个任务被给予该服务器上的最大的用户模式CPU利用率(与任何周期被给予操作系统和中间件部件无关)。
到达入口的任务以FIFO次序排队,并且调度每次执行一个工作负荷。也就是说,以周期间隔,当前在入口队列中的全部作业被调度运行,该方法允许调度器220执行将任务紧密排列(pack)到计算节点222上。在当前工作负荷正在运行时到达的作业将排队以用于调度器的下一周期迭代。
因此,在图2A-2B的示例的上下文中操作的图1的系统可以被配置为不仅考虑作业/任务运行时间,而且考虑从客户端站点到由SaaS/IaaS提供商作为主机的运行平台的数据加载时间。此外,图1的系统100提供用于多个作业/任务的并行运行的资源级调度以便最大化计算平台的吞吐量。更进一步,图1的系统100在作业级别考虑每个作业调度的竞争期限,并且系统100可以被用作系统级的调度工具,以及由IaaS提供商用来最大化它们的计算能力的使用。
如图3A所示,并且如下所述,作业在服务器上的布置影响任务的运行并且,作为结果,影响整体的工作负荷。在图3A的示例实施例和此处描述的相关示例中,如所示的,假设同一作业304、312,328的全部任务306-310、314-324、330-338分别被分配给相同的服务器222a、222b,其中任务实例的配置必须符合有向无环图。针对需求使用高速缓存302、326来高速缓存外部数据对象并且该外部数据对象可以由多个任务重新使用。
在替换示例中,图3B示出替换的运行模型,其中任务314-324、330-338何340-348(而不是作业)是由调度器220分别分配给计算节点222a、222b、222c的工作单元,以使得任务运行继续符合DAG约束。这个运行模式对调度器220提供额外的自由度以权衡(leverage)更多并行性。具体地,例如,因为不加限制地布置任务,所以将存在ST个可能的布置(T个任务在S个服务器上)而不是SJ个可能的布置(J个作业在S个服务器上)。除了作业仅包括一个任务的退化情况以外,如此处定义的,任务的数量T大于作业的数量J。在图3B的示例中,虚线指示在上游生产者和下游消费者之间的跨节点数据通信。同样在图3B中,特定的任务可能属于不同的作业,并且,同样,特定的任务无须与相应作业的其它任务位于相同的节点上。
因此,图3B的运行模型对于调度允许更多灵活性并且对于并行性允许更多机会,但是运行时间编排(orchestration)的成本会更高。在上游生产者和下游消费者之间的依赖性变得更复杂;例如,因为节点是无共享的,所以来自生产者的任何结果都可能需要通过网络传送到驻留在(reside)不同节点上的消费者。在下述实例中此方法可能是优选的:例如,消费者采用多个输入的实例,以及消费者共同位于(co-location)另一被高速缓存的数据对象或另一上游生产者所位于的节点上可能超过跨节点通信的成本的实例。
因此,参照图1-图3B,调度入口220(和/或112)的目标是以这种方式将任务布置到计算节点上:该布置优化一些度量。如此处描述的示例,调度器220被描述为针对两个度量中的任一个或者两个度量进行优化。具体地,第一度量是工作负荷完成时间(通常称作makespan)。调度器220试图总体上最小化工作负荷完成时间,其中完成时间定义为工作负荷中的最后作业完成的时间。第二度量是业务值(business value),基于在用户和基础架构所有者之间的商定的服务等级协议(SLA)将业务值分配给每个任务的完成。
如以上提到的,SLA自身是公知的。为了描述的目的,假设从通用业务值度量方面定义所述协议,该通用业务值度量允许用户以清楚的方式优先处理他们的作业的调度偏好。每一作业度量可以通过相应的常量来书写,例如,(i)wallclock(运行时间)软期限;(ii)wallclock硬期限;(iii)正业务值α(例如,如果任务在期限之前完成);(iv)负业务值β(例如,如果任务在软期限时/之后以及硬期限之前完成);以及(v)负业务值(例如,如果任务在硬期限时/之后完成)。
例如,通过对α设置大的正值并且对γ设置大的负值,用户可以进行定义:应该将高调度偏好给予该作业。例如,依靠图1的系统100的评价模块118和其它特征与函数,示出的调度设计可以被配置为针对工作负荷完成时间或业务值来进行优化。为了一致性起见,本描述通过找到在任一种情况下的最小值来进行优化,尽管从严格意义上来说,业务值度量导致越高数值的业务值越有益,因此在示例中可以将业务值的取非值最小化。
可以使用其它优化度量。例如,可以使用makespan和业务值的加权结果的组合。这种组合可以提供加权的系数,用户或提供商可以改变该加权的系数以适合他们的需要。
用于给节点222分配作业/任务的解决方案空间包含以下情况,例如,其中相同作业的任务可以共同位于在相同的服务器或布置在分离的服务器上。在前一种情况下,数据可以从一个任务直接传送到下一任务,或者直接通过存储器或通过中间文件传送到下一任务。在后一种情况中,数据必须通过网络在任务之间传送,在大多数情况下,这较慢,但是在任务的DAG结构内允许任务并行运行。在给出的描述中,假定第一情况,其中作业的全部任务必须一起布置在相同的服务器上(例如,图3A的示例)。
图3A示出作业布置对任务的运行的影响。因为在图3A的示例中相同作业的全部任务必须被分配给相同的服务器,所以不可能存在挂起(dangling)的任务,该挂起任务等待未能布置到相同的计算节点上的不存在的上游任务。另外,如先前提到的,作为DAG配置的部分运行的、用于给定作业的任务可以在相同的作业或其它作业中重新使用。此外,还如图3A中示出的,可以分配任务以便任务与它们消耗的数据共同定位。
如还描述的,每个任务可以从上游源读数据并且可以下载外部数据对象;在两种情况中,如果任务由多个作业重新使用(或在相同的作业中重新使用但是作为不同的任务实例),则让产生和消耗任务与外部数据对象以及读取它们的任务共同定位是有好处的。
等式1-6表示具有最小化makespan的目标的公式的示例,并且可以被用于检查调度器220的决定如何影响这个值。例如,令Ps是来自服务器组S的服务器s的运行时间。makespan被定义为最长的服务器完成时间,如等式1所示:
等式1
令Ts是分配给服务器s的任务实例t的集合。则每个服务器的运行时间是所有Pt(用于单个任务t的完成时间)的聚合总和(aggregatesum),如等式2所示:
等式2
用于任务的运行时间Pt可以包括几个分量。例如,如果Lt是下载由任务要求的每个外部数据对象的时间,则Ct可以是运行其计算的时间,并且At可以是指示来自上游任务的数据是不可用的步阶指示函数,如等式3所示:
Pt=(Lt+Ct)·At
等式3
例如,可以假定:对于外部数据对象的网络传输延迟Pd占下载该对象的时间的绝大部分。此外,系统高速缓存每个数据对象以使得其它任务可以重新使用它,如此处描述的。
随后,如果Id是这样的布尔指示函数:如果d在高速缓存中则Id是1,否则是0,则获得用于任务的全部外部数据对象的结果时间Lt是在该任务需要的数据对象Dt的集合中的所有数据对象d上的总和,如等式4所示:
等式4
来自上游任务的数据的可用性由指示函数At表示,如等式5所示。如果Ut是由任务t需要的上游任务的集合,并且u是来自这个集合的一个任务,并且如果Iu是这样的布尔指示函数:如果上游任务u在该任务之前被调度则Iu是1否则是0,则如果全部上游任务已经运行则等式4的可用函数At是1否则是0,其中后一种情况的值指示因为任务的上游数据不可用所以该任务等待无限长的时间。在编程术语中,这个值由大值(诸如MAX INT)表示,这将允许调度器容易地挑选用于整体makespan的值更低的(lower-valued)结果。
等式5
则makespan是多个分量的总和,如等式6所示:
等式6
上面描述的makespan公式示出调度器220的决定的影响。例如,为了允许任务消耗来自它需要的上游任务的数据,调度器220将作业布置到相同的处理节点上以使得需要的任务被布置在一起。如果任务被布置到没有需要的上游任务的计算节点上,则该任务将不会完成,这将导致At=1。然而,假设相同的作业的全部任务被分配给相同的服务器的事实意味着At将总是1。此外,因为系统高速缓存外部数据对象,所以使共享相似的需要的数据对象的任务共同定位以使得不招致多于一次的网络传输成本是有好处的。好的调度将产生高数量的共同定位,这将降低获得这些外部对象的时间Lt。在大多数退化情况中,全部任务仅布置到一个服务器上,这最大化共同定位。另一方面,给予调度器220灵活性,以在多个服务器中分布作业(以及它们的任务)以使得作业可以并行运行。通过对分配给给定服务器的集合Ts中的全部任务t的总和取最大值,这个并行性在公式中显现。如果任务被平均地展开,则每个服务器将具有相等数量的任务。
给定此公式,则调度器220的目标是找到最小化makespan的作业布置。然而,如以上提到的,对于J个唯一作业,以及S个唯一服务器节点,调度器的搜索空间是作业数量的指数。假定相同作业的全部任务分配给相同的服务器,则在S个服务器上布置J个作业存在SJ个布置。满足调度的目标的最佳布置在此搜索空间内。然而,即使在S和J的最小的典型情况下,此指数搜索空间对于穷举搜索也变得太大。
图4示出由阵列402表示的可能的候选解决方案。该阵列的长度是作业的数量(假定一个作业的全部任务位于单个服务器上),如行404所示,并且阵列单元i中的值是S个可能的服务器中的向其分配了作业i的任一服务器的唯一标识符,如行406所示。例如,在图4中,第一(最左边的)阵列位置,array[1]=2,指示作业1被分配给服务器2。
如以上参考图1提到的,以及在下面参考图5和图6更详细地描述和示出的,系统100可以使用许多不同的调度算法116。在下面提供许多示例算法;然而,可以理解地是,也可以使用另外的或替换的示例算法。
一个示例算法是穷举搜索(EXH)算法。穷举搜索通过遍历对服务器节点的所有可能作业布置来保证找到最优解决方案。如提到的,当搜索空间成指数大时此方法不能很好地伸缩。
贪心近似启发(GREEDY)近似很快地确定和产生相当好的结果。例如,在工作负荷中的每个作业先依据硬期限然后依据软期限被稳定排序的情况中,贪心启发可以是有用的;然后作为结果的已排序作业可以被依次(round-robin)分配到服务器上。此方法是贪心的,因为在任何给定布置决定中,作业被分配给服务器而不考虑先前的或将来的决定。
完全随机分配(Purely random assignments,RAND)包含重复地评价对于服务器的随机作业分配,并且是此处提供的四个不同的随机搜索启发算法中的第一个。如算法1所示,以以下方式进行RAND:(1)选择一随机作业布置作为初始最好结果并且根据最优化准则对其进行评价。(2)选择另一随机作业布置;如果结果评价值小于来自先前步骤的值,则此作业布置是最新的最优值。(3)将步骤(2)重复固定回合数。RAND运行很快并且探索搜索空间中的大范围的区域,然而它未利用聚类邻域,在搜索空间中,在所述聚类邻域中好的解决方案导致相邻的更佳解决方案。
具有随机重新开始(HC)的最快上升爬山法(在算法2中示出的示例)试图在搜索空间中利用邻域解决方案。像RAND一样,它重复地评价候选解决方案并且将它们与先前的回合中的最佳解决方案进行比较以确定最终的最佳解决方案,但是在每个迭代中,评价候选解决方案的“邻域”一次,将邻域中的最好得分解决方案选择为下一回合中的当前最佳解决方案。通过以确定性方式更换当前最佳解决方案来找到下一邻域。为了找到给定候选解决方案的邻域,通过对每个阵列单元递增和递减一来创建最新邻域。因此,对于长度N的阵列,可以形成2N个邻域。HC被称作“最快上升”是因为挑选最好得分的邻域作为用于下一回合的最佳解决方案。另外或者替代地,可以实施随机的重新开始,其中如果邻域变得均一,则保存结果解决方案并且运行从另一位置开始的HC算法的随机重新开始。随后,在固定数量的这种重新开始之后,选择全部重试中的最佳解决方案。
遗传算法(GA)通过使种群的成员在数代之中重复地彼此竞争来模拟自然选择,其中上一代的最高评价种群成员被选为最佳解决方案。在高级别中,如算法3所示地进行该算法。具体地,选择候选解决方案的初始种群。随后挑出该种群中前N个最好的候选作为用于下一代的父代。使用来自生物学染色体组合的灵感来杂交候选解决方案,以产生子代的新种群,并且将该循环继续固定数量的代。在示例实施中,可以在两个父代解决方案之间使用两点交叉技术以产生子代解决方案。在图4的解决方案阵列中随机地选择两个切割点。来自第一父代的包括在两个切割点之间的阵列单元、以及来自第二父代的切割点外部的阵列单元被给予子代。为了在我们探索的搜索空间中增加解决方案的范围,可以包括突变,其中产生的子代将在其阵列单元中的一个中经历随机数值改变而成为不同的有效值。
模拟退火(SA)是另一随机化的搜索器,其是以类似于RAND的方式通过一系列迭代来探索解决方案空间的算法,如算法4所示。初始候选被选作最佳解决方案,并且随后后续的候选源自该最佳解决方案,以使得此新的候选是局部邻域(local neighbor)。在这一点上,新的候选评价度量可与到目前为止的最佳解决方案相比,优胜者被选作用于下一迭代的最佳解决方案。模拟退火的要点是利用一些概率,即使一候选的评价度量劣于其最接近的竞争者,该候选也可以被选作当前最佳解决方案。在开始时此概率最大,并且通过迭代而降低,最后结果是:该算法早期探索解决方案空间的大部分,但是后来仅集中在明显的优胜者上。模拟退火从冶金热力学过程得到启发,所述冶金热力学过程加热金属以允许原子以高能量运动并且然后令它冷却以允许原子适应低能量配置。
因此,图1的系统100支持上面描述的运行模型并且提供上述讨论到的一套随机搜索算法:即,HC、SA、RAND和GA。在示例实现中,当在大搜索空间(例如,以100个服务器和1000个作业的量级)情况下运行时随机搜索算法HC、SA、RAND和GA最初产生适中的结果。为改善它们的运行,可以为这些算法的每一个准备初始候选解决方案,该初始候选解决方案是贪心算法的结果。
如以上关于图1描述的,评价模块118可以提供评价功能,该评价功能是由全部布置算法116(EXH、GREEDY、RAND、HC、GA和SA)使用的公共部件,其返回用于总体上的工作负荷的度量。如先前提到的,可以使用两个示例工作负荷度量,例如,makespan和聚合业务值。
为计算整体makespan,使用下面的算法5中的伪代码计算每个服务器的完成时间,并且返回最大的完成时间作为工作负荷makespan。类似地,为计算整体业务值,使用下面的算法6中的伪代码计算每个服务器的聚合业务值,并且返回全部服务器中的业务值的总和作为聚合业务值。
以以下方式运行两个函数。每个服务器从调度布置接收任务列表。当假定作业被分配给服务器时,在此列表中提供所有的作业任务。该任务列表最初依据拓扑次序排序(sort)以保留任务之间的DAG关系。对于任务列表中的每个任务,如果任务要求的外部数据对象还未在高速缓存中,则将任务要求的外部数据对象下载到高速缓存中,这招致网络传输延迟。一旦外部数据与来自DAG中的任何上游任务的数据一起可用,当前任务运行并且产生输出,该输出随后可以由(多个)下游消耗任务读取。
图5是示出图1的系统100的示例操作的流程图500。虽然图5的示例将操作502-510作为连续的分离操作示出,但是可以理解地是,操作502-510可以以不同于图5的特定示例中具体示出的方式运行。例如,可以以部分地或完全地重叠或并行方式运行操作502-510中的两个或更多操作。此外,操作502-510可以以嵌套、循环或迭代方式运行。更进一步,可以包括另外的或替换的操作,并且可以除去一个或多个操作。
在图5的示例中,可以接收多个作业以调度它们在多个计算节点(502)上的运行。例如,调度器112(或220)可以被配置为接收要在包括服务器106A、106B、...106N的计算节点当中分布的作业110。
可以为多个调度算法中的每一个提供公共接口(504)。例如,评价模块118可以为算法116中的任何或全部算法提供公共接口。
可以将公共接口和基准数据一起利用以用于多个变化类型的作业,由此将多个调度算法的一个与每个作业类型关联(506)。例如,算法选择器122可以将评价模块和基准数据120一起利用以将至少一个算法与每个确定的作业类型关联。如所述的,基准数据120还可以用于将多个调度算法的每一个与调度器112的操作的其它特征关联,所述特征诸如例如要被分布的作业的数量和/或当前可用的计算节点(例如,服务器)的数量。
用于调度的当前作业可以相对于基准数据进行比较,以确定当前作业的当前作业类型(508)。例如,作业比较器124可以被配置为将当前多个作业110相对于基准数据120进行比较,以便由此确定当前多个作业的一个或多个当前作业类型。
可以基于当前作业类型和关联的调度算法,来调度当前多个作业在多个计算节点上运行(510)。例如,评价模块118可以被配置为:使用从多个调度算法116中选择的算法来调度多个当前作业110在服务器106A、106B、...106N上运行。
图6是示出图1的系统100的更详细示例操作的流程图600。在图6的示例中,可以由调度器112接收/选择多个作业(602)。算法选择器122可以从算法116中选择可适用的算法用于处理所接收/所选择的作业(604)。随后,每一个所选择的算法可以被用来调度并最终运行作业,并且算法选择器122可以标识所选择的算法中的最佳算法(606)。
以这种方法,如此处描述的,可以汇总基准数据,该基准数据表示用于分布的作业和相关数据的特征。在图6的示例中,如果还没有汇总足够量的基准数据(608),则操作602-606可以继续直到汇总了足够的基准数据。例如,在选择用于当前和将来的作业集合的算法时,算法选择器122可以被配置为:确定已经汇总了某一数量或质量的基准数据120,并且该某一数量或质量的基准数据120对于作业比较器124的将来操作是足够的。
因此,当新的作业被接收时(610),算法选择器122可以执行可用算法116的初始过滤以除去被更进一步考虑为不适用于新接收的作业的算法(612)。例如,某一大小的作业集合可能超过与穷举算法的可能使用关联的阈值。
随后,作业比较器124可以被配置为比较(多个)新作业与先前的作业以及在基准数据120内的关联数据(614)。例如,作业比较器124可以被配置为:从(多个)新作业提取特征,或提取与(多个)新作业关联的特征,并且此后基于该特征对(多个)新作业进行分类。例如,除此处提供的其它示例之外,可以用于表示(多个)新作业的示范性特征可以包括,但不限于,(多个)作业的每个任务的数据基数(cardinality)、(多个)新作业的每个任务的扇入(fan-in)和/或扇出(fan-out)度、(多个)新作业的每个任务的操作员名、以及/或者(多个)新作业的任务的拓扑排序。
以这种方法,算法选择器122可以选择算法116中的算法,所选择的算法先前和基准数据120中的最相似作业一起成功地被利用(616)。也就是说,例如,算法选择器122可以实现机器学习分类器算法以标识算法116中最合适的算法。
以这种方法,评价模块118可以使用评价模块118的公共接口继续利用所选择的算法,以由此获得在对新作业进行调度时将使用的实际作业分布(618)。一旦这种调度已经完成,任务调度器126可以被配置为以最小化服务器延迟的方式在每个服务器上进一步排列所分布的作业的任务(620),该服务器延迟与所分布的作业的尝试运行有关。下面关于图7和图8更详细地描述任务调度器126在这点上的示例操作。
更具体地说,如以上提到的,可以理解地是,当评价模块118的操作正在提供作业110的分布时,每个计算节点(例如,每个服务器106A、106B、...106N)包含特定数量的所分配的作业和每个作业的各个任务,其中,每个作业将其任务按照拓扑地排序,以使得:在特定任务准备运行时,已经解决其所有的数据输入依赖性。也就是说,全部需要的数据已经从上游任务和/或从已经被放置到外部数据对象高速缓存里的数据对象被筹备好。虽然此方法固定每个作业的任务的次序,但是该方法也允许来自不同作业的任务以混合次序运行。因此,任务可以依序地运行,或者,在另外的或替换的实施中,可以允许并行性以使得:任务可以在外部数据对象正在被下载到有关的外部数据对象高速缓存中的同时运行。随后,在外部目标正在被下载的时间期间,因为等候对象的任务被阻挡所以在运行中可能存在间隙。如所述的,可以利用任务调度器124来允许其它任务在那时运行,而不是经历此间隙作为整体延迟。具体地,如在下面具体描述的,任务调度器124可以运行它自己的搜索空间算法来找到最佳或近似最佳的次序,该次序将(从全部可容许序列穿透(permeation)的空间中)标识利用以上描述的运行间隙的任务序列。
具体地,任务调度器124可以利用任何合适的一个或多个算法116来找到最佳或近似最佳次序(例如,遗传算法、贪心算法、模拟退火算法和/或爬山算法中的一个或多个)。然而,如从以上描述可以理解地,实现各个算法116以执行遍及离散搜索空间的搜索,然而将任务调度到如上所述的运行间隙里表示:关于连续的不离散的时间跨度来进行调度。因此,在图7-图8的特定示例中,附加的调度器124可以被配置为以离散方式考虑可用的运行时间跨度,这使得能够利用算法116中的期望算法,例如,上面描述的遗传算法。
因此,在图7的示例中,时间线702示出以上描述的问题的本质,即,在包含无限数量的点的开放的连续时间段内调度任务的序列,并且可能未能标识在其上不能放置任务的特定N个时间点。
因此,时间线704示出结束时间点的标识,而时间线706示出将时间线704的时间跨度划分成为特定时间运行单元的连续划分。例如,时间线706可以被理解为每个示出的时间单元表示一分钟。
在时间线706的示例中,可以选择各个时间单元和结尾点来表示全部任务在一起的最紧密地排列,即,表示任务可以在其中运行的最小时间跨度,并且假定每个任务在时间运行单元开始时开始运行。也就是说,在初始迭代中,可以在初始假设上定义时间线706,该初始假设为:与下载外部数据对象关联的延迟有关的运行间隙不是必需的。
因此,任务调度器124可以实施所选择的调度算法以在时间线706的各个时间单元之内和当中调度任务。然而,假定如上所述的运行间隙存在,任务调度器124可能不能定义合适的解决方案。从而,如时间线708的示例中所示,可以选择新的更远的时间结尾点以便放大可用的搜索空间,以及/或者可以使每个运行时隙的固定长度更小,以使得可以再次考虑更有可能的调度。换句话说,通过扩大时间跨度来产生其中外部数据对象的下载可能发生的间隙,可以利用任务来替换间隙以便创建更优化的调度。只要每个下载间隙在要求所下载的数据的相应任务的运行之前到来,则该间隙可能发生在沿时间线708的任何时间。因此,可以利用所选择的搜索算法来探索在时间线708的时间跨度中的这种变化。
随后,如以上关于时间线708描述的,结束时间点可能被不断地扩展,以及/或者运行时间单元可能被变得更小,直到搜索算法返回可接受的解决方案。在这种情况下,然而,虽然有利地利用任一运行间隙,还是可能发生结束时间点被不必要地扩展在最小化任务的整体运行时间所需要的最佳点以外。类似地,可能发生运行时间单元可能变得小于所需。
从而,如关于时间线710所示的,一旦通过任务调度器124使用合适的调度算法找到解决方案,就可以选择新的较早的结束时间点以便使搜索空间更小,以及/或者可以使运行时间单元更大以便降低可以考虑的有可能的调度的数量。
与上面所述类似地,在相反方向上的结束时间点和/或运行时间单元的这种操作可能导致检索算法的不可使用性,由此定义边界并要求在如此界定的搜索空间内的进一步调整,如示例时间线712、714中所示,由此获得最终解决方案。
在特定示例实施中,通过二叉搜索可以找到最佳时间跨度。例如,T可以被理解为表示由任务的最紧密排列引起的时间跨度,例如,相应于时间线706。随后,后续的时间线,例如时间线708,可以被定义为初始时间跨度T的倍数2T、4T、8T...。以这种方法,通过二叉搜索的迭代可以进行直到时间跨度位于可以被调度的间隙中并且任务可以被放置进该间隙内作为正被讨论的节点的可行的任务运行计划的一部分。随后,如上面关于时间线710描述的,一旦找到存在可行的运行调度的候选时间跨度,就可以通过在当前时间跨度和来自先前的迭代的时间跨度之间执行更进一步的二叉搜索来进行对该时间跨度的细化。
图8是示出关于如上所述的图7的示例的任务调度器124的详细的示例实现的流程图800。在图8的示例中,可以分析被调度来在特定的计算节点上运行的作业的任务,以标识有可能的停顿候选(802)。例如,可以分析被调度来在服务器106A上的运行的各个作业的任务,以标识为了进行而要求访问外部数据114的任务,并且因此表示停顿候选,这是因为这种任务可能由于网络数据114的延迟或不能利用而停顿。
如以上关于时间线704描述的,可以选择从第一任务到最后任务的时间长度。随后,用于所定义的时间线的运行时隙可以被更进一步定义(806),如关于时间线706所示。
如上所述,可以通过最初假定时间线706内任务的可能最紧密排列来引导搜索,并且可以运行所选择的调度算法(808)。如果没有达到解决方案(810),则可以提高时间跨度的长度和/或可以降低运行时隙的长度(812),如以上关于时间线708所示。具体地,如在以上提供的示例中,可以执行时间跨度的长度可以被加倍的二叉搜索。
以这种方法,如上所述,与所标识的停顿候选关联的运行间隙可以被包括在可能的调度解决方案内,该可能的调度解决方案由所选择的调度算法在它后续的运行期间考虑(808)。如果包括期望的运行间隙的解决方案仍未达到(810),则可能继续进行提高时间跨度长度和/或降低时隙长度的调整(812),直到调度算法的运行(808)导致达到可行的调度解决方案(810)。再次,在以上提供的特定示例中,可以运行二叉搜索,在二叉搜索中在每个迭代中时间跨度长度被加倍和/或运行时隙长度被平分。
一旦达到解决方案(810),则可以降低时间跨度长度和/或可以提高时隙长度(814)。可以再次运行调度算法(815),以便确定是否可以达到可行的解决方案(816)。
如果即使利用降低的时间跨度长度和/或提高的时隙长度也仍可以达到可行的解决方案(816),则在时间跨度长度方面的继续降低以及/或者在时隙长度方面的增加可以继续(814),直到调度算法的运行(815)确定已经达到不存在可行的解决方案的长度(816)。换句话说,可以继续迭代直到达到边界。
以这种方法,可以建立定义最优解决方案所存在的范围的界限,以使得可以在如此定义的范围内进行任一期望的最终调整(818)。具体地,例如,可以在定义的范围内执行更进一步的二叉搜索以便迅速地缩窄可能的任务调度并且标识最佳或近似最佳任务调度,该最佳或近似最佳任务调度考虑由于要求使用网络数据而引起的运行间隙的存在。
可以以数字电子线路、或者以计算机硬件、固件、软件、或者以它们的组合实现此处描述的各种技术的实施。实施可以被实现为计算机程序产品,即,有形的实现在信息载体(例如机器可读存储设备)中或在传送信号中的计算机程序,用于由数据处理装置运行或控制数据处理设备的操作,数据处理装置例如为可编程处理器,计算机或多个计算机。诸如上面描述的(多种)计算机程序可以以任何形式程序语言来编写,包括编译或解释语言,并且可以以任何形式(包括作为单机程序或作为适用于计算环境中的模块、部件、子程序或其它单元)来配置。计算机程序可以被配置为在一个计算机上运行、或在一个站点处的多个计算机上运行、或在跨多个站点分布并通过通信网络互联的多个计算机上运行。
方法步骤可以由运行计算机程序的一个或多个可编程处理器执行,从而通过操作输入数据并生成输出来执行功能。方法步骤还可以由专用逻辑电路来执行,并且装置可以被实现为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适用于计算机程序的运行的处理器包括通用和专用微处理器、以及任何型号的数字计算机的任何一个或更多的处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的元件可以包括用于执行指令的至少一个处理器、以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还可以包括用于存储数据的一个或多个大容量存储设备,或可操作地耦接到用于存储数据的一个或多个大容量存储设备以从其接收数据或向其传送数据或者从其接收数据并向其传送数据,所述大容量存储设备例如磁盘、磁光盘或光盘。适用于具体实现计算机程序指令和数据的信息载体包括非易失性存储器的全部形式,举例来说,包括半导体存储器设备(例如,EPROM、EEPROM、和闪存设备);磁盘(例如,内部硬盘或可移动盘);磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以通过专用逻辑电路补充或并入专用逻辑电路。
为了提供与用户的交互,可以在具有用于向用户显示信息的显示设备(例如,阴极射线管(CRT)或液晶显示器(LCD)监视器))、以及用户可以通过其向计算机提供输入的键盘和指示设备(例如,鼠标或轨迹球)的计算机上实现实施。也可以使用其他类型设备提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语言或触觉输入。
可以在以下计算系统中实现实施:所述计算系统包括后端组件(例如作为数据服务器),或包括中间件组件(例如应用服务器),或包括前端组件(例如,具有通过其用户可以与实施交互的图形用户界面或网页浏览器的客户端计算机),或这种后端、中间件或前端组件的任何组合。组件可以通过任何形式或媒介的数字数据通信(例如,通信网络)互联。通信网络的示例包括局域网(LAN)和广域网(WAN)(例如因特网)。
虽然已经如此处描述的示出了所描述的实施的特定特征,但是本领域技术人员现在将想到许多修改、替换、改变和等同物。因此,可以理解地是,所附的权利要求意图覆盖在实施例范围内的所有这种修改和改变。

Claims (21)

1.一种计算机系统,包括记录在计算机可读介质上并可由至少一个处理器运行的指令,所述系统包括:
调度器,被配置为使得处理器接收多个作业,以便调度所述多个作业在多个计算节点上的运行;
评价模块,被配置为使得处理器为多个调度算法的每一个提供公共接口;
算法选择器,被配置为使得处理器将评价模块与用于多个变化类型的作业的基准数据一起利用,以将每个作业类型与多个调度算法的一个关联;以及
作业比较器,被配置为使得处理器将用于调度的当前作业相对于基准数据进行比较,以确定当前作业的当前作业类型,
其中,所述评价模块还被配置为基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行,并且
其中,所述系统还包括任务调度器,被配置为在将当前作业调度到所选择的计算节点之后,使得所述至少一个处理器实施所述多个调度算法中的至少一个调度算法,以获得所述当前作业的各个任务在所选择的计算节点上的任务调度,所述任务调度器还被配置为:
将任务标识为停顿候选,该被标识为停顿候选的任务要求网络上的任务数据并且与获得任务数据时的网络延迟所导致的运行间隙相关联,
定义包括离散时间单元的用于任务调度的完成时间线,其中,完成时间线是指从所述各个任务中的第一任务到最后任务的时间长度,
扩展用于调度所述各个任务的搜索空间,包括增加完成时间线的长度或减少离散时间单元的长度中的一者或两者,以及
运行所述多个调度算法中的所述至少一个调度算法,包括使用运行间隙来调度与当前作业并行运行的另外的作业的另外的任务,以便由此获得任务调度。
2.如权利要求1所述的系统,其中所述多个调度算法包括遗传算法。
3.如权利要求1所述的系统,其中所述多个调度算法包括贪心算法。
4.如权利要求1所述的系统,其中所述多个调度算法包括模拟退火算法。
5.如权利要求1所述的系统,其中所述多个调度算法包括爬山算法。
6.如权利要求1所述的系统,其中所述评价模块被配置为:以包括最小化与多个作业的完成有关的完成时间的方式,在多个计算节点上调度多个作业。
7.如权利要求1所述的系统,其中所述评价模块被配置为:以包括最大化多个计算节点的利用的方式,在多个计算节点上调度多个作业。
8.如权利要求1所述的系统,其中,所述算法选择器被配置为:将作业的代表性工作负荷与所述评价模块以及多个算法一起使用,以构造基准数据。
9.如权利要求8所述的系统,其中所述基准数据包括性能数据,性能数据与根据调度所执行的计算操作相关,利用调度算法中的每一个算法以及代表性工作负荷来实施所述调度。
10.如权利要求1所述的系统,其中所述多个作业的每个作业包括多个排序的任务,并且其中所述排序的任务中的至少一些任务从在前面的排序的任务和/或从在排序的任务外部的外部数据源接收数据。
11.如权利要求1所述的系统,其中所述作业比较器被配置为基于当前作业的作业名称来进行比较。
12.如权利要求1所述的系统,其中,所述任务调度器还被配置为确定搜索空间的第一扩展未提供可接受的任务调度,并且之后进一步扩展或减少搜索空间以便由此获得任务调度。
13.如权利要求12所述的系统,其中所述任务调度器还被配置为以迭代方式进一步扩展或减少搜索空间,包括扩展搜索空间直到达到可行的任务调度,然后减少搜索空间直到达到不可行的任务调度,直到获得任务调度。
14.如权利要求12所述的系统,其中所述任务调度器被配置为实施所述至少一个调度算法,包括:实施遗传算法、贪心算法、模拟退火算法和/或爬山算法中的一个或多个。
15.一种计算机实施的方法,包括:
接收多个作业,以便调度所述多个作业在多个计算节点上的运行;
提供用于多个调度算法中的每一个的公共接口;
将公共接口与用于多个变化类型的作业的基准数据一起利用,以将每个作业类型与多个调度算法的一个关联;
相对于基准数据比较用于调度的当前作业,以确定当前作业的当前作业类型;
基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行;以及
在将当前作业调度到所选择的计算节点之后,实施所述多个调度算法中的至少一个调度算法,以获得所述当前作业的各个任务在所选择的计算节点上的任务调度,包括:
将任务标识为停顿候选,该被标识为停顿候选的任务要求网络上的任务数据并且与获得任务数据时的网络延迟所导致的运行间隙相关联,
定义包括离散时间单元的用于任务调度的完成时间线,其中,完成时间线是指从所述各个任务中的第一任务到最后任务的时间长度,
扩展用于调度所述各个任务的搜索空间,包括增加完成时间线的长度或减少离散时间单元的长度中的一者或两者,以及
运行所述多个调度算法中的所述至少一个调度算法,包括使用运行间隙来调度与当前作业并行运行的另外的作业的另外的任务,以便由此获得任务调度。
16.如权利要求15所述的方法,其中所述多个调度算法包括遗传算法、贪心算法、模拟退火算法和/或爬山算法中的三个或三个以上。
17.如权利要求15所述的方法,包括:将作业的代表性工作负荷与公共接口以及多个算法一起使用以构造基准数据。
18.如权利要求17所述的方法,其中所述基准数据包括性能数据,性能数据与根据调度所执行的计算操作相关,利用调度算法中的每一个算法以及代表性工作负荷来实施所述调度。
19.如权利要求15所述的方法,还包括:确定搜索空间的第一扩展未提供可接受的任务调度,并且之后进一步扩展或减少搜索空间以便由此获得任务调度。
20.如权利要求19所述的方法,还包括:以迭代方式进一步扩展或减少搜索空间,包括扩展搜索空间直到达到可行的任务调度,然后减少搜索空间直到达到不可行的任务调度,直到获得任务调度。
21.一种计算机实施的系统,包括:
用于接收多个作业,以便调度所述多个作业在多个计算节点上的运行的装置;
用于提供用于多个调度算法中的每一个的公共接口的装置;
用于将公共接口与用于多个变化类型的作业的基准数据一起利用,以将每个作业类型与多个调度算法的一个关联的装置;
用于相对于基准数据比较用于调度的当前作业,以确定当前作业的当前作业类型的装置;
用于基于当前作业类型和关联的调度算法来调度当前作业在多个计算节点上运行的装置;以及
用于在将当前作业调度到所选择的计算节点之后,实施所述多个调度算法中的至少一个调度算法,以获得所述当前作业的各个任务在所选择的计算节点上的任务调度的装置,包括:
用于将任务标识为停顿候选的装置,该被标识为停顿候选的任务要求网络上的任务数据并且与获得任务数据时的网络延迟所导致的运行间隙相关联,
用于定义包括离散时间单元的用于任务调度的完成时间线的装置,其中,完成时间线是指从所述各个任务中的第一任务到最后任务的时间长度,
用于扩展用于调度所述各个任务的搜索空间,包括增加完成时间线的长度或减少离散时间单元的长度中的一者或两者的装置,以及
用于运行所述多个调度算法中的所述至少一个调度算法,包括使用运行间隙来调度与当前作业并行运行的另外的作业的另外的任务,以便由此获得任务调度的装置。
CN201110347633.6A 2011-11-07 2011-11-07 用于数据分析的基于启发式的调度 Active CN103092683B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110347633.6A CN103092683B (zh) 2011-11-07 2011-11-07 用于数据分析的基于启发式的调度
US13/353,109 US9183058B2 (en) 2011-11-07 2012-01-18 Heuristics-based scheduling for data analytics

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110347633.6A CN103092683B (zh) 2011-11-07 2011-11-07 用于数据分析的基于启发式的调度

Publications (2)

Publication Number Publication Date
CN103092683A CN103092683A (zh) 2013-05-08
CN103092683B true CN103092683B (zh) 2017-12-26

Family

ID=48205293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110347633.6A Active CN103092683B (zh) 2011-11-07 2011-11-07 用于数据分析的基于启发式的调度

Country Status (2)

Country Link
US (1) US9183058B2 (zh)
CN (1) CN103092683B (zh)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244751B2 (en) 2011-05-31 2016-01-26 Hewlett Packard Enterprise Development Lp Estimating a performance parameter of a job having map and reduce tasks after a failure
US8713057B2 (en) * 2011-12-29 2014-04-29 Teradata Us, Inc. Techniques for data assignment from an external distributed file system to a database management system
US8789047B2 (en) * 2012-01-26 2014-07-22 Empire Technology Development Llc Allowing world switches between virtual machines via hypervisor world switch security setting
US20130268941A1 (en) * 2012-04-09 2013-10-10 Ludmila Cherkasova Determining an allocation of resources to assign to jobs of a program
US8775576B2 (en) * 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
US9477529B2 (en) * 2012-06-20 2016-10-25 International Business Machines Corporation Job distributed within a grid environment using mega-host groupings of execution hosts based on resource attributes
US8954529B2 (en) * 2012-09-07 2015-02-10 Microsoft Corporation Smart data staging based on scheduling policy
US9430282B1 (en) * 2012-10-02 2016-08-30 Marvell International, Ltd. Scheduling multiple tasks in distributed computing system to avoid result writing conflicts
US20140189702A1 (en) * 2012-12-28 2014-07-03 General Electric Company System and method for automatic model identification and creation with high scalability
US20140189703A1 (en) * 2012-12-28 2014-07-03 General Electric Company System and method for distributed computing using automated provisoning of heterogeneous computing resources
US9329899B2 (en) 2013-06-24 2016-05-03 Sap Se Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads
US9602423B2 (en) 2013-06-28 2017-03-21 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
CN104346214B (zh) * 2013-07-30 2018-09-04 中国银联股份有限公司 用于分布式环境的异步任务管理装置及方法
CN104461728B (zh) * 2013-09-18 2019-06-14 Sap欧洲公司 迁移事件调度管理的计算机系统、介质和方法
CN104516910B (zh) 2013-09-26 2018-01-12 Sap欧洲公司 在客户端服务器环境中推荐内容
CN104516635B (zh) 2013-09-26 2022-03-08 Sap欧洲公司 一种管理内容显示的方法、系统及存储介质
JP2015095132A (ja) * 2013-11-13 2015-05-18 富士通株式会社 情報処理システム、情報処理システムの制御方法及び管理装置の制御プログラム
US9740529B1 (en) * 2013-12-05 2017-08-22 The Mathworks, Inc. High throughput synchronous resource-constrained scheduling for model-based design
US8978010B1 (en) 2013-12-18 2015-03-10 Sap Ag Pruning compilation dependency graphs
JP6241300B2 (ja) * 2014-02-04 2017-12-06 富士通株式会社 ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
CN103825964B (zh) * 2014-03-19 2017-05-10 北京邮电大学 一种基于云计算PaaS平台的SLS调度装置和方法
US9781054B1 (en) * 2014-07-25 2017-10-03 Google Inc. Quota-based resource scheduling
GB2531586A (en) * 2014-10-23 2016-04-27 Ibm Methods and systems for starting computerized system modules
US9600333B1 (en) 2014-10-29 2017-03-21 Vantiv, Llc System and methods for transaction-based process management
US10410150B2 (en) 2014-11-04 2019-09-10 Sap Se Efficient computerized calculation of resource reallocation scheduling schemes
CN107430824B (zh) * 2015-02-06 2021-05-04 意识教育以色列公司 用于评价响应的半自动系统和方法
US20160275123A1 (en) * 2015-03-18 2016-09-22 Hitachi, Ltd. Pipeline execution of multiple map-reduce jobs
US10970682B1 (en) * 2015-06-04 2021-04-06 Incontact, Inc. System and method for agent scheduling using mixed integer linear programming
US10212255B2 (en) * 2015-09-28 2019-02-19 Microsoft Technology Licensing, Llc Processing requests for multi-versioned service
US11550632B2 (en) * 2015-12-24 2023-01-10 Intel Corporation Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
CN107229517A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 任务调度方法和装置
US10275287B2 (en) 2016-06-07 2019-04-30 Oracle International Corporation Concurrent distributed graph processing system with self-balance
CN106354563B (zh) * 2016-08-29 2020-05-22 广州市香港科大霍英东研究院 用于3d重建的分布式计算系统以及3d重建方法
US10635492B2 (en) 2016-10-17 2020-04-28 International Business Machines Corporation Leveraging shared work to enhance job performance across analytics platforms
US10637964B2 (en) 2016-11-23 2020-04-28 Sap Se Mutual reinforcement of edge devices with dynamic triggering conditions
CN106610616B (zh) * 2016-11-30 2019-12-03 交控科技股份有限公司 一种基于大数据分析的性能自动调优方法及装置
US11158017B2 (en) * 2016-12-28 2021-10-26 Sap Se Warehouse management system
CN106878389B (zh) * 2017-01-04 2020-02-07 北京百度网讯科技有限公司 用于在云系统中进行资源调度的方法和装置
CN107046510B (zh) * 2017-01-13 2020-06-16 广西电网有限责任公司电力科学研究院 一种适用于分布式计算系统的节点及其组成的系统
US10318355B2 (en) 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
CN107122243B (zh) * 2017-04-12 2018-07-24 浙江远算云计算有限公司 用于cfd仿真计算的异构集群系统及计算cfd任务的方法
US10534657B2 (en) 2017-05-30 2020-01-14 Oracle International Corporation Distributed graph processing system that adopts a faster data loading technique that requires low degree of communication
CN109635328A (zh) * 2017-11-08 2019-04-16 成都华微电子科技有限公司 集成电路布局方法以及分布式设计方法
US11107024B2 (en) * 2018-01-15 2021-08-31 Nmetric, Llc Genetic smartjobs scheduling engine
US10841020B2 (en) 2018-01-31 2020-11-17 Sap Se Online self-correction on multiple data streams in sensor networks
US10148525B1 (en) 2018-04-13 2018-12-04 Winshuttle, Llc Methods and systems for mitigating risk in deploying unvetted data handling rules
US10990595B2 (en) 2018-05-18 2021-04-27 Oracle International Corporation Fast distributed graph query engine
US11182800B2 (en) 2019-04-08 2021-11-23 Bank Of America Corporation Controlling enterprise software policy compliance assessment processes based on quantum combinations of assessment elements
CN110109753A (zh) * 2019-04-25 2019-08-09 成都信息工程大学 基于多维度约束遗传算法的资源调度方法及系统
US11422858B2 (en) * 2019-07-10 2022-08-23 Dell Products L.P. Linked workload-processor-resource-schedule/processing-system—operating-parameter workload performance system
CN113037800B (zh) * 2019-12-09 2024-03-05 华为云计算技术有限公司 作业调度方法以及作业调度装置
EP4057142A4 (en) * 2019-12-09 2022-12-21 Huawei Cloud Computing Technologies Co., Ltd. TASK SCHEDULING METHOD AND TASK SCHEDULING APPARATUS
CN111552553B (zh) * 2020-04-29 2023-03-10 电子科技大学 一种基于模拟退火的多任务快速调度方法
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
CN112231314A (zh) * 2020-11-05 2021-01-15 深圳市丽湖软件有限公司 一种基于etl的质量数据评估方法
CN112162846B (zh) * 2020-11-27 2021-04-09 腾讯科技(深圳)有限公司 事务处理方法、设备及计算机可读存储介质
US11693697B2 (en) * 2020-12-06 2023-07-04 International Business Machines Corporation Optimizing placements of workloads on multiple platforms as a service based on costs and service levels
US11704156B2 (en) 2020-12-06 2023-07-18 International Business Machines Corporation Determining optimal placements of workloads on multiple platforms as a service in response to a triggering event
CN113220437B (zh) * 2021-06-01 2022-11-01 西北工业大学 一种工作流多目标调度方法及装置
CN116820058B (zh) * 2023-08-30 2024-01-19 武汉理工大学 考虑agv约束的液压缸工艺规划与调度集成优化方法
CN117785488B (zh) * 2024-02-27 2024-04-26 矩阵起源(深圳)信息科技有限公司 查询调度方法、装置、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1845075A (zh) * 2006-05-11 2006-10-11 上海交通大学 面向服务的网格高性能计算作业调度方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889989A (en) * 1996-09-16 1999-03-30 The Research Foundation Of State University Of New York Load sharing controller for optimizing monetary cost
US6098091A (en) * 1996-12-30 2000-08-01 Intel Corporation Method and system including a central computer that assigns tasks to idle workstations using availability schedules and computational capabilities
US8612980B2 (en) * 2003-12-04 2013-12-17 The Mathworks, Inc. Distribution of job in a portable format in distributed computing environments
US7197577B2 (en) * 2003-12-12 2007-03-27 International Business Machines Corporation Autonomic input/output scheduler selector
US20060173723A1 (en) * 2005-01-28 2006-08-03 Raytheon Company Scheduler
US20080049254A1 (en) * 2006-08-24 2008-02-28 Thomas Phan Method and means for co-scheduling job assignments and data replication in wide-area distributed systems
US8893130B2 (en) * 2007-03-26 2014-11-18 Raytheon Company Task scheduling method and system
US8869165B2 (en) * 2008-03-20 2014-10-21 International Business Machines Corporation Integrating flow orchestration and scheduling of jobs and data activities for a batch of workflows over multiple domains subject to constraints
US8458710B2 (en) * 2009-09-03 2013-06-04 Hewlett-Packard Development Company, L. P. Scheduling jobs for execution on a computer system
US8478878B2 (en) * 2010-03-11 2013-07-02 International Business Machines Corporation Placement of virtual machines based on server cost and network cost

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1845075A (zh) * 2006-05-11 2006-10-11 上海交通大学 面向服务的网格高性能计算作业调度方法

Also Published As

Publication number Publication date
CN103092683A (zh) 2013-05-08
US9183058B2 (en) 2015-11-10
US20130117752A1 (en) 2013-05-09

Similar Documents

Publication Publication Date Title
CN103092683B (zh) 用于数据分析的基于启发式的调度
Ghobaei-Arani et al. A cost-efficient IoT service placement approach using whale optimization algorithm in fog computing environment
Alipourfard et al. {CherryPick}: Adaptively unearthing the best cloud configurations for big data analytics
Fan et al. Research on Web service selection based on cooperative evolution
US20170185943A1 (en) Data analysis for predictive scheduling optimization for product production
Tong et al. A novel task scheduling scheme in a cloud computing environment using hybrid biogeography-based optimization
Konjaang et al. Meta-heuristic approaches for effective scheduling in infrastructure as a service cloud: A systematic review
Chan et al. A hybrid Tabu sample-sort simulated annealing approach for solving distributed scheduling problem
da Silva et al. A survey of evolutionary computation for web service composition: A technical perspective
Rawat et al. Optimize task allocation in cloud environment based on big-bang big-crunch
Chen et al. Cloud computing value chains: Research from the operations management perspective
Srikanth et al. Effectiveness review of the machine learning algorithms for scheduling in cloud environment
Nematpour et al. Enhanced genetic algorithm with some heuristic principles for task graph scheduling
Ghazali et al. CLQLMRS: improving cache locality in MapReduce job scheduling using Q-learning
Li et al. Energy-aware scheduling for spark job based on deep reinforcement learning in cloud
Li et al. gbuilder: A scalable knowledge graph construction system for unstructured corpus
Bengre et al. A learning-based scheduler for high volume processing in data warehouse using graph neural networks
Popa et al. Adapting MCP and HLFET algorithms to multiple simultaneous scheduling
Singh Genetic-variable neighborhood search with thread replication for mobile cloud computing
Karthikeyan et al. Novel power reduction framework for enhancing cloud computing by integrated GSNN scheduling method
Islam Cost-efficient Management of Cloud Resources for Big Data Applications
Lu et al. RLPTO: A reinforcement learning-based performance-time optimized task and resource scheduling mechanism for distributed machine learning
Sinha et al. Designing a human-machine hybrid computing system for unstructured data analytics
Liang et al. Accelerating parallel ALS for collaborative filtering on hadoop
Ebufegha et al. A hybrid algorithm for task sequencing problems with iteration in product development

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: German Waldo

Applicant after: SAP AG

Address before: German Waldo

Applicant before: SAP AG

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG

GR01 Patent grant