在集群中调度任务的方法和系统转让专利

申请号 : CN200910126108.4

文献号 : CN101819540B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘朋傅志文杨杰胡子明

申请人 : 国际商业机器公司

摘要 :

提供了一种在集群中调度任务的方法和系统,该集群包括多个计算节点,其中方法包括:定义构建所述多个计算节点的虚子集群的规则;基于规则,将集群中的多个计算节点构建成多个虚子集群,其中一个计算节点只能归入一个虚子集群;将接收到的任务分发至一个选择的虚子集群;以及在所述选择的虚子集群中,为分发的任务调度至少一个计算节点。进一步地,根据任务的特征和/或虚子集群的特征,将任务分发至所述选择的虚子集群。本发明能够有效提高调度吞吐率。

权利要求 :

1.一种在集群中调度任务的方法,所述集群包括多个计算节点,所述方法包括:定义构建所述多个计算节点的虚子集群的规则;

基于所述规则,将所述集群中的多个计算节点构建成多个虚子集群,其中,一个计算节点只能归入一个虚子集群;

将接收到的任务分发至一个选择的虚子集群;以及在所述选择的虚子集群中,为所述分发的任务调度至少一个计算节点;

其中所述定义构建所述多个计算节点的虚子集群的规则的步骤包括:定义各个虚子集群的进入规则和退出规则;

并且其中所述基于所述规则,将所述集群中的多个计算节点构建成多个虚子集群的步骤包括:响应于一个计算节点满足一个虚子集群的进入规则,则所述计算节点包括在所述虚子集群中;

响应于一个计算节点满足一个虚子集群的退出规则,则所述计算节点不包括在所述虚子集群中。

2.根据权利要求1所述的方法,其中所述将接收到的任务分发至一个选择的虚子集群的步骤包括:根据接收到的任务的特征和/或所述构建的多个虚子集群的特征,选择将所述任务要分发至的虚子集群。

3.根据权利要求1或2所述的方法,还包括:

响应于一个计算节点的状态改变,重组所述虚子集群,该步骤进一步包括:判断所述状态改变的计算节点是否满足其所属虚子集群的退出规则,若不满足,则结束重组;

若满足,则将所述状态改变的计算节点移出所述状态改变的计算 节点所属的虚子集群,并且判断所述状态改变的计算节点是否满足其它虚子集群的进入规则,以确定所述状态改变的计算节点属于哪个虚子集群并将其归入所确定的虚子集群中。

4.根据权利要求1或2所述的方法,其中响应于一个计算节点满足一个虚子集群的进入规则,则所述计算节点包括在所述虚子集群中的步骤包括:如果一个计算节点满足多个虚子集群的进入规则,则使用如下方式之一将该计算节点归入所述多个虚子集群之一:随机地将该计算节点归入所述多个虚子集群之一;

按照指定的优先级顺序将该计算节点归入所述多个虚子集群之一;

按照用户自定义的策略将该计算节点归入所述多个虚子集群之一。

5.根据权利要求1所述的方法,其中在所述选择的虚子集群中,为所述分发的任务调度至少一个计算节点的步骤包括:按照所述选择的虚子集群的调度策略,为所述分发的任务调度至少一个计算节点。

6.根据权利要求5所述的方法,其中所述选择的虚子集群的调度策略是根据选择的虚子集群内的计算节点的特征和/或分发的任务的特征而设定的。

7.一种在集群中调度任务的系统,所述集群包括多个计算节点,所述系统包括:规则定义器,用于来定义构建所述多个计算节点的虚子集群的规则;

虚子集群管理器,配置用于基于所述规则,将所述集群中的多个计算节点构建成多个虚子集群,其中,一个计算节点只能归入一个虚子集群;

分发器,配置用于将接收到的任务分发至一个选择的虚子集群;以及子调度器,配置用于在所述选择的虚子集群中,为所述分发的任 务调度至少一个计算节点;

其中所述规则定义器被配置用于:定义各个虚子集群的进入规则和退出规则;

其中所述虚子集群管理器还被配置用于:

响应于一个计算节点满足一个虚子集群的进入规则,则所述计算节点包括在所述虚子集群中;

响应于一个计算节点满足一个虚子集群的退出规则,则所述计算节点不包括在所述虚子集群中。

8.根据权利要求7所述的系统,其中所述分发器进一步配置用于根据接收到的任务的特征和/或所述构建的多个虚子集群的特征,选择将所述任务要分发至的虚子集群。

9.根据权利要求7或8所述的系统,其中所述虚子集群管理器还被配置用于:响应于一个计算节点的状态改变,重组所述虚子集群,重组过程中,判断所述状态改变的计算节点是否满足该状态改变的计算节点所属的虚子集群的退出规则,若不满足,则结束重组;

