一个大型的集群系统可能有上千个节点,会同时运行多个作业,完成不同的任务,如果不作很好的规划很有可能造成任务之间相互争夺集群的资源,最后即没有充分利用资源也无法按时完成。PBS就是专门调度集群任务的工具。
PBS(Portable Batch System)是由NASA开发的灵活的批处理系统。它被用于集群系统、超级计算机和大规模并行系统。PBS还有除了调度作业以外还能够管理集群的资源,如果对它作个简单总结,PBS主要有如下特征:
易用性:为所有的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略。
移植性:符合POSIX 1003.2标准,可以用于shell和批处理等各种环境。
适配性:可以适配与各种管理策略,并提供可扩展的认证和安全模型。支持广域网上的负载的动态分发和建立在多个物理位置不同的实体上的虚拟组织。
灵活性:支持交互和批处理作业。
PBS其实可以灵活地使用,它即可以被用来在单一节点的或大型集群上控制任务,也可以在多个系统之间均衡负载,还可以在多个节点的计算机上运行并行或串行的任务。以上这些在实际应用中也可以混合。
PBS主要分成三个部分:
PBS server:它运行在集群的服务器节点上,由它来控制事务并启动运行任务。
maui scheduler:Maui调度程序根据资源管理器得到各个结点上的资源状况和系统的作业信息生成一个优先级列表。
mom后台进程:每个节点上有一个mom后台进程,由这个进程真正启动和停止每个节点上的任务。
PBS的几个主要部件位于每个节点的{$OSCAR_HOME}/sbin目录中,到该目录你可以找到
Pbs_server是PBS的服务器,pbs_mom是mom后台进程,pbs_sched是调度程序。一般启动linux以后pbs_server服务器和pbs_mom后台守候进程就起来了,你使用ps命令可以查看:
#ps –ef grep pbs_
pbs_server有帮助文档可以查man pbs_server,仔细看过以后你会发现它有很多配置选项,比如指定默认节点的,也就是如果pbs找不到你指定的节点或者没有指定节点则使用,则使用default_node参数指定。可以使用pbs工具qmgr来改变server的设置:
Qmgr:s s default_node=big (s s表示set server)指定了default_node的值
使用PBS主要是以命令方式来定你的作业,它的命令的详细参考在linux里面可以使用man帮助查看,如果你要查看PBS关于资源限制的资料可以浏览pbs_resources帮助,如果想查看PBS服务器的配置可以浏览pbs_server_attribute帮助。所有的命令可以在{$OSCAR_HOME}/pbs/bin中找到,下面列出了几个PBS常用的命令及其功能:
qsub:此命令是向PBS提交你的任务。
Qdel:此命令是删除PBSd的作业。
qstat [-n]:显示当前作业状态和关联的节点。
pbsnodes [-a]:显示节点的状态。
Pbsdsh:分布式处理发射台。
在这里举个简单的例子让读者有点感性的认识,下面的提交作业是在节点X上起Y个VP中运行my_script.sh脚本,注意提交任务一定要有个运行任务的脚本。
$ qsub -N my_jobname -e my_stderr.txt -o my_stdout.txt -q workq -l
nodes=X:ppn=Y:all,walltime=1:00:00 my_script.sh
-N选项指定任务名字,-e指定标准错误输出文件,-o指定标准输出文件,-q 是队列名字,-l是后面是指定资源限制,这里指定了节点,VP个数,最大运行时间。节点定位需要详细介绍一下,nodes参数的等号后面是以“+”号相连的节点定义,每个定义之间的属性以“:”分开。一般是 node number:node name (略写):ppn= (VP个数):all (或者resource)。举个例子,比如2:red:ppn=2表示在节点名字有red的2台机器上,每个机器启动2个VP来运行任务。VP是虚拟的处理器,默认情况下一个CPU启动一个VP,但是你可以启动多个VP在一个CPU上面,PBS是以VP为处理单位的而不是真实的硬件CPU。
上面的命令提交一个任务以后,我们看它运行的脚本my_script.sh:
#!/bin/sh
echo Launchnode is ‘hostname‘
pbsdsh /path/to/my_executable
第一行将在输出文件打印出机器名字,让管理员知道是哪台计算机运行此脚本。后面是抛出运行的程序。
关于集群作业管理系统 Maui,PBS和Torque
Maui集群调度器是Moab集群套件前身,是一个开放源码的集群和超级计算机作业调度器(scheduler)。
PBS是一个用于作业分配的调度器(scheduler),其主要任务是分配批作业计算任务到现有的计算资源上。 以下版本的PBS系统目前可用:
OpenPBS:没有技术支持的原始开源版本; PBSPro(PBS专业版):由Altair Engineering发行和支持的商业版本; Torque:衍生的OpenPBS,由Cluster Resources Inc.发展,支持和维护
2009年6月21日星期日
订阅:
博文评论 (Atom)
没有评论:
发表评论