基于应用特征的异构集群作业自适应调度方法和系统转让专利

申请号 : CN200910242094.2

文献号 : CN101739292B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李媛张涛张海阔李伟伟温鑫邵宗有

申请人 : 曙光信息产业(北京)有限公司

摘要 :

本发明提供一种基于应用特征的异构集群作业自适应调度方法和系统。其中,调度方法包括以下步骤:作业调度服务器收集异构集群的各个节点的硬件信息并根据各个节点的硬件信息将各个节点分成具有不同特征的节点组;作业调度中间件查询数据库中是否存储有当前提交的作业的运行特点;如果有,作业调度服务器根据运行特点将当前提交的作业提交到相应特征的节点组去运行;如果没有,作业调度服务器将当前提交的作业提交到任意节点组去运行,作业调度中间件记录当前提交的作业的运行数据并根据运行数据分析运行特点,将当前提交的作业的应用类型和运行特点存储到数据库中。本发明的方法和系统可以提高高性能软件的效率,提高异构集群的使用效率。

权利要求 :

1.一种基于应用特征的异构集群作业自适应调度方法,其特征在于,包括以下步骤:作业调度服务器收集异构集群的各个节点的硬件信息,并根据所述各个节点的硬件信息将所述各个节点分成具有不同特征的节点组;

作业调度中间件查询数据库中是否存储有当前提交的作业的运行特点;

如果有,所述作业调度服务器根据所述运行特点将所述当前提交的作业提交到相应特征的所述节点组去运行;如果没有,所述作业调度服务器将所述当前提交的作业提交到任意节点组去运行,所述作业调度中间件记录所述当前提交的作业的运行数据并根据所述运行数据分析所述运行特点,所述作业调度中间件将所述当前提交的作业的应用类型和所述运行特点存储到所述数据库中;

并且,在所述作业调度服务器根据所述运行特点将所述当前提交的作业提交到相应特征的所述节点组去运行之后,所述作业调度中间件记录所述当前提交的作业的运行数据并将所述运行数据与所述当前提交的作业的历史运行数据累加之后重新分析所述运行特点,然后更新所述数据库中存储的所述当前提交的作业的所述运行特点。

2.根据权利要求1所述的调度方法,其特征在于,所述运行数据包括内存使用量、进程数、使用的节点数、使用的各节点内存、内存占用率阈值、单进程内存占用量阈值、运行时间和CPU占用时间。

3.根据权利要求2所述的调度方法,其特征在于,所述运行特点包括内存密集型和CPU密集型。

4.根据权利要求3所述的调度方法,其特征在于,所述内存密集型是指所述内存使用量与所述使用的各节点内存之和的比值大于90%并且所述内存使用量与所述进程数的比值大于1G;所述CPU密集型是指所述CPU占用时间与所述运行时间的比值大于90%。

5.根据权利要求3或4所述的调度方法,其特征在于,所述具有不同特征的节点组包括内存大的节点组和CPU多的节点组;如果所述当前提交的作业的所述运行特点为所述内存密集型,所述作业调度服务器就将所述当前提交的作业提交到所述内存大的节点组去运行;如果所述当前提交的作业的所述运行特点为所述CPU密集型,所述作业调度服务器就将所述当前提交的作业提交到所述CPU多的节点组去运行。

6.一种基于应用特征的异构集群作业自适应调度系统,其特征在于,包括:

分组模块,用于收集异构集群的各个节点的硬件信息,并根据所述各个节点的硬件信息将所述各个节点进行分成具有不同特征的节点组;

查询模块,用于查询数据库中是否存储有当前提交的作业的运行特点;

提交模块,用于根据所述运行特点将所述当前提交的作业提交到相应特征的所述节点组上去运行;

记录模块,用于记录所述当前提交的作业的运行数据;

分析模块,用于分析所述运行数据得出所述运行特点,并更新所述数据库中所述当前提交的作业的所述运行特点,其中,如果所述查询模块未查询到所述数据库中存储有当前提交的作业的运行特点,则所述提交模块根据默认的调度策略调度分配所述当前提交的作业;

并且,所述分析模块是将所述当前提交的作业的所述运行数据与所述当前提交的作业的历史运行数据累加之后重新分析所述运行特点。

7.根据权利要求6所述的调度系统,其特征在于,所述运行数据包括内存使用量、进程数、使用的节点数、使用的各节点内存、内存占用率阈值、单进程内存占用量阈值、运行时间和CPU占用时间。