若满足,则将所述状态改变的计算节点移出该状态改变的计算节点所属的虚子集群,并且判断所述状态改变的计算节点是否满足其它虚子集群的进入规则,以确定所述状态改变的计算节点属于哪个虚子集群并将其归入所确定的虚子集群中。

10.根据权利要求7或8所述的系统,其中所述虚子集群管理器还被配置用于:如果一个计算节点满足多个虚子集群的进入规则,则使用如下方式之一将该计算节点归入所述多个虚子集群之一:随机地将该计算节点归入所述多个虚子集群之一;

按照指定的优先级顺序将该计算节点归入所述多个虚子集群之一;

按照用户自定义的策略将该计算节点归入所述多个虚子集群之一。

11.根据权利要求7所述的系统,其中所述子调度器具有调度策略,所述子调度器按照所述调度策略,为所述分发的任务调度至少一个计算节点。

12.根据权利要求11所述的系统,其中所述子调度器的调度策略是根据所述选择的虚子集群内的计算节点的特征和/或分发的任务的特征而设定的。

说明书 :

在集群中调度任务的方法和系统

技术领域

[0001] 本发明总体上涉及计算资源的调度,更具体地,本发明涉及提高集群中的调度吞吐率的方法及相关系统。

背景技术

[0002] 计算机集群,简称集群,是一种计算机系统,其通过多个计算机(又称为计算资源,诸如软件和/或硬件资源)连接起来协作完成计算作业。这些计算资源位于同一管理域中,其具有统一的管理策略并且作为一个整体向用户提供服务。集群系统中的单个计算机通常称为节点或者计算节点。
[0003] 集群系统有诸多优点。例如,当集群系统采用负载均衡方式工作时,通过由多台计算机完成同一工作,其能够达到更高的效率。集群系统也可以采用主从服务器方式工作。一旦主服务器失效,就由从服务器代替主服务器向用户提供服务,从而提供高容错性。
[0004] 由于集群系统包含大量的计算资源,因此,当要执行计算任务时,需要为该任务分配相应的计算资源。该过程称为集群环境下的任务调度或作业调度。任务调度实际是根据任务和资源的特性、按照调度策略将任务映射到相应的资源上以执行的过程。
[0005] 计算任务或计算作业,简单地说,就是对资源的请求和利用。传统的计算任务主要集中在高性能计算类应用,诸如天气预报、地形分析之类的大规模科学问题。随着计算技术在各行业的渗入,在一些新的领域中出现了计算需求的较大增长,例如在线游戏、银行业务、EDA设计等。
[0006] 这些新领域中的计算任务与传统的学术研究一类的计算任务存在较大的差异。例如,传统的计算任务主要包括数量少、但耗时且计算密集的作业。这些作业基本上属于同一类型(并行或者串行)。而在新领域中的计算任务则比较复杂,需求也不尽相同。它们通常包括大量轻量级作业,作业的类型一直在变化,例如类型可以包括串行/并行、实时/非实时等。
[0007] 此外,计算机技术的飞速发展也使得计算资源环境日趋复杂,集群的规模日益庞大。例如,集群内计算节点的数量可多达百万级。半导体技术的发展使得硬件成本降低,导致计算资源的数量巨大,诸如CPU、存储器、I/O设备之类的数量相比于以前有显著的增加。而且,计算资源的拓扑结构也由原来的平面结构向层次化、立体化等复杂结构发展。另外,计算机硬件和软件的类型也与日俱增。在硬件方面,例如服务器有IBM x系列、p系列、蓝色基因(BlueGene)等。在软件方面,例如操作系统有AIX、Linux、Windows等。
[0008] 图1示出了现有技术中在单个集群调度系统中采用的典型调度方式。如图1所示,任务队列中的任务101向调度器请求资源。调度器中的工作负载管理器102遍历计算资源中的计算节点103,选择将要被分配以运行该任务的节点集合。然后,工作负载管理器102将安排任务101在所选择的节点集合中运行。
[0009] 从上述调度方式可以明显看出,当有任务请求资源时,在找到将要被分配以运行该任务的节点之前需要遍历大量的节点。这对于具有少量计算节点的集群系统可能是有效的。但是,在具有大量计算节点的集群调度系统中(例如计算节点数目多达百万级),其调度效率明显会降低。而且,对于有些实时任务而言(诸如在线游戏、银行业务等),这么长时间的调度以获得最优解是不可接受的。
[0010] 此外,如前面所提到的,随着科技水平的提高,计算机硬件和软件的类型也与日俱增。当前的技术既可以制造出像BlueGene类型的巨型计算节点或者64路乃至128路的大型对称多处理(SMP)计算节点,也可以制造出低成本计算节点,例如刀片服务器。
[0011] 对于不同类型的计算节点,其典型的适用场景和调度策略是有差异的。例如,对于巨型计算节点(诸如64路Power服务器),其单节点的计算、存储、容错等能力都很强。而且,诸如并发多线程(SMT)、亲和力(affinity)之类的各种附加特性比较丰富。因此,理论上,巨型计算节点可以供多个中小规模的计算应用(例如电路仿真、银行事务处理等)共享使用。此外,此类节点一般比较昂贵,调度策略一般偏重于精细化以提高资源利用率,诸如作业回填(Backfill)调度策略。
[0012] 而对于低成本计算节点,其单节点的计算、存储、容错等能力相对不是很强,并且附加特性少。但是,由于成本低,因此此类计算节点的数量巨大,相应的调度策略一般偏重于粗犷,诸如轮转(Round Robin)调度策略。
[0013] 在实际运行中,各个应用对资源的需求往往是不同的,甚至同一应用在不同执行阶段的需求也是不同的。例如,气象预报应用的完整过程通常包括原始数据的预处理、计算和一定的数据后处理。在数据预处理阶段,对资源的要求往往偏重于输入输出(IO)性能。在计算阶段,对资源的要求偏重于计算性能。
[0014] 考虑到上述各种因素,同一集群内会存在不同类型的计算节点。例如,很多实际的集群往往是由多种计算节点构成的,其中有偏重计算的节点,有偏重IO性能的节点,也有相对平衡的节点。
[0015] 针对当前集群内节点数量巨大,节点类型繁多,同时应用的需求各异的环境,现有技术中尚无有效的改进方案。

