使用动态确定的前端作业群调度计算机作业的方法和系统的制作方法

文档序号:6563330阅读:139来源:国知局
专利名称:使用动态确定的前端作业群调度计算机作业的方法和系统的制作方法
技术领域
本发明广泛涉及数据处理技术,更特别地,涉及使用动态确定的前端作业群调度计算机作业的回填调度设施,该前端作业群包含等待执行的计算机作业队列的多个计算机作业。
背景技术
调度技术用于在计算环境中调度计算机作业,使得环境资源得到有效利用。一种类型的调度技术是回填调度技术,只要计算机作业不影响已被调度为执行的计算机作业的开始,该回填调度技术允许计算机作业打乱顺序运行。特别地,回填调度技术确定什么时候一组自由计算节点将在未来的时间可用并调度在该时间执行的一个或更多个作业。
经过多年的发展,回填调度技术已变得更加有效。但是,仍希望进一步的改进。例如,存在对当回填调度时动态确定被考虑的包含在前端作业群中的多个计算机作业的回填调度设施的需要。

发明内容
在一个方面中,通过调度包含多个计算节点的计算环境的计算机作业的方法,提供现有技术的缺点以及附加的优点。该方法包括调度作业队列的N个连续的计算机作业,直到实现前端作业群,其中,N≥2,并且,通过监视N个调度的计算机作业对多个计算节点的回填窗口覆盖,并在(i)多个计算节点的所有计算节点被前端作业群中的N个计算机作业的至少一个计算机作业的至少一个回填窗口覆盖、或(ii)多个计算节点的至少一个计算节点的回填结束时间大于或等于包含N个调度的计算机作业的一组作业类的作业类的最大壁钟极限时自动关闭前端作业群中的成员资格,动态确定前端作业群中的计算机作业的数量N;和响应前端作业群的确定,对前端作业群的N个计算机作业回填调度作业队列的至少一个计算机作业以由多个计算节点执行。
在另一方面中,前端作业群中的计算机作业的数量N小于等待由多个计算节点执行的作业队列中的计算机作业的数量,以及,N个计算机作业在作业队列中是N个前端或最高的优先权的计算机作业。并且,作业队列中的各个计算机作业具有相关的计算节点要求和指示运行计算机作业需要的时间量的壁钟时间,以及,调度包含在确定是否关闭前端作业群中的成员资格时使用计算节点要求和N个计算机作业的壁钟时间。并且,调度包含将开始时间分配给前端作业群中的N个计算机作业的各个计算机作业。
在另一方面中,动态确定还包含最初按最早的自由时间将多个计算节点的计算节点分类,并且,对于被考虑包含在前端作业群中的各个计算机作业,确定至少一个计算节点的自由时间是否大于或等于对被考虑包含在内的计算机作业的壁钟时间,如果是,则在用于执行计算机作业的潜在节点列表上保存该至少一个计算机节点,并且,对于潜在节点列表的各个节点,将回填结束时间设置为等于一旦在计算机节点上运行的计算机作业的预计结束时间,并将返回码设置为等于计算机作业的作业ID。在一个实施例中,关闭前端作业群中的成员资格包含确定多个计算节点的所有计算节点具有大于零的回填开始时间,由此指示前端作业群中的成员资格的关闭。
当潜在节点列表中的计算机节点的数量不足以执行计算机作业时,该方法还包括按最早回填结束时间将多个计算机节点分类,并通过最早回填结束时间将计算机节点推到潜在节点栈上,直到足够数量的计算机节点被累积以执行计算机作业;和确定多个计算机节点的至少一个附加的计算机节点是否具有与潜在节点栈上的最后一个计算机节点的回填结束时间相同的回填结束时间,如果是,则将具有相同回填结束时间的该至少一个附加的计算机节点添加到潜在节点栈中,并以与栈上的位置相反的次序从潜在节点栈去除计算机节点,去除的节点被指定执行计算机作业。
这里还说明了与上面概述的方法对应的系统和计算机程序产品并要求它们的权利。
并且,其它特征和优点通过本发明的技术得到实现。在这里详细说明了本发明的其它实施例和方面,并将它们视为要求权利的发明的一部分。


