本发明属于计算机技术领域,具体涉及高性能计算机集群的管理,尤其涉及清除torque计算集群计算节点中残留进程的方法及系统。
背景技术:
高性能计算可以用于数值分析和模拟实验,是公认的一种重要研究方法,是科学创新的重要手段。当前,高性能计算能力是一个国家的综合国力的体现,对国家战略有着重要的影响。
提升计算能力有两种方式:一是提升单机的计算能力,例如提升cpu的主频、采用众核技术或使用gpu计算等;另一种方法是同过高速网络(例如infiniband)来并行多台计算机。目前,高性能计算集群的搭建往往综合考虑上述两个因素,选一个性价比最高的方案,计算软件、计算结果都保存在文件存储系统中,以保证各节点数据的同步性。作业运行时,管理节点把任务分配到计算节点里进行计算,计算节点里对应产生一个计算进程。当计算完成后,计算节点里计算进程结束,管理节点再也查不到任务的状态。
在集群实际运行中,常常发现个别计算节点有计算进程在运行,但在管理节点查不到其运行状态。例如第s个计算节点有计算进程在运行,但管理节点认为第s个节点处于空闲状态。如果有新的任务,管理节点会继续向第s个节点提交任务,导致第s个节点多个计算进程同时运行,大大降低计算效率。这里,我们把管理节点查不到的计算进程,称为残留进程。造成残留进程的原因有很多,最主要的是用户程序编写不规范,其次是用户没有通过正确的方法提交计算任务,还有可能是系统bug。总之,残留计算进程严重影响正常的计算任务执行,要清除掉。急需一种快速、准确的清除计算节点中的残留进程的方法及系统。
技术实现要素:
本发明的目的在于克服上述的不足,提供了清除torque计算集群计算节点中残留进程的方法及系统,以解决残留进程对计算节点和torque计算集群的影响,保证任务的快速执行。
为了实现上述目的,本发明采用以下技术方案:
一种清除torque计算集群计算节点中残留进程的方法,包括以下步骤:
步骤1:从用户名列表文件中获取所有用户名,存入用户列表;
步骤2:获取当前所有计算节点中运行任务的用户名,存入关系数组;
步骤3:为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名;
步骤4:为每个计算节点删除残留进程;
步骤5:自动更新用户名列表文件。
优选地,在所述步骤1之前还包括:
为torque计算集群创建用户名列表文件。
优选地,在所述步骤4之后还包括:
记录每个计算节点删除残留进程的状况。
清除torque计算集群计算节点中残留进程的系统,包括:
第一获取模块,用于从用户名列表文件中获取所有用户名,存入用户列表;
第二获取模块,用于获取当前所有计算节点中运行任务的用户名,存入关系数组;
文件建立模块,用于为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名;
残留进程删除模块,用于为每个计算节点删除残留进程;
更新模块,用于自动更新用户名列表文件。
优选地,还包括:
创建模块,用于为torque计算集群创建用户名列表文件。
优选地,还包括:
记录模块,用于记录每个计算节点删除残留进程的状况。
与现有技术相比,本发明具有的有益效果:
本发明通过从用户名列表文件中获取所有用户名、并存入用户列表,然后获取当前所有计算节点中运行任务的用户名、并存入关系数组,然后为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名,最后为每个计算节点删除残留进程、自动更新用户名列表文件的方式,删除各torque计算集群各计算节点的残留进程,以此消除残留进程对计算任务的影响,使得计算任务在预定的时间内完成,规范了集群的使用。
附图说明
图1为本发明清除torque计算集群计算节点中残留进程的方法的基本流程示意图之一。
图2为本发明清除torque计算集群计算节点中残留进程的方法的基本流程示意图之二。
图3为本发明清除torque计算集群计算节点中残留进程的系统的结构示意图之一。
图4为本发明清除torque计算集群计算节点中残留进程的系统的结构示意图之二。
具体实施方式
为了便于理解,对本发明的具体实施方式中出现的部分名词作以下解释说明:
torque计算集群:一种常见的高性能计算集群作业管理系统。
管理节点:用于管理和分配计算资源的节点,一般集群只有一个。
计算节点:在集群中主要用于计算的节点,一般集群有很多个。
残留进程:管理节点中查不到的计算进程。
下面结合附图和具体的实施例对本发明做进一步的解释说明:
实施例一:
如图1所示,本发明的一种清除torque计算集群计算节点中残留进程的方法,包括以下步骤:
步骤s101:从用户名列表文件中获取所有用户名,存入用户列表;
步骤s102:获取当前所有计算节点中运行任务的用户名,存入关系数组;
步骤s103:为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名;
步骤s104:为每个计算节点删除残留进程;
步骤s105:自动更新用户名列表文件。
实施例二:
如图2所示,本发明的另一种清除torque计算集群计算节点中残留进程的方法,包括以下步骤:
步骤s201:为torque计算集群创建用户名列表文件user.list。
步骤s202:从用户名列表文件user.list中获取所有用户名,存入用户列表uli;
例如,假设系统中有10位用户:
uli=[user1,user2,user3,user4,user5,user6,user7,user8,user9,user10];
步骤s203:获取当前所有计算节点中运行任务的用户名情况,存入关系数组idic,格式为idic[节点名]=[用户列表];
例如,假设torque计算集群有16个计算节点,分别命名为节点1、节点2……节点16,以节点1、节点2、节点16为例:
idic[node1]=[user1,user3,user8];
idic[node2]=[user1,user4];
idic[node16]=[user5,user6]。
步骤s204:为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名;
例如:
node1文件中存入:user2,user4,user5,user6,user7,user9,user10;
node2文件中存入:user2,user3,user5,user6,user7,user8,user9,user10;
node16的文件中存入:user1,user2,user3,user4,user7,user8,user9,user10。
步骤s205:根据每个计算节点文件中当前在该计算节点没有任务执行的用户名,为每个计算节点删除残留进程;
例如:
node1下删除user2,user4,user5,user6,user7,user9,user10的所有进程;
node2下删除user2,user3,user5,user6,user7,user8,user9,user10的所有进程;
node16下删除user1,user2,user3,user4,user7,user8,user9,user10所有进程。
步骤s206:记录每个计算节点删除残留进程的状况,把每个计算节点删除残留进程的状况写入now.list,直至删除所有残留进程。
步骤s207:如果管理员新添加了用户,并且该用户处于执行任务状态,则自动更新用户名列表文件user.list。
实施例三:
如图3所示,本发明的一种清除torque计算集群计算节点中残留进程的系统,包括:
第一获取模块301,用于从用户名列表文件中获取所有用户名,存入用户列表;
第二获取模块302,用于获取当前所有计算节点中运行任务的用户名,存入关系数组;
文件建立模块303,用于为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名;
残留进程删除模块304,用于为每个计算节点删除残留进程;
更新模块305,用于自动更新用户名列表文件。
实施例四:
如图4所示,本发明的另一种清除torque计算集群计算节点中残留进程的系统,包括:
创建模块401,用于为torque计算集群创建用户名列表文件。
第一获取模块402,用于从用户名列表文件中获取所有用户名,存入用户列表;
第二获取模块403,用于获取当前所有计算节点中运行任务的用户名,存入关系数组;
文件建立模块404,用于为每个计算节点建立一个以计算节点名为文件名的文件,文件里存入当前在该计算节点没有任务执行的用户名;
残留进程删除模块405,用于为每个计算节点删除残留进程;
记录模块406,用于记录每个计算节点删除残留进程的状况。
更新模块407,用于自动更新用户名列表文件。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。