8.根据权利要求7所述的调度系统,其特征在于,所述运行特点包括内存密集型和CPU密集型,所述内存密集型是指所述内存使用量与所述使用的各节点内存之和的比值大于

90%并且所述内存使用量与所述进程数的比值大于1G,所述CPU密集型是指所述CPU占用时间与所述运行时间的比值大于90%。

说明书 :

基于应用特征的异构集群作业自适应调度方法和系统

技术领域

[0001] 本发明涉及计算机技术高性能领域,尤其涉及一种基于应用特征的异构集群作业的自适应调度方法和系统。

背景技术

[0002] 集群是计算机集群的简称,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。集群中的单个计算机通常称为节点。集群通常用来改进单个计算机的计算速度和/或可靠性。
[0003] 高性能领域业务软件的运行特点千差万别,对集群的资源要求不一样,有的是计算密集型,需要很高的CPU处理速度,有的是I/O密集型,需要很高的硬盘I/O速率和换页率。而传统的集群作业调度方法无论是先来先服务(即哪个作业先到就先运行哪个作业),还是优先级(即哪个作业的优先级高就运行哪个作业),还是回填,都没有充分考虑高性能软件自身的运行特点和异构集群的物理资源。也就是说,传统的集群作业调度方法选择使用什么样节点去运行作业与高性能软件没有关系,这样会导致高性能软件的效率降低,导致异构集群的使用效率降低。而效率恰恰是高性能软件的核心指标。同样,使用效率也是异构集群的重要指标。

发明内容

[0004] 针对现有技术中集群作业调度方法存在的没有考虑高性能软件运行特点和异构集群的特点导致高性能软件的效率降低、异构集群使用效率降低的问题,本发明的目的在于提供一种基于应用特征的集群作业自适应调度方法和系统,以解决上述问题中的至少之一。
[0005] 为实现上述目的,根据本发明的一个方面,提供了一种基于应用特征的异构集群作业自适应调度方法,包括以下步骤:作业调度服务器收集异构集群的各个节点的硬件信息,并根据各个节点的硬件信息将各个节点分成具有不同特征的节点组;作业调度中间件查询数据库中是否存储有当前提交的作业的运行特点;如果有,作业调度服务器根据运行特点将当前提交的作业提交到相应特征的节点组去运行;如果没有,作业调度服务器将当前提交的作业提交到任意节点组去运行,作业调度中间件记录当前提交的作业的运行数据并根据运行数据分析运行特点,作业调度中间件将当前提交的作业的应用类型和运行特点存储到数据库中。
[0006] 根据本发明,在作业调度服务器根据运行特点将当前提交的作业提交到相应特征的节点组去运行之后,作业调度中间件记录当前提交的作业的运行数据并将运行数据与当前提交的作业的历史运行数据累加之后重新分析运行特点,然后更新数据库中存储的当前提交的作业的运行特点。
[0007] 根据本发明,运行数据包括内存使用量、进程数、使用的节点数、使用的各节点内存、内存占用率阈值、单进程内存占用量阈值、运行时间和CPU占用时间。
[0008] 根据本发明,运行特点包括内存密集型和CPU密集型。
[0009] 根据本发明,内存密集型是指内存使用量与使用的各节点内存之和的比值大于90%并且内存使用量与进程数的比值大于1G;CPU密集型是指CPU占用时间与运行时间的比值大于90%。
[0010] 根据本发明,具有不同特征的节点组包括内存大的节点组和CPU多的节点组;如果当前提交的作业的运行特点为内存密集型,作业调度服务器就将当前提交的作业提交到内存大的节点组去运行;如果当前提交的作业的运行特点为CPU密集型,作业调度服务器就将当前提交的作业提交到CPU多的节点组去运行。
[0011] 相应地,本发明提供了一种基于应用特征的异构集群作业自适应调度系统,包括:分组模块,用于收集异构集群的各个节点的硬件信息,并根据各个节点的硬件信息将各个节点进行分成具有不同特征的节点组;查询模块,用于查询数据库中是否存储有当前提交的作业的运行特点;提交模块,用于根据运行特点将当前提交的作业提交到相应特征的节点组上去运行;记录模块,用于记录当前提交的作业的运行数据;分析模块,用于分析运行数据得出运行特点,并更新数据库中当前提交的作业的运行特点。
[0012] 根据本发明,运行数据包括内存使用量、进程数、使用的节点数、使用的各节点内存、内存占用率阈值、单进程内存占用量阈值、运行时间和CPU占用时间。
[0013] 根据本发明,运行特点包括内存密集型和CPU密集型,内存密集型是指内存使用量与使用的各节点内存之和的比值大于90%并且内存使用量与进程数的比值大于1G,CPU密集型是指CPU占用时间与运行时间的比值大于90%。
[0014] 根据本发明,分析模块是将当前提交的作业的运行数据与当前提交的作业的历史运行数据累加之后重新分析运行特点。
[0015] 借助本发明上述至少一个技术方案,通过将异构集群的各个节点根据硬件信息分成具有不同特征的节点组,调度服务器根据当前提交的作业的运行特点将当前提交的作业提交到相应特征的节点组去运行。这样充分考虑了作业和异构集群自身的特点,由适合运行该作业的节点组来运行,一方面提高了作业运行的效率,对于包含许多作业的高性能软件来说,提高了高性能软件的效率,同时也提高了异构集群的使用效率。而作业调度中间件记录作业的每次运行数据,并且在该作业每次运行完毕之后将该作业的运行数据与该作业的历史运行数据累加,重新分析该作业的运行特点,从而不断校正,提高作业和运行节点组匹配的准确度。

