专利名称::平衡网格计算环境中的工作负荷的方法和系统的制作方法
技术领域:
:本发明一般地涉及网格计算,更具体地涉及网格计算环境中的工作负荷管理。
背景技术:
:网格计算环境允许多个异类的和/或在地理上远离的系统间的互连。在一个例子中,为了方便系统间的互连,采用了位于纽约阿蒙克(Armonk)的国际商业机器公司所提供的Globus工具包。Globus使得用户能够指定所述多个系统中的哪个系统将运行作业。用户使用一种资源规范语言(ResourceSpecificationLanguage,RSL)向选定系统提交作业。Globus收到这种RSL之后,将其转换成目标系统上的调度器所能识别的恰当格式。例如,如果调度器是国际商业机器公司所提供的LoadLeveler,那么该RSL将被转换成命令文件。因为,或者说尽管,用户可以选择一个或多个系统运行他们的作业,网格计算环境的各系统可能会变得不平衡。例如,一个系统可能有过多的工作负荷,而另一个系统却可能有过少的工作负荷。因此,需要一种对网格计算环境中的工作负荷进行平衡的能力。并且需要一种用于对特定工作确定最佳配合的能力。
发明内容通过提供一种网格计算环境中工作负荷平衡方法,本发明克服了以往技术的缺点并且具有其它优点。该方法包括,例如,获取关于网格计算环境的多个系统中一个或多个系统的信息;以及使用至少一部分所获取的信息来平衡所述所述多个系统中至少两个系统的工作负荷。在这里,也对前面概述的方法所对应的系统及计算机程序产品进行了描述和声明。通过本发明的技术还实现了其它的特性和优点。这里还对本发明的其它实施例和其它方面进行了详细描述,并且认为它们是所声明的本发明的一部分。本发明的主题在权利要求书中被具体指出并且被清楚声明。参照附图的以下详细描述,清晰描绘了本发明的以上和其它目的、特性和优点,其中图1示出了一种计算环境的实施例,该计算环境引入和采用了本发明的一个或多个方面;图2示出了根据本发明的一个方面、与在图1的计算环境中平衡工作负荷相关联的逻辑的一个实施例;图3示出了根据本发明的一个方面、关于工作负荷平衡逻辑的一个实施例的更具体的细节;以及图4示出了根据本发明的一个方面、用于决定由该环境中的哪一个系统来运行一给定作业的逻辑的一个实施例。具体实施例方式根据本发明的一个方面,在一网格计算环境中执行工作负荷平衡。在一个例子中,该网格计算环境的管理器守护程序(managerdaemon)获取该环境中一个或者多个系统的信息,并且根据这些所获取的信息确定工作负荷在这些系统中的布置。工作负荷的布置可包括例如将作业从一个系统调换到另一个系统或者最初将作业布置到一特定系统等。举例来说,所述信息是从所述系统的调度器中获取的。网格计算允许虚拟化分布式计算和数据资源,例如数据处理、网络带宽和存储能力,以便创建单个的系统映像,以准许用户和应用程序对海量信息技术(IT)能力的无缝访问。一个网格计算环境的各个系统经常是异类的系统。也就是说,所述环境的多个系统中至少一个系统包含与该环境的至少一个其它系统不同的硬件或者软件。此外或者可选择地,这些系统相互间可以是地理上相互远离的。关于网格计算的更多细节请参见例如网址www-1.ibm.com/grid/about_grid/what_is.shtml。图1示出了一种计算环境的实施例,该计算环境引入和采用了本发明的一个或多个方面。网格计算环境100包括例如多个系统102。在这个特定例子中,描述了两个系统,系统A和系统B。但在其它例子中,计算环境可包含两个以上的系统。在一个例子中,系统A包含一个由位于纽约阿蒙克的国际商业机器公司所提供的具有多个RS/6000节点的可伸缩并行(ScalableParallel,SP)机,而系统B包含一个也是由国际商业机器公司提供的LINUX群集。通过连接104,例如以太网连接或其它类型的连接,各系统102相互连接。举例来讲,系统102包含一个调度器106用来调度该系统中的作业。一个调度器可以是多种类型的调度器中的一种,并且每个系统可具有相同或不同类型的调度器。例如,系统A中的调度器106包含有国际商业机器公司提供的LoadLeveler,而系统B中的调度器106包含有AltairGridTechnologies,LLC提供的PortableBatchSystem(PBS)。在2001年12月出版的、IBM出版号为SA22-7881-00的、V3R1、标题为IBMLoadLevelerUsingandAdministrating”(IBMLoadleveler使用和管理)的IBM出版物中描述了LoadLeveler的一个例子,特此将该出版物作为参考全文引入本说明书。在一个例子中,至少一个调度器进行回填调度(backfillscheduling)。回填调度允许一个应用程序乱序运行,只要其不影响已被调度运行的应用程序的开始时间。在2003年4月4日申请的、标题为“BackfillSchedulingOfApplicationsBasedOnDataofTheApplications”(基于应用程序数据的应用程序回填调度)的美国专利申请No.10/406,985中描述了回填调度的一个例子,特此将该申请作为参考全文引入本说明书。在一个例子中,由于网格计算环境中的各个系统是异类的,因此采用了由国际商业机器公司提供的称为Globus的工具包,以方便系统间的通信。这一工具包在各系统间创建了一个公共层。例如,对于一个启用了Globus的系统,作业的信息经由Globus,而Globus将其转换为一Globus格式,而后将该信息传给另一个Globus系统,并由它将该信息转换成一种该接收系统能够识别的格式。这使得具有一个或多个不同的操作系统、不同的中间件和/或不同的调度器的各个系统之间能够进行有效地通信。关于Globus的更多细节请参见例如2003年6月18日出版的、IBM出版号SG24-6936-00的、标题为“EnablingApplicationsforGridComputingwithGlobus”(具有Globus的网格计算的使能应用程序)的IBM出版物,特此将该出版物作为参考全文引入本说明书。根据本发明的一个方面,在网格计算环境中的一个系统还包含一管理器守护程序108。所述管理器守护程序运行于后台,并负责平衡所述环境中至少一部分系统之间的工作负荷。所述管理器守护程序获取(例如,被提供、确定等)将被管理的多个系统的信息。这种信息包括例如这些系统的标识、联系这些系统的方式等。管理器守护程序定期执行对网格计算环境中的工作负荷进行平衡的逻辑。在一个例子中,这种逻辑是以可配置的时间间隔执行的(例如,每5分钟执行一次)。作为另一个例子,这种逻辑的执行是基于事件的(例如,根据作业的启动和/或完成、可用系统资源的变化等)。参照图2-4描述了与平衡一网格计算环境中的工作负荷相关的逻辑的一实施例。首先参看图2,所述管理器守护程序获取一个或多个系统的调度器信息(步骤200)。例如,管理器守护程序联系这些系统的调度器来获取所需的信息。这种信息包括,例如该系统当前的空闲节点、该系统的等待作业的作业队列、以及用于该系统的作业混合的当前状态的、调度器的特定变量设置,例如下一个等待作业的阴影时间(shadowtime)(即,该作业需要等待资源多长时间)以及该阴影时间所保护的一个或多个资源。根据所获取的信息,管理器守护程序执行工作负荷平衡(步骤202)。参照图3描述了关于工作负荷平衡的一个例子的进一步细节。首先,使用调度信息确定将由哪一个系统运行一给定的作业(步骤300)。在一个例子中,这包括确定一特定系统中哪一项等待作业可以在另一系统上运行。参照图4描述了进行这种确定所采用的逻辑的一个例子。在这里所描述的例子中,确定系统A中的一个或者多个作业是否可以转移到系统B中。但是本领域的技术人员明白的是,可使用类似的逻辑将作业转移到系统A或其它正在被管理的系统中。参见图4,确定系统B中是否有任何空闲节点(查询400)。如果没有空闲节点,则该处理结束(步骤402)。但是,如果有一个或者多个空闲节点,就进一步确定系统A中是否有一个或多个等待的作业(查询404)。如果系统A中有等待的作业,就进一步确定该等待的作业是否适合于系统B(查询406)。如果该等待的作业适合于系统B,则在一个例子中,进一步确定这一作业是否可以回填(查询408)。如果这一作业适合该新的系统并且可以回填,那么这一作业就被放置于一传送列表中(步骤401)。否则就确定系统A中是否还有其它等待的作业(查询404)。如果没有,则该处理结束(步骤402)。回到图3,除了确定由哪一个系统运行一给定的作业之外,工作负荷平衡还包括将所述作业放置于该系统中(步骤302)。在一个例子中,这包括将每一项作业(或者这些作业的一部分)从传送列表中转移到指定的一个(或多个)系统中。这包括,例如,将该作业在原系统(例如,系统A)中进行保持以防止启动被选定传送的该作业。这一作业然后被提交至新的系统中(例如,系统B)。如果转移成功,那么从第一个系统中将这一作业取消。通过使用保持而后转移的技术,可根据设计者的自行决定而提供进一步的错误校验功能。在一个例子中,在作业转移中使用了Globus所提供的命令。以上详细描述的是与在一网格计算环境中采用管理器守护程序执行工作负荷平衡相关的逻辑的一实施例。以下是用于执行工作负荷平衡的伪码的一实施例Doforever{#获得两个批系统的当前快照访问系统A中的LoadLever以获得空闲节点A,阴影时间A,等待作业A访问系统B中的LoadLever以获得空闲节点B,阴影时间B,等待作业B清空A到B以及B到A的传送列表#查找系统A中哪些等待的作业可以在系统B中运行if(空闲节点B){#如果系统B中有空闲节点...Foreach(等待作业A){#那么对于系统A中所有等待作业...If(作业A的节点要求<=空闲节点B){#如果该作业适合在系统B中运行...If(作业AWallclock时间<=阴影时间B){#如果该作业可以回填...将作业A放入所述A到B的传送列表中}}}}#查找系统B中哪些等待的作业可以在系统A中运行if(空闲节点A){#如果系统A中有空闲节点...Foreach(等待作业B){#那么对于系统B中所有等待作业...If(作业B的节点要求<=空闲节点A){#如果该作业适合在系统A中运行...If(作业BWallclock时间<=阴影时间A){#如果该作业可以回填...将作业B放入所述B到A的传送列表中}}}}#将潜在的作业从A转移到Bforeach(所述A到B阵列中的作业){转移作业A到系统B}#将潜在的作业从B转移到Aforeach(所述B到A阵列中的作业){转移作业B到系统A}#睡眠一段时间#可由用户配置,大约30秒}#Doforever结束#转移作业子例程,用于将作业从一个系统转移到另一个系统SubMoveJobXtoSystemY{将作业X置于系统保持提交作业X至系统Y一旦作业X出现在系统Y中{将作业X从系统X中清除}}#子例程结束这里描述的是在网格计算环境中平衡工作负荷的一种能力。在一个例子中,为了平衡工作负荷,将作业从一个负荷较重的系统转移到另外一个负荷较轻的系统中。在其它例子中,工作负荷也可以通过其它的方法进行平衡,例如,工作负荷平衡可包括首先确定由哪一个系统运行一特定的作业并向这一系统提交该作业。在这种情况下,用户将作业提交至对于管理器守护程序是可见的一待宰栏(holdingpen)。在这一例子中,虽然所述待宰栏中的作业对于管理器守护程序是可见的,但对各个系统中的调度器来说是不可见的。管理器守护程序从调度器请求信息并根据该信息确定对一特定作业的最佳配合,而后将作业提交至选定的系统。虽然作业的最初的提交是受控制的,但系统仍然可能变得不平衡。作业运行过程中的不可预知的事件可导致系统不平衡的发生(例如,导致作业提早结束的作业失败),这些事件将破坏先前的排队决策等。于是,在一个例子中,所述守护程序还运行上述的逻辑来保持工作负荷的平衡。在平衡工作负荷的过程中所用到的信息可以不同于、少于和/或多于以上所描述的信息。作为例子,可使用作业类别和/或资源匹配(例如存储器或者软件许可)以及其它信息来决定工作负荷的布置。本发明的工作负荷平衡能力使得能够有利地平衡网格计算环境中两个或者更多系统的工作负荷。而且,虽然这里只描述了两个系统,但却可以使用单个管理器守护程序对多于两个的具有独立的分批排队能力的系统进行控制。所述逻辑将被扩展以检查来自其它系统的信息。并且,虽然前面给出了系统的一些例子,但是还存在着很多其它的可能性。作为一个例子,系统是同类的,但却是在地理上远离的。还存在很多其它的变化。在一个方面,可以使管理器守护程序无效。当其无效时,用户仍然可以向多个系统提交作业,但在两个网格连接的系统之间的自动负荷平衡就不再发生了。此外,虽然上述例子中采用了回填调度的技术,但是,包括那些不回填的其它的调度技术也可被采用。如果采用了不回填的技术,则可不将阴影时间包括在所述所收集的信息中。举例说,在一种先进先出(FIFO)的调度技术中,管理器守护程序确定空闲的节点、等待的作业以及可能地等待的作业的顺序,但它不要求阴影时间。当决定要转移作业到一个系统时,将考虑空闲的资源,并且没有阴影时间的检测。以类似的方式,其它的批调度技术可以被用于管理工作负荷。另外,对于那些采用回填技术的调度器,在其它实施例中,使用受阴影时间保护(以及不受阴影时间保护)的资源的列表来改善决策过程。例如,可以将具有大于阴影时间的Wallclock(总耗时)估计的作业转移到不被阴影时间保护的节点(因此,不限于回填时间约束)。此外,虽然前面提供了调度器的例子,但也可以采用许多其它的调度器而并不违反本发明的精神。其它调度器的例子包括,例如,由PlatformComputing提供的LoadSharingFacility(LSF)以及由MauiSupercomputingCenter提供的Maui。作为另一个实施例,多于一个的系统可以包含有管理器守护程序,一个可作为另一个的备份并且/或者多个管理器守护程序协同工作来管理网格计算环境中的工作负荷等。并且,该计算环境中的一个或多个系统可以不具有调度器,而是由其它系统中的调度器进行调度,等等。有利地,本发明的一个或多个方面使得能够实现网格计算环境工作负荷的平衡。这将提高效率和生产率。因为其动态和自动的特性,这种平衡对于用户是透明的。通过从调度器获取信息并保持调度器的调度责任,管理器守护程序的复杂性被降低到最小。因为管理器守护程序获取的信息来自复杂的调度软件程序,因此输入至管理器守护程序的信息量得到了减少。并且调度器可以将已经运行的算法的结果发送给管理器守护程序,这样管理器守护程序就不需要进行复杂的分析(例如,阴影时间的计算等)。有利地,本发明的一个或多个方面使多个并行的机器能够借助例如单个Globus的实现而组合资源,其中每个机器被独立地管理。本发明可以包含于具有例如计算机可用媒介的制造物品中(例如,一个或者多个计算机程序产品)。该媒介在其中具有例如计算机可读程序代码手段或者逻辑(例如,指令、代码、命令等),来提供或促进本发明的能力。这种制造物品可以被包括为一计算机系统中的一部分,或者单独出售。另外,可以提供至少一个可被一机器读取的程序存储设备,该程序存储设备包含了至少一个指令程序,该指令程序可被该机器执行来实现本发明的能力。这里示出的流程图只是一些例子。在这些流程图或这里描述的步骤(或操作)中可以有很多变化,而并不违反本发明的精神。例如,这些步骤可以不同的顺序执行,也可以增加、删除、更改某些步骤。所有这些变化都被认为是所声明的本发明的一部分。虽然在这里详细说明和描述了优选实施例,但相关领域的技术人员明白的是,可以进行各种修改、增加、替换等,而并不违反本发明的精神,因此,这些修改等也被认为处于权利要求书中所定义的本发明的范围之内。权利要求1.一种平衡计算环境中的工作负荷的方法,所述方法包括获取关于一网格计算环境的多个系统中的一个或多个系统的信息;应用至少一部分所获取的信息平衡所述多个系统中的至少两个系统的工作负荷。2.权利要求1的方法,其中所述获取包括,由所述网格计算环境中的管理器守护程序从与所述一个或多个系统相关联的一个或多个调度器中获取所述信息。3.权利要求2的方法,其中,从至少两个调度器中获取信息,并且其中,所述至少两个调度器中的一个调度器是与所述至少两个调度器中的至少一个其它调度器不同的调度器。4.权利要求1的方法,其中所述信息包括关于所述一个或多个系统的工作负荷的信息。5.权利要求4的方法,其中所述关于系统的信息包括以下至少之一所述系统中空闲节点的数量、零个或者多个等待作业的作业队列以及一个或多个用于所述系统的作业混合的当前状态的、特定于调度器的变量设置。6.权利要求1的方法,其中所述平衡包括确定将作业分配给所述至少两个系统中哪一个系统;以及将所述作业分配给所确定的系统。7.权利要求1的方法,其中所述平衡包括从所述至少两个系统中的一个系统中清除作业;以及将所述作业分配给所述至少两个系统中的另一个系统。8.一种平衡计算环境中的工作负荷的系统,所述系统包括用于获取关于一网格计算环境的多个系统中的一个或多个系统的信息的装置;用于使用至少一部分所述所获取的信息来平衡所述多个系统中的至少两个系统的工作负荷的装置。9.权利要求8的系统,其中所述用于获取的装置包括,用于由所述网格计算环境中的管理器守护程序从与所述一个或多个系统相关联的一个或多个调度器中获取所述信息的装置。10.权利要求9的系统,其中,从至少两个调度器获取信息,并且其中,所述至少两个调度器中的一个调度器与所述至少两个调度器中的至少一个其它调度器不同。11.权利要求8的系统,其中所述信息包括关于所述一个或多个系统的工作负荷的信息。12.权利要求11的系统,其中所述关于系统的信息包括以下至少之一所述系统的空闲节点的数量、零个或者多个等待作业的作业队列以及一个或多个用于所述系统的作业混合的当前状态的、特定于调度器的变量设置。13.权利要求8的系统,其中所述用于平衡的装置包括用于确定将作业分配给所述至少两个系统中的哪一个系统的装置;以及用于将所述作业分配给所确定的系统的装置。14.权利要求8的系统,其中所述用于平衡的装置包括用于从所述至少两个系统中的一个系统中清除作业的装置;以及用于将所述作业分配给所述至少两个系统中的另一个系统的装置。15.一种制造物品,包括至少一个计算机可用介质,其具有用来平衡一计算环境中的工作负荷的计算机可读的程序代码逻辑,所述计算机可读的程序代码逻辑包括用于获取关于一网格计算环境的多个系统中的一个或多个系统的信息的获取逻辑;用于使用至少一部分所述所获取的信息平衡所述多个系统中的至少两个系统的工作负荷的平衡逻辑。16.权利要求15的制造物品,其中所述获取逻辑包括,用于由所述网格计算环境中的管理器守护程序从与所述一个或多个系统相关联的一个或多个调度器中获取所述信息的逻辑。17.权利要求15的制造物品,其中所述信息包括所述一个或多个系统的工作负荷的信息。18.权利要求17的制造物品,其中所述关于系统的信息包含以下至少之一所述系统中的空闲节点的数量、零个或多个等待作业的作业队列以及一个或多个用于所述系统的作业混合的当前状态的、特定于调度器的变量设置。19.权利要求15的制造物品,其中所述平衡逻辑包括用于确定将作业分配给所述至少两个系统中哪一个系统的确定逻辑;用于将所述作业分配给所确定的系统的分配逻辑。20.权利要求15的制造物品,其中所述平衡的逻辑包括用于从所述至少两个系统的中一个系统中清除作业的清除逻辑;将所述作业分配给所述至少两个系统中的另一个系统的分配逻辑。全文摘要本发明提供了一种用于平衡网格计算环境中的工作负荷的方法和系统。一管理器守护程序从网格计算环境的多个系统的多个调度器中获取信息,并且应用这些信息平衡该环境中的工作负荷。这些信息包括空闲资源、等待的作业以及可能的其它信息的指示。文档编号G06F9/46GK1581806SQ20041004551公开日2005年2月16日申请日期2004年5月28日优先权日2003年8月5日发明者J·F·斯科维拉申请人:国际商业机器公司