被认作本发明的主题在说明书结束时在权利要求书中被特别指出并被清楚地要求。通过结合附图阅读以下详细说明,本发明的上述和其它目的、特征和优点将变得十分明显,在这些附图中,图1示出包含和使用本发明的一个或更多个方面的计算环境的一个实施例;图2示出使用常规的回填调度算法的作业回填调度的一个例子;图3示出根据本发明的一个方面的使用前端作业群(或“狗群(dogparty)”)回填方法的回填调度的例子;图4示出根据本发明的一个方面的用于前端作业群回填算法的数据结构;图5是根据本发明的一个方面的用于为作业队列上的计算机作业调用调度作业子例程直到关闭前端作业群调度算法中的前端作业群的一个实施例的流程图;图6A~6D是根据本发明的一个方面的用于调度前端作业群调度算法的前端作业群中的作业队列的计算机作业的调度作业程序的一个实施例的流程图。
具体实施例方式
首先参照图1说明包含并使用本发明的一个或更多个方面的计算环境的一个实施例。在一个例子中,计算环境100是包括例如源计算单元102和一个或更多个目标计算单元104的网格计算环境。计算单元(102和/或104)包含一个或更多个能够处理作业或应用的节点。在具有多个计算节点的计算单元中,节点通过例如LAN或其它类型的连接相互耦合。节点为例如,LILUX工作站;由InternationalBusiness Machines Corporation of Armonk,New York提供的诸如pSeris 690的p系列机器;或通用并行机。也可以使用各种其它类型的节点,因此,这里所说明的仅是例子。计算单元可包含同类或异类节点,类似地,每个单元可以相同或相互不同。计算单元经由例如诸如GigaBit Ethernet或IBM High Performance Switch(HPS)的高速链接106相互耦合。也可以使用其它类型的链接、开关或其它连接。
为了有效利用计算环境的资源,使用调度技术以调度该环境的计算机作业的执行。一种类型的调度技术是确定什么时候资源将在稍后的时间由等待的作业可用的回填调度算法。在“TheEASY-LoadLeveler API Projeet”,Job Scheduling Strategies forParallel Processing,Dror G.Feitelson和Larry Rudolph编辑,笫41~47页,Springer-Verlag,1996,Lecture Notes on Computer Science,第1162卷中说明了回填调度技术的一个例子,在此引入其全部内容作为参考。
回填调度算法的全解(total solution)是NP完全性(NP complete)(参见E.Lawler,Combinatorial Optimization Networks andMatroids,Saunders College Publishing,Fort Worth,Texas(1976))。这意味着仅通过使用非多项式时间算法就可解出最佳调度解决方案(即,对于所有运行的作业的最小总延迟解决方案)。随着作业调度的复杂性增加,解决方案呈指数增长。一种对于这种情况的试探法是仅考虑回填调度中的前端作业(top job)。该前端作业在InternationalBusiness Machines的LoadLevelerTM符号表示法中称为“前端狗(topdog)”。但这存在问题。作业队列中的第二个(和第三个到第N个)等待的作业会由于回填操作被延迟。另外,虽然回填保证开始时间不大于原始计算,但采用简单算法时,未来的作业不被分配开始时间。这使得难以向用户或管理员报告队列中的任何作业的开始时间,或用户或管理员难以预计队列中的任何作业的开始时间。
这里提出的是用于在使用回填调度器时选择考虑的多个前端作业的新技术。不是使用单一“前端狗”作业以建立队列中后部的空闲作业的回填参数,而在回填算法中考虑作业的“狗群”(这里也称为“前端作业群”)。狗群解决方案防止队列中靠后的任何空闲作业的作业开始延迟并有效解决自由节点的问题。并且,这里给出的是动态确定前端狗群中包含的作业的终止点,而不需要管理员选择性估计该作业组的极限(现有解决方案是这样)。给出用于实现该设施的数据结构,它允许未来作业调度的直接可视化。说明该技术的多个优点,包括仅需对存在的调度算法进行很小的修改就能提供优越的性能、有效的CPU利用以提供额外功能、当实现这些概念时容易管理、以及对于未来作业队列的图解能力。
由Dror和Feitelstein(参见C.Lee,“Parallel Job SchedulingAlgorithms and Interfaces”,Department of Computer Science andEngineering,University of California,San Diego(2004年5月13日))说明的保守回填提供对问题的一定程度的解决。但是,可调部分(thetunable)仅提供粗调。保留深度(reservation depth)可被设为离散值或较大的值,使得队列中的所有作业都得到考虑。由于离散设置值取决于作业队列,该作业队列根据当前提交作业的用户的设置数量随机变化,因此调度器管理员可能不知道离散设置值应是什么。将值设置为LARGE考虑整个队列,因此形成队列中的所有作业的调度表(schedule)导致较大的调度器运行时间,即,接近算法的NP完全性极限的时间。因此,这种方法的粗略终止控制实质上是不能使用的参数。
这里给出的解决方案考虑不止考虑回填算法中的第一等待作业(即,前端狗)。它为多个前端等待作业(即,狗群或前端作业群)计算未来作业时间表。差别在于,前端作业群算法为包含于回填计算中的附加计算作业的计算提供精确的终止控制。这种改进的算法的动态确定的停止点与等待作业队列的性质无关。有利的是,这里给出的前端作业群回填方法防止回填作业延迟第二到第N个等待作业的开始,使得过多的计算时间被避免并且管理员设置维持在最小。
在继续说明前,定义这里使用的以下术语。
回填窗(BFW)回填调度器计算的空闲作业将在未来运行的时间。对该时间量用于作业的资源可用以运行可在BFW时间内结束的任何其它空闲作业。BFW与作业ID有关,例如,BFW1表示为等待作业1计算的回填窗。
壁钟时间(WCT)由用户提供的对于提交到作业调度器的作业的时间估计。WCT也与作业ID有关,这里WCT1是作业1的壁钟时间。
运行作业调度器已在自由系统资源即自由计算节点上起动的作业。
空闲作业等待运行的作业队列上的计算机作业。
前端狗(或前端作业)被回填算法考虑的作业队列中的第一或前端等待作业。
对狗群算法的推动(thrust)来自“自由节点”问题。经典回填试探法(例如,LoadLevelerTMParallel Back Scheduler(可在商业上从International Business Machines Corporation得到)和Maui ExternalScheduler(由Maui High Performance Computing Center of Maui,Hawaii支持))可分成三个部分●首先,只要存在自由资源,空闲作业就从等待作业队列的前端开始被起动。
●第二,一旦空闲作业由于缺少自由资源不能被起动,就为该作业计算BFW,并且,一旦BFW期满,就将针对该等待作业的资源计划为可用。
●第三,等待作业队列的剩余部分被扫描,以确定作业是否可适用于BFW保护的资源。该最终步骤是以这样的方式将较小的作业回填到自由资源上,即前端狗作业的开始时间不被延迟。
该算法对于大多数作业队列情况工作良好。但是,存在队列中后部的空闲作业受回填决定影响的情况。注意,在回填算法的第二步中,为等待作业保留的资源被保护。但是,机器上的任何其它资源不被保护。队列中靠后的作业可能可在未保护的节点上起动并延迟第二等待作业的开始时间。图2表示该问题的例子。简单的4节点并行机或计算环境被示出。所有的4个节点最初都为空闲。三个作业处于空闲作业队列上。如表1所示,每个节点包含资源需求(节点的数量)和壁钟估计。
表1