附图说明

[0016] 图1是本发明的基于应用特征的异构集群作业自适应调度方法的流程图;
[0017] 图2是应用本发明的方法的异构集群的拓扑结构示意图;
[0018] 图3是本发明的基于应用特征的异构集群作业自适应调度系统的结构示意图。

具体实施方式

[0019] 如图1所示,本发明的基于应用特征的异构集群作业自适应调度方法包括以下步骤:S110,作业调度服务器收集异构集群的各个节点的硬件信息,并根据各个节点的硬件信息将各个节点分成具有不同特征的节点组;S120,作业调度中间件查询数据库中是否存储有当前提交的作业的运行特点;S130,如果有,作业调度服务器根据运行特点将当前提交的作业提交到相应特征的节点组去运行;如果没有,作业调度服务器将当前提交的作业提交到任意节点组去运行,作业调度中间件记录当前提交的作业的运行数据并根据运行数据分析运行特点,将当前提交的作业的应用类型和运行特点存储到数据库中。
[0020] 在步骤S110中,收集的异构集群的各个节点的硬件信息至少包括各个节点的CPU的信息(如CPU的主频、型号)和各个节点的内存的信息。作业调度服务器根据各个节点的硬件信息将各个节点进行分组,硬件信息相同或特点相同的节点归为一组,例如将CPU多的节点分为一组,将内存大的节点分为一组,从而将异构集群的各个节点分成具有不同硬件特征的节点组。
[0021] 在步骤S120中,作业调度中间件查询专门用于存储作业应用类型和运行特点的数据库,看是否存储有当前提交的作业的应用类型和运行特点,一般情况下,应用类型相同的作业运行特点也相同。
[0022] 在步骤S130中,如果数据库中存储有当前提交的作业的运行特点,作业调度中间件将该运行特点通知作业调度服务器,作业调度服务器根据该运行特点将当前提交的作业提交到相应特征的节点组去运行;如果数据库中没有存储当前提交的作业的运行特点,作业调度服务器将根据默认的调度策略将当前提交的作业提交到节点组去运行,作业调度中间件记录当前提交的作业的运行数据并根据运行数据分析运行特点,然后将当前提交的作业的应用类型和运行特点存储到数据库中。其中,运行数据包括内存使用量、进程数、使用的节点数、使用的各节点内存、内存占用率阈值、单进程内存占用量阈值、运行时间和CPU占用时间。每次作业在运行完之后,作业调度中间件都会记录下运行数据。作业调度中间件将当前提交的作业的运行数据与当前提交的作业的历史运行数据累加之后重新分析当前提交的作业的运行特点,然后更新数据库中存储的该作业的运行特点。也就是说,该作业每运行一次,作业调度中间件记录一次运行数据,并将此次运行数据与该作业以往的历次运行数据累加,然后重新分析该作业的运行特点。这样可以防止只根据一次运行数据得出的运行特点可能出现的偏差,这是一个不断校正的过程。该作业多次运行之后,作业调度中间件对该作业的运行特点的分析将更加准确。运行特点包括内存密集型和CPU密集型。其中,内存密集型是指内存使用量与使用的各节点内存之和的比值大于90%并且内存使用量与进程数的比值大于1G;CPU密集型是指CPU占用时间与运行时间的比值大于90%。内存使用量是指该类型作业的所有的进程用到的内存之和。
[0023] 高性能软件运行过程中会有多个作业需要提交到节点上去运行,通过选择最合适作业的节点组来运行可以提高高性能软件的运行效率。在实际应用中,高性能软件也可以通过web界面(网络界面)提交到服务器端。如图2所示,异构集群包括服务器端和节点组,异构集群的管理节点作为异构集群的作业调度服务器,也即图2中所示的服务器端,服务器端运行一个web服务器,客户端可以通过web浏览器连接到web服务器,与web服务器进行交互,与服务器端相连的每个节点组都具有一定的特征,在客户端上运行高性能软件,客户端产生的作业由服务器端进行调度,服务器端根据作业的特征,将该作业提交到相应特征的节点组去运行。
[0024] 相应地,本发明提供了一种基于应用特征的异构集群作业自适应调度系统。如图3所示,本实施例的基于应用特征的异构集群作业自适应调度系统,包括:分组模块210,用于收集异构集群的各个节点的硬件信息,并根据各个节点的硬件信息将各个节点进行分成具有不同特征的节点组;查询模块220,用于查询数据库中是否存储有当前提交的作业的运行特点;提交模块230,用于根据运行特点将当前提交的作业提交到相应特征的节点组上去运行;记录模块240,用于记录当前提交的作业的运行数据;分析模块250,用于分析运行数据得出运行特点,并更新数据库中当前提交的作业的运行特点。
[0025] 分组模块210,首先收集异构集群的各个节点的硬件信息,包括各个节点的CPU的信息(如CPU的主频、型号)和各个节点的内存的信息;然后根据各个节点的硬件信息将各个节点进行分组,硬件信息相同或特点相同的节点归为一组,例如将CPU多的节点分为一组,将内存大的节点分为一组,从而使异构集群的各个节点形成具有不同特征的节点组。
[0026] 查询模块220,查询专门用于存储作业应用类型和运行特点的数据库,看是否存储有当前提交的作业的应用类型和运行特点。
[0027] 提交模块230,用于根据查询模块查询出的当前提交的作业的运行特点将当前提交的作业提交到相应特征的节点组上去运行,
[0028] 记录模块240,记录每次作业的运行数据,因此当前提交的作业如果在后续再次提交运行,记录模块240会记录下该作业的两次的运行数据。
[0029] 分析模块250,用于分析记录模块240记录的运行数据,每次作业提交运行完毕,记录模块240记录下运行数据之后,分析模块250都会进行分析该作业的运行特点,在分析的时候,对于提交运行过多次的作业,分析模块250是将最新的运行数据和该作业的之前历次的运行数据累加之后进行分析,最后将最新分析得出的该作业的运行特点替换掉数据库中该作业原来存储的运行特点。这样,数据库中存储的该作业的运行特点是动态变化的,结果是趋于更准确的。因此,即使查询模块220查询数据库中没有当前提交的作业的运行特点,该作业被提交模块230默认提交到异构集群的某节点组上去运行,记录模块240记录下该作业的运行数据之后,分析模块250就可以分析得出该作业的运行特点,并将该作业的应用类型和运行特点存储到数据库中,当前提交的作业在这次运行之后再次需要提交时,查询模块220就可以查询到该作业的运行特点,如果该作业多次提交运行,记录模块240记录下多次运行数据,分析模块250据此分析得出的运行特点将趋于准确。
[0030] 其中,记录模块240记录的运行数据包括内存使用量、进程数、使用的节点数、使用的各节点内存、内存占用率阈值、单进程内存占用量阈值、运行时间和CPU占用时间。数据库中存储的运行特点包括内存密集型和CPU密集型。内存密集型是指内存使用量与使用的各节点内存之和的比值大于90%并且内存使用量与进程数的比值大于1G;CPU密集型是指CPU占用时间与运行时间的比值大于90%。内存使用量是指该类型作业的所有的进程用到的内存之和。
[0031] 借助本发明上述至少一个技术方案,通过将异构集群的各个节点根据硬件信息分成具有不同特征的节点组,调度服务器根据当前提交的作业的运行特点将当前提交的作业提交到相应特征的节点组去运行。这样充分考虑了作业和异构集群自身的特点,由适合运行该作业的节点组来运行,一方面提高了作业运行的效率,对于包含许多作业的高性能软件来说,提高了高性能软件的效率,同时也提高了异构集群的使用效率。而作业调度中间件记录作业的每次运行数据,并且在该作业每次运行完毕之后将该作业的运行数据与该作业的历史运行数据累加,重新分析该作业的运行特点,从而不断校正,提高作业和运行节点组匹配的准确度。
[0032] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。