发明内容

[0016] 因此,需要一种改善调度吞吐率、适合各种不同类型的计算节点和应用需求的调度系统,以提高调度效率和扩展应用范围。为了克服现有技术中存在的上述一个或多个不足之处,本发明提供了一种在集群中调度任务的方法和系统。
[0017] 根据本发明的一个方面,提供一种在集群中调度任务的方法,所述集群包括多个计算节点,所述方法包括:定义构建所述多个计算节点的虚子集群的规则;基于所述规则,将所述集群中的多个计算节点构建成多个虚子集群,其中,一个计算节点只能归入一个虚子集群;将接收到的任务分发至一个选择的虚子集群;在所述选择的虚子集群中,为所述分发的任务调度至少一个计算节点。
[0018] 根据本发明的另一方面,提供一种在集群中调度任务的系统,所述集群包括多个计算节点,所述系统包括:规则定义器,用于定义构建所述多个计算节点的虚子集群的规则;虚子集群管理器,配置用于基于所述规则,将所述集群中的多个计算节点构建成多个虚子集群,其中,一个计算节点只能归入一个虚子集群;分发器,配置用于将接收到的任务分发至一个选择的虚子集群;子调度器,配置用于在所述选择的虚子集群中,为所述分发的任务调度至少一个计算节点。
[0019] 利用本发明的方案,可以获得诸多优势。例如,根据本发明的实施方式,将集群内的计算节点构建为多个虚子集群。很明显,虚子集群的数量远远低于集群内计算节点的总数量,因此能够将任务快速分发至虚子集群以进一步处理。而在每个虚子集群中,虚子集群内的计算节点的数量也可以控制在合适的数量,因而可以大大提高调度吞吐率。
[0020] 进一步地,可以根据任务特征和/或各个虚子集群的特征对任务进行快速分发,因而可以将不同类型的任务分发至最适合该任务的虚子集群进行调度。而且,在各个虚子集群中,可以有自己的调度策略,从而进一步提高调度效率和计算节点的利用率。
[0021] 总而言之,本发明通过构造虚子集群的方法为在不同类型的计算节点间使用灵活的调度策略提供了一种途径。本发明有利于改善任务调度的吞吐率;更容易将现有调度系统扩展至大规模复杂集群;并且对于不同类型的应用和计算节点能够更灵活应用不同的调度策略。

附图说明

[0022] 参考以下结合附图的详细说明后,本发明的特征、优点以及其它方面将变得更加明显,其中在附图中:
[0023] 图1示出了现有技术中在单个集群调度系统中采用的典型调度方式;
[0024] 图2示出了根据本发明的实施方式、在集群中为任务来调度一个或多个计算节点的方法流程图;
[0025] 图3示出了根据本发明实施方式的分发方式的示意图;
[0026] 图4a-4c示出了重组虚子集群的示意图;
[0027] 图5示出了根据本发明实施方式的系统架构图;
[0028] 图6示出了可以实现本发明的计算机系统。
[0029] 请注意,在全部附图中,若存在的话,相同的参考标记表示相同的部件。