在该例子中,作业1在节点1和2上运行,并将在这些节点上运行WCT1或2小时。作业2需要3个节点,因此它不能立即起动。算法确定它将运行2小时(BFW2=2小时)并将使用节点1、2和3。节点1和2已处于忙中,但该计算意味着节点3可运行队列中的可在2小时内结束的作业。然后,调度器试图回填自由资源,即节点3和4。作业3由于需要4个节点而被跳过。作业4在节点4上被调度。节点4不被BFW2保护,因此作业4是自由的可以运行。注意,在节点4上运行作业4将不影响作业2的开始时间。初始回填算法要求被保持。作业5被回填到节点3上。节点3被BFW2保护,但作业5将在2小时内运行,因此它将不影响作业2的开始。最后,作业6将在作业3结束后运行。
问题是,通过将作业4放在节点4上,作业4的6小时的运行时间将延迟作业3的开始时间。注意,在图中,作业3现在在可以运行之前必须等待作业4结束。该“自由节点”问题仅在单个前端狗作业被考虑时出现。
避免该问题的一种可能是对队列上的所有等待作业彻底计算未来作业开始时间表。对于图2的较短的例子来说,这不是坏主意,但当作业队列接近几千个作业时,绘制每一个作业需要的计算时间变得极大。
为了简化计算负荷,需要为较早地动态终止BFW计算建立规则。如注明的那样,可以使用整数以选通计算。但是,依赖于这种限制的选择和当前的作业队列,不能保证该限制将防止图2中示出的问题。
这里提出的新型设施提出,一旦各节点资源已被来自任何作业的任意回填窗覆盖(被覆盖的回填窗)就结束BFW计算。这将多个附加方面引入现有的回填算法1)需要用于计算“重叠”BFW时间的方法。
2)扩展当前的前端狗算法以计算不是一个而是多个候选前端狗的未来开始时间(或者,计算整个狗群)。
3)开发一种机构以监视节点的BFW覆盖情况并在所有的节点都被覆盖时切换到回填作业调度(即,前端狗群中的成员资格被关闭(closed))。
4)考虑各节点的可变BFW深度。
本公开给出实现这些新特征中的每一种的方法。首先,考虑重叠的BFW时间。使用图2的作业队列作为例子,可以形成重叠的BFW规则。图3中示出以下步骤。
1)对于运行的作业J1,WCT1最初为2小时。随着时间的推移WCT1=(JobStartTime+2小时)-TimeNoW这意味着,随着时间的推移,为运行的作业J1保留的时间将减少。
2)对于运行的作业J1,BFW1=0。由于正在运行的作业不需要等待任何时间来运行(它已经在运行),因此任何运行的作业的BFW就是零。
3)对于等待的作业J2,BFW2=BFW1+WCT1=0+2=2小时(最初)。注意,随着WCT1减小,该公式将减小BFW2。
4)由于按队列次序考虑作业,因此下面是J3。注意,队列次序是任意的并可取决于任何位置确定的作业排列。对于这一点,假定按最早的提交为第一来排列作业。由于J3需要所有的节点,因此,它必须基于节点组中的具有最大BFW的节点计算其回填窗。在该计算中任何被作业2保护的节点都是等同的,这意味着规则BFW3=BFW2+WCT2,或者,BFW3=WCT1+WCT2。注意,通过归纳,用于确定BFW(N+1)的该方法现在对队列中的所有作业适用。
在这一点上,所有节点都被BFW极限覆盖,因此算法可以切换到回填调度。该“被覆盖回填”,其中每个节点被未来作业的至少一个BFW保护,标记算法的该部分的终止点。由于每一个的开始时间已被计算到未来调度时间,因此这种情况下的狗群包含作业1、作业2和作业3。
关于狗群中的作业的节点选择,本公开中的回填算法首先累积自由节点。但是,如果必须等待单个回填保护的节点,那么将首先考虑与该并行作业有关的所有节点,这是因为它们将同时变为自由。由于作业必须等待一个节点,因此等待所有被保护的节点是有意义的,由此为其它作业释放未被保护、或较少保护的节点。另外,节点的选择只基于空闲或忙状态。很显然,这可被扩展以包含与功能匹配的附加资源而不损失新算法的共性。
如上所述,一种用于动态确定前端作业群的方法涉及所有节点的被覆盖回填覆盖。通过使用该技术,一旦各节点具有与其相关的回填时间,前端作业群中的成员资格(membership)就被关闭。作为替代性实现,可以使用与作业有关的作业类(job class)。作业类一般包含确定(definition)对类中的作业允许的最大壁钟极限。这是作业被允许在系统中执行多长的极限。如果存在多个作业类,那么将在作业队列上的所有作业类的组中存在最大壁钟极限。通过使用该最大壁钟极限,可以对前端作业群的形成限定可选择的终止点。想到前端狗群被形成正是以保护自由节点用于远至未来的工作,由此实现队列中更靠后的作业。通过使用作业类壁钟极限,可以保证自由节点被保护。首先,确定来自该组可能的作业类的最大壁钟极限(并注意保证没有作业将运行长于该最大极限)。然后,作业被调度,直到前端作业群的第一成员被确定的点。这是第一作业,由于没有足够的节点资源可用,因此该第一作业不能运行。然后,如这里所述的那样计算前端作业群。为通过使用最大壁钟极限终止前端作业群计算,所有当前忙的节点的回填结束时间必须大于或等于最大壁钟极限。一旦忙节点达到该极限,保证运行在自由节点上的任何作业都将不影响未来的调度,这是因为,在该点上,运行在自由节点上的任何作业都可运行不长于最大壁钟时间。
作为进一步的考虑,取决于资源的数量、类定义和作业队列的状态,可以在前端作业群算法的被覆盖回填终止之前达到类终止。假定系统的本性是随机的,那么相反的情况也是正确的。因此,在前端作业群算法的实现中使用两种方法会是有利的。
一旦建立了狗群,回填调度就可开始。注意,使用当前的未来时间表,节点3具有2小时窗口(window),此后作业2被保证运行,节点4具有3小时窗口,此后作业3被调度为运行。将这种情况与图2的节点4未被回填窗保护的调度相比。该调度器考虑作业4用于回填,但对于要适用于任何可用回填窗的作业来说,WCT4=6太长。由于WCT5≤BFW2,因此作业5被考虑并在节点3上起动。最后,由于WCT6≤BFW3,因此作业6在节点4上起动。
注意,该新的前端作业群算法优选对回填作业执行“最小拟合”。例如,作业5本已容易地在节点4以及节点3上运行。但是,该算法考虑将运行并行作业的所有任务的最小BFW时间(在这种情况下,作业5仅具有单一任务)。这使得可用的回填时间窗最大化。
最终,要完成该例子,作业4将在当前调度周期结束之后被调度。由于它不能作为回填机会被启动,因此必须在当前的狗群运行之后等待下一个自由资源。在图3的例子的情况下,这将在作业3完成时发生。事实上,作业4将是在当前调度作业序列通过系统后被计算的新狗群的第一个成员。注意,图3是形成的作业调度的快照。在实际情况中,存在实现未来的作业调度的形成的多个事件。作业可由于作业存在的问题或用户对壁钟时间的过高估计而提早结束。作业也可在运行前被用户取消。这些事件中的任何事件都将改变图3中所示的当前调度,这将导致通过算法进行调度的再计算。
上述例子解释狗群算法的各个方面。为了探索算法,测试代码以PERL被编写以测试算法,并且,为了将算法置于实际调度器代码,开发数据结构。
通过使用PERL代码、仿真机和作业队列测试这些新特征中的每一个。PERL代码中包含的数据结构包含用于作业队列中的作业和节点资源的结构。图4表示数据结构的组织。
“作业阵列”包含用于作业调度的基本信息,包含作业和WCT需要的节点的数量、或作业可望运行多长时间。“节点阵列”包含用于跟踪狗群算法的额外调度需求的多个新特征。“job running(作业运行)”字段包含当前在该节点上运行的作业的作业ID和WCT。“BFWassignment(BFW分配)”是表示BFW保留时间的开始和结束的字段。该字段累积由于几个作业的调度可在未来的时间在该节点上被应用的回填窗口的跨度。“freetime(自由时间)”字段表示对于在该节点上回填的作业多长时间是可用的-这是现在的时间和BFW开始字段之间的时间。最后,“Future Jobs(未来作业)”是用于绘制未来被分配到该节点的作业的作业ID的结构。各作业ID内包含的是未来开始和结束时间。
通过使用这两个数据结构,可以执行狗群仿真。使用的该例程的伪代码如下
Dogtest(NumJobs,NumNodes,TestNodes,RandSeed)# The DogTest routine initializes the job and nodes arrays then calls# scheduleJob to place each job in the future schedule# NumJobs=number of jobs to build and submit# NumNodes=largest parallel job to generate# TestNodes=Numer of nodes in TEST parallel machine# RandSeed=where to start random number generatorCreate a randomly distributed job queue-initialize job structureNumber of nodes=range between 1 and NumNodesWallclock time ranges between 1 and 30Initialize node structure-all nodes initially freeForeach job in job arrayLastJob=ScheduleJob(ThisJob)Quit loop if LastJob is setEndforSchedule Job(jobid)# ScheduleJob considers a job given the current entries in the $nodes array.
# The scheduler attempts to first start the job. If it is not possible to start the job# immediately,the BFW for this job is computed.
For each node(sorted by smallest FreeTime first) {See if FreeTime is greater than or equal to WCT for this jobIf it is,save it on the potential list of nodesIf enough nodes are gathered,quit this for loop.
EndforIf enough nodes gathered for this job {Set FreeTime = 0 for each gathered nodeSet $node rurJobid = this jobSet $node WCT to WCT for this job} else {
# Not enough nodes were gathered for this job,compute when it will run and# which node resources it will useFor each node (sorted by EARLIEST BFW end time)If(more nodes are needed) OR(all nodes at same BFW end time are not yet gathered) {Push this node onto the potential node array}else {end the loop chEeking each nodeendifend forFor the number of needed nodes {Pop off a potential node from the node arrayAdjust this nodes BFW end and start timesAdd this job to the nodes FutureJob structure(jobid,start,and end times)EndforEndif of check for enough nodes gathered for the jobif all nodes have backfill time set (that is all nodes are covered by at least 1 BFW)retum (jobid)} else {retum nullendif在图5~6D的流程图中也表达了上述例程。图5示出用于调用作业队列的计算机作业的调度子例程,即,直到识别动态确定的这里给出的前端作业群调度算法中的前端作业群的关闭点的方法的一个例子。最初,产生包含范围在1和NumNodes之间的多个节点的随机分布的作业队列500,并且,提供每个节点的例如范围为1~30分钟的壁钟时间。通过在最初将所有节点设为“自由”510,将计算环境(或机器中)的多个计算节点初始化。处理然后确定在作业队列中是否存在作业520,并且,如果“是”,那么子例程ScheduleJob被调用以调度作业队列中的第一作业。子程度ScheduleJob返回返回码“LastJob”530。(以下参照图6A~6D说明ScheduleJob例程的一个实施例)。一旦该作业被调度,处理就确定返回码“LastJob”是否已被设定540。如果“否”,那么处理返回以从作业队列获得下一个作业以包含在前端作业群(或狗群)中。一旦返回码LastJob已被设定,或者,如果在作业队列中不存在其它作业,那么前端作业群中的作业的数量已被确定550(所有节点都已被回填极限覆盖),并且,可以对前端作业群执行常规的回填调度。
参照图6A~6D,给出ScheduleJob例程的一个方法。处理首先按最早FreeTime将节点阵列分类开始600。即,当节点能够自由执行工作时,节点阵列中的节点基于未来的时间块被分类。然后确定在节点阵列中是否存在未被处理的节点605,并且假定“是”,处理确定该节点的FreeTime是否大于或等于经历调度的作业的壁钟时间610。如果“是”,那么节点被保存在该作业的潜在节点列表上615。在考虑节点后,处理确定是否已为该作业聚集足够多的节点620。如果“否”,那么处理返回以从节点阵列获得下一个未被处理的节点,用于考虑是否可能包含在作业的潜在节点列表中。
一旦已聚集足够多的节点,或者如果在节点阵列中不存在其它的未被处理的节点,那么处理检查是否已为该作业聚集足够多的节点625(参见图6B)。如果“是”,那么获得来自该作业的潜在节点列表的节点630,并且处理通过以下步骤记录该节点将用于该作业将FreeTime设定为等于零,将节点RunJobID设定为等于该作业,将节点壁钟时间设定为等于该作业的壁钟时间,将节点的BFStart设定为等于该运行的作业的终点635。因此,随后计算中的该节点具有等于该作业的终点的BFStart时间。即,在将来,一旦该作业结束运行,其它作业就可使用该节点。处理然后确定BFEnd是否已被设定640。假定这是正在被处理的第一作业,那么答案是“否”,并且处理前进以将BFEnd设定为等于该运行作业的终点645。BFStart和BFEnd一起基于该运行作业限定该节点的回填窗口的开始和结束。然后,处理确定在该作业的潜在节点列表中是否存在更多的节点650。如果“是”,那么返回以从潜在的节点列表获得下一个节点,并且重复上述处理。
一旦潜在节点列表中的所有节点都得到考虑,或者如果为该作业处理聚集的节点不够,那么节点阵列按最早回填结束时间被分类,并且“潜在节点栈(stack)”被清除655(见图6C)。处理然后确定是否需要更多的节点660,如果“是”,那么具有最早回填结束时间的节点被推到该作业的潜在节点栈665,并且变量LastNode被设为该节点,SetTime被设为BFEnd时间。一旦获得足够数量的节点,那么处理确定是否具有更多的具有相同的BFEnd时间的节点670,如果“是”,那么这些节点也被推到潜在节点栈665。虽然该处理实际上收集比运行该作业需要的节点多的节点,但由于以与潜在节点栈相反的收集次序使用节点,因此,通过在相同的回填结束时间收集所有的节点,效率得到提高。
然后,JobBFStart被设为SetTime,JobBFEnd被设为JobBFStart+JobWC 675。JobBFStart和JobBFEnd是用于该特定作业的临时变量。然后,获得来自潜在节点栈的节点680,并考虑调整。首先,可以调整节点FreeTime 685,以及节点BFStart时间690和/或节点BFEnd时间695。如果该节点的FreeTime还没有被设定,或者,如果当前的作业开始得比该节点的当前FreeTime设定早,那么节点的FreeTime被调整为当前作业的将来开始时间。注意,节点的FreeTime设定代表按照当前计算的作业调度该节点将变为忙的将来的时间。如果节点的BFStart时间还没有被设定,或者如果该作业的BFStart时间小于该节点的当前BFStart时间,在这种情况下,节点的BFStart时间被设定为当前作业的BFStart时间,那么必须调整节点BFStart时间。如果作业的BFEnd时间大于节点的BFEnd时间,那么节点BFEnd时间被调整。在这种情况下,节点的BFEnd时间被设为作业的BFEnd时间。
该作业然后被添加到节点FutureJob结构700,并且处理确定是否已收集到足够的节点以运行该作业705。如果“否”,那么获得来自潜在节点栈的下一个节点。否则,处理设定等于该作业的JobID的返回码(RC)(见图6D)。然后确定在节点阵列上是否存在更多的节点715,如果“是”,那么获得来自的节点阵列的节点720,并且处理确定该节点的BFStart时间是否小于或等于零725。如果BFStart时间小于或等于零,那么节点没有回填窗口覆盖,并且,返回码(RC)被设定为零730,意味着处理将继续,返回735到图5的ScheduleJob例程530的调用点。即,随着返回码被设为零,“LastJob”保持未设定,并且,为包含在前端作业群中考虑下一个作业。
上述前端作业群算法相对于公知的替代性方法具有多个明显的优点1)动态确定的、被盖(capped)回填终点(termination)-在这里所述的前端作业群之前,为回填终点提出的方法包含作业的设置的一组整数(不能保证正确的终点)或在计算上强度更大的完全回填。
2)前端作业群算法在没有过多的计算要求的情况下对“自由节点”问题提供鲁棒的解决方案。
3)前端作业群算法是参数自由的-即,调度器管理器不需要设定任何参数以协调前端作业群。算法的操作是自动的。
4)在前端作业群算法中使用的数据结构允许将来的作业调度的图形表示。这可以进一步形成将来的调度的基于窗口的视图。
就在计算机或计算机网络上执行的程序过程讨论了上面给出了的详细说明。本领域技术人员使用这些过程说明和表示以最有效地将他们的工作的本质传达给本领域中的其它技术人员。可以以硬件或软件或两者的组合实现它们。
过程在这里,并且一般被认为导致希望的结果的一系列步骤。这些步骤是需要物理量的物理操作的步骤。通常,虽然不是必须,这些量采取能够被存储、传输、组合、比较和另外操纵的电信号或磁信号的形式。这证明、主要出于通用的原因、将这些信号称为位、值、要素、符号、字符、术语、数量、对象或属性等时常是方便的。但应当注意,所有的这些和相似的术语与适当的物理量相关联,并且仅仅是应用于这些量的方便的标号。
并且,常常以术语诸如添加或比较提到执行的操纵,这些操纵通常与由操作员执行的脑力操作有关。在构成本发明的上述的任何操作中,操作员的这种能力都不是必需的,或者在大多数情况下都不是希望有的;操作是机器操作。用于执行本发明的操作的有用的机器包含通用的数字计算机或类似的设备。
可以在诸如主计算机或个人计算机等的任何通用计算机上、并按照从诸如C++、Java或Fortran等的任何程序设计语言产生的程序模块或对象中的一个或更多个或一个或更多个的一部分执行方法的各个步骤。可以通过特殊目的硬件或为该目的设计的电路模块执行各个步骤或实现各步骤的文件或对象等。
优选地,可以以与计算机通信的高级过程性或面向对象的程序设计语言实现本发明。但是,如果希望的话,可以以汇编或机器语言实现本发明。在任何情况下,语言可以是经编译或解释语言。
本发明可以实现为包含记录介质的机构或计算机程序产品。这种机构或计算机程序产品可包含但不限于CD-ROM、盘、磁带、硬盘驱动器、计算机RAM或ROM和/或电子、磁、光、生物或其它类似的程序的实施例。事实上,机构或计算机程序产品可包含任何磁或光等的固体或流体传输介质,用于存储或传输用于控制根据本发明的方法的通用或特殊目的可编程计算机的操作的机器可读信号,并/或根据本发明的系统构成其部件。
也可以以系统实现本发明。系统可包括计算机,该计算机包含处理器和存储器器件并任选地包含存储设备、诸如视频显示器的输出设备和/或诸如键盘或计算机鼠标的输入设备。并且,系统可包含互连的计算机网络。计算机可同样地为单独的形式(诸如常规的台式个人计算机)或被集成到另一装置(诸如电子试验装置)中。可以为需要的目的特别地构建系统以执行例如本发明的方法步骤,或者,它可包含由存储在计算机中的根据这里的教导的计算机程序选择性激活或重构的一个或更多个通用目的计算机。这里给出的过程不是固有地与特定计算机系统或其它装置有关。从给出的描述可以发现用于各种这些系统的需要的结构。
并且,可以以软件、固件、硬件或它们的一些组合实现本发明的一个或更多个方面的能力。
本发明的一个或更多个方面可包含于具有例如计算机可用介质的制造物品(例如,一个或更多个计算机程序产品)中。介质在其中具有例如计算机可读程序代码单元或逻辑(例如,指令、代码、命令等)以提供和便于实现本发明的功能。制造物品可作为计算机系统的一部分被包含或被单独出售。
另外,可以提供体现机器可执行实现本发明的功能的指令的至少一个程序的至少一个机器可读程序存储设备。
这里示出的流程图仅是例子。在不背离本发明的精神的条件下,这里说明的这些示图或步骤(或操作)可以存在许多变化。例如,可以不同的次序执行这些步骤,或者,步骤可被添加、删除或修改。所有的这些变化都认为是要求的本发明的一部分。
虽然这里已详细示出和说明了优选的实施例,但本领域技术人员很容易理解,在不背离本发明的精神的条件下,可以进行各种修改、添加或替换等,这些修改、添加或替换等因此被认为在以下的权利要求书限定的本发明的范围中。
权利要求
1.一种用于调度包含多个计算节点的计算环境的计算机作业的方法,该方法包括调度作业队列的N个连续的计算机作业,直到实现前端作业群,其中,N≥2,并且通过监视N个依次调度的计算机作业对多个计算节点的回填窗口覆盖,并在(i)多个计算节点的所有计算节点被前端作业群中的N个计算机作业的至少一个计算机作业的至少一个回填窗口覆盖、或(ii)多个计算节点的至少一个计算节点的回填结束时间大于或等于包含N个依次调度的计算机作业的一组作业类的作业类的最大壁钟极限时自动关闭前端作业群中的成员资格,动态确定前端作业群中的计算机作业的数量N;和响应前端作业群的确定,对前端作业群的N个计算机作业回填调度作业队列的至少一个计算机作业以由多个计算节点执行。
2.根据权利要求1的方法,其中,前端作业群中的计算机作业的数量N小于等待由多个计算节点执行的作业队列中的计算机作业的数量,并且其中N个连续的计算机作业包含作业队列中的N个连续的前端计算机作业。
3.根据权利要求2的方法,其中,作业队列中的各个计算机作业具有相关的计算节点要求和指示运行计算机作业需要的时间量的壁钟时间,并且其中调度包含在确定什么时候关闭前端作业群中的成员资格时使用计算节点要求和N个计算机作业的壁钟时间。
4.根据权利要求1的方法,其中,调度包含将开始时间分配给前端作业群中的N个计算机作业的各个计算机作业。
5.根据权利要求1的方法,其中,动态确定还包含最初按最早的自由时间将多个计算节点的计算节点分类,并且,对于被考虑包含在前端作业群中的各个计算机作业,确定至少一个计算节点的自由时间是否大于或等于对被考虑包含在内的计算机作业的壁钟时间,如果是,则在用于执行计算机作业的潜在节点列表上保存该至少一个计算机节点,并且,对于潜在节点列表的各个节点,将回填结束时间设置为等于一旦在计算机节点上运行的计算机作业的预计结束时间,并将返回码设置为等于计算机作业的作业ID。
6.根据权利要求5的方法,其中,关闭成员资格包含确定多个计算节点的所有计算节点具有大于零的回填开始时间,由此指示前端作业群中的成员资格的关闭。
7.根据权利要求5的方法,其中,当潜在节点列表中的计算机节点的数量不足以执行计算机作业时,该方法还包括按最早回填结束时间将多个计算机节点分类,并通过最早回填结束时间将计算机节点推到潜在节点栈上,直到足够数量的计算机节点被累积以执行计算机作业;和确定多个计算机节点的至少一个附加的计算机节点是否具有与潜在节点栈上的最后一个计算机节点的回填结束时间相同的回填结束时间,如果是,则将具有相同回填结束时间的该至少一个附加的计算机节点添加到潜在节点栈中,并以与栈上的位置相反的次序从潜在节点栈去除计算机节点,去除的节点被指定执行计算机作业。
8.根据权利要求7的方法,还包括对潜在节点栈的至少一个计算机节点调整节点自由时间,以基于前端作业群中包含的计算机作业减少节点自由时间。
9.一种用于调度包含多个计算节点的计算环境的计算机作业的系统,该系统包括用于调度作业队列的N个连续的计算机作业、直到实现前端作业群的装置,其中,N≥2,并且通过监视N个依次调度的计算机作业对多个计算节点的回填窗口覆盖,并在(i)多个计算节点的所有计算节点被前端作业群中的N个计算机作业的至少一个计算机作业的至少一个回填窗口覆盖、或(ii)多个计算节点的至少一个计算节点的回填结束时间大于或等于包含N个依次调度的计算机作业的一组作业类的作业类的最大壁钟极限时自动关闭前端作业群中的成员资格,动态确定前端作业群中的计算机作业的数量N;和响应前端作业群的确定,对前端作业群的N个计算机作业回填调度作业队列的至少一个计算机作业以由多个计算节点执行的装置。
10.根据权利要求9的系统,其中,前端作业群中的计算机作业的数量N小于等待由多个计算节点执行的作业队列中的计算机作业的数量,并且其中N个连续的计算机作业包含作业队列中的N个连续的前端计算机作业。
11.根据权利要求10的系统,其中,作业队列中的各个计算机作业具有相关的计算节点要求和指示运行计算机作业需要的时间量的壁钟时间,并且其中用于调度的装置包含用于在确定什么时候关闭前端作业群中的成员资格时使用计算节点要求和N个计算机作业的壁钟时间的装置。
12.根据权利要求9的系统,其中,用于调度的装置包含用于将开始时间分配给前端作业群中的N个计算机作业的各个计算机作业的装置。
13.根据权利要求9的系统,其中,用于调度的装置还包含用于最初按最早的自由时间将多个计算节点的计算节点分类,并且,对于被考虑包含在前端作业群中的各个计算机作业,确定至少一个计算节点的自由时间是否大于或等于对被考虑包含在内的计算机作业的壁钟时间,如果是,则在用于执行计算机作业的潜在节点列表上保存该至少一个计算机节点,并且,对于潜在节点列表的各个节点,将回填结束时间设置为等于一旦在计算机节点上运行的计算机作业的预计结束时间,并将返回码设置为等于计算机作业的作业ID的装置。
14.根据权利要求13的系统,其中,当潜在节点列表中的计算机节点的数量不足以执行计算机作业时,该系统还包括按最早回填结束时间将多个计算机节点分类、并通过最早回填结束时间将计算机节点推到潜在节点栈上、直到足够数量的计算机节点被累积以执行计算机作业的装置;和用于确定多个计算机节点的至少一个附加的计算机节点是否具有与潜在节点栈上的最后一个计算机节点的回填结束时间相同的回填结束时间,如果是,则将具有相同回填结束时间的该至少一个附加的计算机节点添加到潜在节点栈中,并以与栈上的位置相反的次序从潜在节点栈去除计算机节点,去除的节点被指定执行计算机作业的装置。
全文摘要
提出一种用于调度具有多个计算节点的计算环境的计算机作业的设施,该设施包括调度作业队列的N个连续的计算机作业,直到实现前端作业群,其中,N≥2,并且,通过监视N个调度的作业对计算节点的回填窗口覆盖、并在(i)所有计算节点被至少一个回填窗口覆盖、或(ii)至少一个计算节点的回填结束时间大于或等于具有N个调度的作业的一组作业类的最大壁钟极限时自动关闭前端作业群中的成员资格,动态确定前端作业群中的作业的数量N。响应前端作业群的确定,该设施然后对前端作业群回填调度作业队列的作业以执行。
文档编号G06F9/46GK1983194SQ20061015391
公开日2007年6月20日 申请日期2006年9月12日 优先权日2005年12月15日
发明者约瑟夫·F·斯科维拉, 威曼·常 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1