具体实施方式

[0030] 在以下的详细描述中,为了便于全面理解本发明,通过示例的方式说明了许多特定的细节。不过本领域技术人员可以很清楚,本发明也可以不需要这些细节就能实现。此外,为了更加清楚地解释本发明,在某些示例中,公知的方法、处理、元件和电路仅仅是进行了概括性地描述,而没有详细说明。以下结合附图对本发明进行更详细的解释和说明。应当理解,本发明的附图及实施示例仅用于示例性作用,不是用于限制本发明的保护范围。
[0031] 考虑到在同一集群内会存在不同类型的计算节点,在集群中调度任务时,若采用统一的调度策略在不同类型的计算资源上调度,其调度效率会受到很大影响。
[0032] 以前面提到的气象预报应用为例。在预处理阶段,通常不需要过多的节点,但对于节点的磁盘IO性能有很高的要求。而在计算阶段,虽然对磁盘IO性能也有要求,但更重要的却是数值计算能力和网络通讯IO的要求,并且对参与计算的节点数目的要求也极大。
[0033] 因而,在预处理阶段,通常将任务调度给磁盘IO性能特别突出的巨型节点。在计算阶段,通常将任务调度给数量巨大的偏重于数值计算的节点。
[0034] 但是,由于系统只使用单一的调度策略,例如在大量的低成本节点上使用精细的调度策略,这往往不是很必要,并且导致效率降低。因此,当面临现代复杂的集群环境时,由于集群规模显著增大、计算任务的类型各式各样,需要改进现有的调度方式。
[0035] 鉴于在面对当前复杂的集群环境时,现有技术中存在的多种不足,本发明通过将集群内的计算节点构造成多个虚子集群,能够有效提高调度吞吐率。进一步地,虚子集群的构造还为在计算节点之间使用灵活的调度策略提供了一种途径。各个虚子集群可以有自己适合的调度策略,以便提高调度效率。
[0036] 在本发明的实施方式中,用户可以察觉不到这些虚子集群。换言之,这些虚子集群可以是对用户透明的,因此称为“虚”子集群。很明显,本领域技术人员可以意识到,本发明的虚子集群也可以对用户不透明。
[0037] 图2示出了根据本发明的实施方式、在集群中为任务调度至少一个计算节点的方法流程图。
[0038] 方法在步骤S200处开始。由于随着技术的发展,集群的规模日益庞大,并且集群内的计算节点的类型繁多。因此,在步骤S201中,定义构建计算节点的虚子集群的规则。继而,在步骤S202中,基于所定义的规则,将集群中的多个计算节点构建成多个虚子集群。在基于所定义的规则,构建了各个虚子集群之后,继而,在步骤S203中,将接收到的任务分发至一个选择的虚子集群。在步骤S204中,在虚子集群内为任务调度至少一个调度节点。之后,本发明的方法可以在步骤S205中结束。
[0039] 关于图2的“定义构建计算节点的虚子集群的规则”这一步骤S201,可以考虑利用计算节点的特征,计算节点的特征可以包括很多方面,例如可以简单地划分为两类:计算节点的静态特征和动态特征。
[0040] 从数量方面上,静态特征可以包括诸如CPU的数量、内存的大小、磁盘空间大小之类的特征。从类型方面上,静态特征可以包括CPU的类型、网络类型、操作系统(OS)类型等特征。
[0041] 动态特征可以包括平均CPU负载、I/O负载等。动态特征还可以包括诸如度量机器的可靠性的平均故障间隔时间(MTBF)以及平均替代率(ARR)等。
[0042] 在本发明的一种实施方式中,定义构建计算节点的虚子集群的规则包括:定义虚子集群的进入规则。当某个计算节点满足给定虚子集群的进入规则,则将该计算节点归入此给定虚子集群。针对集群内的所有计算节点,根据各个虚子集群的进入规则,为每个计算节点找到其所属的虚子集群。
[0043] 在一种实施方式中,如果一个计算节点满足多个虚子集群的进入规则,则随机地或者按照指定的优先级顺序或者按照用户自定义的策略将该计算节点归入所满足的多个虚子集群之一,也就是说,一个计算节点只能归入一个虚子集群。
[0044] 在又一种实施方式中,存在一个特殊的默认虚子集群。如果某个计算节点不满足任何一个虚子集群的进入规则,则将该计算节点归入该默认虚子集群中。
[0045] 应当指出,尽管在本说明书中采用了“一种实施方式”、“又一种实施方式”、“另一种实施方式”等诸如此类的表述,但是本领域技术人员可以很容易理解,在不冲突的情况下,各个实施方式的特征可以结合使用。
[0046] 在实际的运行过程中,计算节点的状态会改变。例如,如果某个计算节点被选择以运行计算密集型任务,其可用的资源(例如CPU、内存和磁盘空间等)会减少,可能不再适合于计算密集型的任务。
[0047] 因此,在一种实施方式中,可以定义虚子集群的退出规则以重新构建虚子集群。响应于虚子集群内的计算节点由于状态发生变化,使得满足虚子集群的退出规则,将计算节点从该虚子集群中移出。
[0048] 显然,本领域技术人员也可以采取其他方式来解决计算节点的状态改变的问题。例如,在一种可选实施方式中,不另外定义退出规则,而是仅使用进入规则。响应于计算节点的状态改变,使得不再满足其当前所属虚子集群的进入规则,将该计算节点从当前所属虚子集群中移出。
[0049] 针对移出后的计算节点的当前状态,重新根据各虚子集群的进入规则,确定该被移出的计算节点属于哪个虚子集群,并将其归入到所确定的虚子集群中。
[0050] 通过上述定义的进入规则和/或退出规则,可以实现虚子集群的动态组织。
[0051] 以下给出构建计算节点的虚子集群的示例。
[0052] 例如,在主要应用于气象预报的集群内,可以将适合磁盘IO的节点组合成一个虚子集群,适合于数值计算的节点组合成另一个虚子集群。
[0053] 又例如,在学校的计算中心,通常会处理一些计算密集型的计算任务,也会处理一些学生或老师的实验应用。因而可以制定如下用于组织虚子集群的进入规则和退出规则。
[0054] 虚子集群1是针对计算密集型计算任务,其进入规则例如可以定义为:可用的CPU不少于16个、内存不低于32G并且网络带宽不少于10G。用编程语言描述如下;
[0055] (free CPU>=16)AND(Memory>=32G)AND(network bandwidth>=10G)[0056] 虚子集群1的退出规则例如可以定义为:可用的CPU不超过2个。用编程语言描述如下:
[0057] (free CPU<=2)
[0058] 虚子集群2是针对学生或者老师做实验或者调试程序。因此,其进入规则例如可以定义为:可用的CPU不超过4个,并且内存不超过4G。描述如下:
[0059] (free CPU<=4)AND(Memory<=4G)
[0060] 虚子集群2的退出规则例如可以定义为可用CPU不少于8个,即:
[0061] (free CPU>=8)
[0062] 根据构建虚子集群的规则,可以获知构成此虚子集群的节点的特征。例如,节点数目、节点的计算性能特征(例如,包括但不限于CPU类型、数目、拓扑,图形处理器GPU,加速器,等等)、节点的IO性能特征(例如内存、外存、通信系统等)、节点的操作系统类型。根据虚子集群的构建规则,可以归纳出虚子集群的不同特征并进行分类。
[0063] 下面通过示例进一步阐述各种不同的虚子集群。然而,本领域技术人员可以理解,所描述的示例仅仅是用于帮助理解本发明的思想,而不是要将本发明限制在这些示例性的应用中。
[0064] 例如,根据虚子集群的特征,可以分出如下类型:
[0065] -AIX虚子集群:其中节点的操作系统是AIX。
[0066] -64路Power虚子集群:其中每节点都有64路Power CPU。
[0067] -BlueGene虚子集群:其中节点为BlueGene类型。
[0068] -InfiniBand双网络虚子集群:其中每节点都连接到2个InfiniBand网络上并保持互通。
[0069] 图3通过示意图示出了根据本发明实施方式的分发过程。同时,在图3中,示意性地给出了三个虚子集群。例如,虚子集群304由支持AIX操作系统的AIX节点构成。虚子集群305由具有大内存的计算节点构成。虚子集群306由支持预留的计算节点构成。
[0070] 如图3所示,任务队列中的任务301进入调度系统以请求资源。分发器302将接收到的任务301分发至一个选择的虚子集群。
[0071] 分发器302的分发方式有多种。在本发明的一种实施方式中,分发器302可以设定为“在所有虚子集群间轮转分发任务”。当分发器302接收到提交的任务301时,可以简单地按照轮转方式分发给一个选择的虚子集群。然后,由所选择的虚子集群为任务301进行下一步的处理。很明显,分发器302也可以设定为在所有虚子集群间按照随机方式或者其他用户自定义方式分发任务。
[0072] 由于根据本发明的实施方式,集群内的大量计算节点被构建为多个虚子集群。显然,虚子集群的数量大大低于计算节点的总数量。因此,分发器302能够快速地将接收到的任务分发到一个选择的虚子集群以进一步处理。
[0073] 在本发明的另一种实施方式中,考虑到不同的任务对资源的需求不同,因此可以根据任务的特征来将任务分发至选择的虚子集群。
[0074] 例如,在电子设计自动化(EDA)领域中,有些计算应用是由大量短小的串行程序(诸如仿真)组合而成的。此类任务对参与计算的资源大多有如下要求:单一的计算节点;计算节点的CPU数目通常无须过多,例如1路或2路即可。此外,由于以串行任务为主,因而计算节点之间没有过多的带宽和延迟需求。但是,由于此类应用任务量比较大,因此对调度系统的吞吐率有很高的要求。
[0075] 又如,在前述气象预报应用中,完整的过程通常包括预处理阶段、计算阶段以及一定的数据后处理阶段。可以将气象预报的不同阶段描述为多个任务,以工作流的形式串接起来。各个执行阶段的任务对资源的需求不同。
[0076] 在预处理阶段中,需要输入大量观测数据,诸如卫星云图数据、气象雷达数据等等。相应地,要求计算节点具有高的IO性能。
[0077] 计算阶段多为计算密集型并行程序。作为预报应用,计算过程也有一定的时间限制。因而,此类任务对节点通常有如下要求:计算节点的数目匹配应用需求,例如根据不同的精度要求,可能需要64个或者128个节点;每节点的CPU数目匹配应用需求,例如需要4路、8路或32路等;节点之间通讯系统的带宽必须高于某个量级(诸如2Gb)、延迟必须小于某个量级;节点一般不共享等等。
[0078] 鉴于上述差异,在本发明的此实施方式中,在提交任务时,可以要求对任务的特征进行描述。描述信息例如包括但不限于以下内容。例如,任务的来源(任务来自某个用户、某个组或某个域)、任务的执行体、启动位置、预计执行时间、启动环境等。具体地,启动环境可以包括所需计算节点的数目、节点的计算性能、节点的IO性能等等。
[0079] 通过这些描述,可以归纳出任务的不同特征并进行分类。下面通过示例进一步阐述各种不同的任务。然而,本领域技术人员可以理解,所描述的示例仅仅是用于帮助理解本发明的思想,而不是要将本发明限制在这些示例性的应用中。
[0080] 例如,根据任务的特征,可以分出如下类型:
[0081] -实验类任务,作为非限制性实例,例如可以描述任务来源于“学生”组或者其他组。而且,还可以描述任务来源于“研究”域或者“生产”域。
[0082] -计算密集型任务,其对节点数目的需求量大,诸如超过1024个节点;而且要求每节点的CPU数量多,诸如4路以上。
[0083] -数据密集型任务,其对共享存储空间的需求大,例如要求大于1TB,对每节点的外存空间需求也大,例如大于16G,而且对IO带宽要求高。
[0084] -通信密集型任务,要求节点之间全线速互通,并且在节点之间有通信冗余保证。
[0085] -AIX类任务,此类任务的执行体是为AIX系统编译的,要求节点的操作系统是AIX。
[0086] -x86类任务,其要求节点的CPU体系结构是x86。
[0087] 根据此实施方式,如图3所示,任务301在任务队列中排队等候分发,分发器302可以根据接收到的任务的特征执行分发。例如,可以将分发器302设定为“根据任务的来源,按比例在所有虚子集群间轮转分发任务”。具体地,分发器302可以根据任务的两种来源,例如“生产”域和“研究”域,将任务按照2∶1的比例、在所有虚子集群间、按照轮转方式分发给某个选择的虚子集群。通常“生产”域的任务比“研究”域的任务对时间有更高的要求。因而,在此实施方式中,能够保证“生产”域的任务有更高的吞吐率。
[0088] 类似地,也可以将轮转方式替换为随机方式或者其他用户自定义方式。
[0089] 在本发明的又一种实施方式中,考虑到通常构成各个虚子集群的计算节点的资源特征不尽相同,可以根据虚子集群的特征或类型来将接收到的任务分发至一个选择的虚子集群。
[0090] 根据此实施方式,如图3所示,任务301在任务队列中排队等候分发,分发器302根据虚子集群的特征执行分发。例如,可以将分发器302设定为“在空闲节点数大于10个的虚子集群间轮转分发任务”。具体地,分发器302接收到提交的任务301,不考虑任务的特征,将其按照轮转方式分发到空闲节点大于10个的虚子集群中。此实施方式在常规的轮转基础上,相对于上一实施方式提高了节点的利用率。
[0091] 同样,也可以将轮转方式替换为随机方式或者其他用户自定义方式。
[0092] 在本发明的再一种实施方式中,基于任务的特征以及虚子集群的特征执行分发。也即,综合前面两个实施方式的特点。
[0093] 在此实施方式中,如图3所示,任务301在任务队列中排队等候分发,分发器302根据接收到的任务的特征以及虚子集群的特征执行分发。例如,可以将分发器302设定为“在所有虚子集群间按照轮转方式分发‘研究’域的任务;在空闲节点数大于10个的虚子集群间按照轮转方式分发‘生产’域的任务”。具体地,分发器302接收到提交的任务301,按照任务的来源,如果是“研究”域的任务,则在所有虚子集群间按照轮转方式分发;如果是“生产”域的任务,则在空闲节点大于10个的虚子集群间按照轮转方式分发。此实施方式既保证了“生产”域任务的吞吐率,又提高了节点的利用率。
[0094] 从前面的分析可知,不同类型的计算节点,其通常适用的调度策略是有差异的。因而,在本发明的一种实施方式中,每个虚子集群可以有自己的调度策略。在各个虚子集群中,按照各自的调度策略为所分发的任务调度至少一个计算节点。
[0095] 例如,对于诸如64路Power服务器之类的巨型计算节点,其单节点的计算、存储、容错等能力都很强,并且各种附加特性比较丰富。因而此类节点一般比较昂贵。相应的调度策略通常偏重于精细化以提高资源利用率,诸如作业回填(Backfill)调度策略,专门针对BlueGene的调度策略,等等。
[0096] 而对于低成本计算节点,其单节点的计算、存储、容错等能力相对不是很强,并且附加特性少。但是,由于成本低,因此此类计算节点的数量巨大,相应的调度策略一般偏重于粗犷,诸如轮转(Round Robin)调度策略。
[0097] 此外,用户还可以根据虚子集群中计算节点的特征,自定义调度策略。
[0098] 对于虚子集群来说,所分发到的任务的类型有可能随着时间而不同,例如,在分发器设定为“在所有虚子集群间轮转分发任务”的情况下。在本发明的另一种实施方式中,不同的虚子集群的调度策略可以根据所分发到的任务的特征而进行设定或调整。
[0099] 现有技术中已经存在针对各种任务的优化调度策略。例如,针对并行任务的调度策略、针对串行任务的调度策略、针对实时任务的调度策略以及针对非实时任务的调度策略等等。例如,Backfill调度策略是一种实现针对大型的并行任务的调度策略;RM调度策略是一种用于实现针对实时应用的调度策略,基于队列优先级的先进先出(FIFO)调度策略用于实现串行任务的调度策略等等。此外,用户也可以针对任务的特征,自己定义调度策略。
[0100] 当任务在选择的虚子集群内进行调度时,由于虚子集群内的计算节点的数量明显低于整个集群内的计算节点的总数量,因此,在各个虚子集群内的调度效率可以很高。另外,由于各个虚子集群可以有自己的调度策略(或者可以根据任务类型而设定或调整调度策略),因此,针对计算节点的特征和/或任务类型采用相应的调度策略,可以进一步提高调度效率以及计算节点的利用率。
[0101] 重新参考图2,关于步骤S204“在虚子集群内为任务调度节点”,在一种实施方式中,本发明的方法还包括步骤S206。响应于虚子集群的某个或某些计算节点被选择以运行所分发的任务,该计算节点会被消耗部分或者全部资源(诸如CPU、内存和磁盘空间),使得该计算节点不再满足于其原来所属虚子集群的要求。此外,有时候,计算节点即使没有运行任务,但是由于某些原因其状态也会发生变化。例如,网络连接断开,或者硬盘失效,都会引起计算节点的资源状态的变化。因此,在步骤S206中,响应于计算节点的状态变化,重组虚子集群。
[0102] 例如,以前面在步骤S202中构建的学校计算中心的虚子集群1为例。假设其中存在某个计算节点N,其特征包括:16个可用CPU、32G内存并且网络带宽超过10G。根据前面定义的虚子集群1的进入规则,可以将该计算节点归入虚子集群1中。
[0103] 当有一计算密集型任务请求资源并且被分发器分发至虚子集群1中时,计算节点N被虚子集群1的调度器选择以运行该任务。假设运行该任务需要占用14个CPU、28G内存。可以看出,在运行任务时,计算节点N的状态发生改变,其剩余可用的资源不再适合于计算密集型任务。
[0104] 根据本发明的一种实施方式,在步骤S206中,响应于计算节点的状态改变,基于所定义的规则重组虚子集群。本领域技术人员可以理解,可以通过定时收集计算资源的状态信息来判断计算资源的状态是否改变,也可以通过计算资源运行任务这一事件的触发来判断计算资源的状态改变。
[0105] 基于在步骤S201中所定义的规则,在一种实施方式中,可以通过虚子集群的退出规则来重组虚子集群。继续前面的虚子集群1和虚子集群2示例。计算节点N的状态改变后,其可用CPU只剩下2个,内存4G,满足虚子集群1的退出规则。因此,计算节点N被移出虚子集群1。根据其他虚子集群的进入规则,确定此时的计算节点N满足虚子集群2的进入规则。因此,可以将计算节点N归入虚子集群2中。这样,计算节点N剩余可用的资源可以用于运行学生或老师的实验或调试任务,从而大大提高了资源的利用率。
[0106] 在任务执行完之后,所占用的资源会被释放。此时,计算节点N的状态再次发生改变。类似地,可以根据前面描述的本发明实施方式对虚子集群进行重组。
[0107] 图4a-图4c示出了根据本发明实施方式的重组虚子集群的示意图。
[0108] 图4a是t1时刻,虚子集群A的状态。在图中示例性地示出了3个计算节点1-3,其满足虚子集群A的进入规则并且包含在该虚子集群A中。
[0109] 图4b是在之后的t2时刻,虚子集群A的状态。在t2时刻,计算节点3的状态发生改变并且满足虚子集群A的退出规则。因此,计算节点3将从虚子集群A移出。
[0110] 图4c示出了t2+Δt时刻,虚子集群A的状态。在图中,计算节点3已经不包含在虚子集群A中。虚子集群管理器将为移出的计算节点3寻找另一适合的虚子集群。
[0111] 图5示出了根据本发明实施方式的在集群中调度任务的系统架构图。
[0112] 如图5所示,在本发明的一种实施方式中,调度系统500包括规则定义器501,其用于来定义构建虚子集群的规则。例如,可以包括虚子集群的进入规则、退出规则等。
[0113] 调度系统500还包括虚子集群管理器502,其配置用于基于规则定义器501中定义的规则,管理虚子集群的构建和重组。分发器503接收任务队列505中提交的任务,将接收到的任务快速分发至一个选择的虚子集群,也即分发至所选择的虚子集群的子调度器504。在一种实施方式中,分发器503基于虚子集群管理器502提供的有关各个虚子集群的特征的信息,将任务进行分发。在子调度器504中,按照各自的调度策略为分发的任务调度至少一个计算节点。
[0114] 资源管理器506负责维护集群507中的计算节点的特征和状态信息。计算节点的状态信息例如可以包括一个描述可用资源的属性列表。响应于子调度器504选择相应虚子集群内的计算节点执行任务,被选择的计算节点的可用资源会发生改变,也即计算节点的状态会发生改变。在本发明的一种实施方式中,子调度器504将有关所选择的计算节点的信息通知资源管理器506。资源管理器506更新计算节点的属性列表,并报告给虚子集群管理器502。虚子集群管理器502响应于计算节点的状态改变,按照前述方法重组虚子集群。
[0115] 尽管在图5中将规则定义器501、虚子集群管理器502、分发器503以及子调度器504等示出为分立的模块,但是本领域技术人员可以理解,这些模块可以进行任意的组合而不影响本发明的实现。此外,虚子集群管理器502也可以与资源管理器506进行组合。
[0116] 下面,将参考图6来描述可以实现本发明的计算机系统。图6示意性示出了可以实现根据本发明的实施方式的计算机系统的结构方框图。
[0117] 图6中所示的计算机系统包括CPU(中央处理单元)601、RAM(随机存取存储器)602、ROM(只读存储器)603、系统总线604、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示器控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。在这些部件中,与系统总线604相连的有CPU 601、RAM 602、ROM603、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器
608和显示器控制器609。硬盘610与硬盘控制器605相连,键盘611与键盘控制器606相连,串行外部设备612与串行接口控制器607相连,并行外部设备613与并行接口控制器
608相连,以及显示器614与显示器控制器609相连。
[0118] 图6中每个部件的功能在本技术领域内都是众所周知的,并且图6所示的结构也是常规的。图6所述的结构方框图仅仅为了示例的目的而示出的,并非是对本发明的限制。在一些情况下,可以根据需要添加或者减少其中的一些部件。
[0119] 此外,本领域技术人员可以理解,尽管本发明的各个方面可以作为框图、流程图或使用其它图示表示加以说明和描述,但可以理解,在此描述的这些模块、组件、设备、系统、技术或方法可以以作为非限制性实例的硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其它计算设备或其组合来实现。
[0120] 尽管本发明的教导是在具体实施的上下文中描述的,但对于本领域技术人员显而易见的是,在不脱离本发明精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。