码迷,mamicode.com
首页 > 其他好文 > 详细

PBS

时间:2015-07-02 19:07:16      阅读:1396      评论:0      收藏:0      [点我收藏+]

标签:

PBS的组成

 

  • 服务器:     pbs_server
  • 调度器:     pbs_scheduler
  • 执行器:     pbs_mom
  • 命令行:     用户脚本,管理命令等

PBS的基本原理

 

PBS的优缺点:

符合POSIX 1003.2d 标准;支持系统级检查点功能(需底层操作系统支持);很好的大规模扩展性,独立的调度模块;支持使用其它调度器;支持作业依赖和用户映射;灵活性:支持交互,批处理,串行及并行作业;只支持Unix类操作系统;多集群协作功能有限。

节点(node) :一个单一的操作系统映像,一个统一的虚拟内存映像,一个或多个cpu,一个或多个IP地址的计算机系统被称之为一个节点。通常执行主机(execution host)也被称之为节点。

属性:队列、服务器和节点都有与自己相关的属性,这些属性提供控制信息。与节点相关的属性有:状态、类型、虚拟处理器的个数、作业列表(本节点被分配给的作业)以及节点的特性。

节点特性:为了提供一组节点的分配的方法,零个或者多个特性被赋给每个节点。这个特性不过是一串对于PBS没有含义的字母和数字的组合(第一个字符必须是字母)

PBS的使用步骤

  1. 准备:编写描述改作业的脚本,包括作业名,需要的资源等。
  2. 提交:使用qsub命令将该作业提交给PBS服务器
  3. 排队:服务器将该任务排入适当的队列
  4. 调度:服务器检查各工作节点的状态是否符合该作业的要求,并进行调度。
  5. 执行:当条件满足时,作业被发给相应的执行服务器执行。程序运行时执行服务器会收集程序的标准输出和标准错误流,等程序结束时,将这些信息返回给用户。
  6. 查询和调整:当作业在运行时,用户可以使用qstat进行状态查询。用户发现作业提交错误时,可以使用qdel删除正在运行的作业。
  7. 查看结果:使用文本编辑软件vi或者系统命令cat, less等查看输出及错误信息显示。

PBS的基本命令

PBS系统中,用户使用qsub 命令提交用户程序。用户运行程序的命令及PBS环境变量设置组成PBS作业脚本,作业脚本使用如下格式提交到PBS系统运行:

qsub <PBS作业脚本>

qsub -N test.vasp -l nodes=4:ppn=2 -q defaults <PBS作业脚本>

PBS 作业脚本

注释,以“#”开头

PBS运行参数,以“#PBS”开头

SHELL命令

#PBS -N vasp.Hg

#PBS -l nodes=4:ppn=4

#PBS -l walltime=05:00:00

#PBS -q high

 

echo "This jobs is "$PBS_JOBID@$PBS_QUEUE

cd $PBS_O_WORKDIR

mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp

脚本中#PBS为脚本选项,用于设置一些参数:

#PBS N   表示任务名称。name15个字符,首字符为字母,无空格。

#PBS l   表示资源列表,用于设定特定任务所需的一些参数。这里的nodes表示并行环境下可以使用的节点数,而walltime表示任务最大时限,而cput 表示cpu时间的最大时限,运行时间和cpu使用时间超过对应的时限,任务就会以超时退出。这三个参数不是PBS脚本参数,而是并行环境所需的参数。

#PBS -q    表示当前任务选用的队列。在并行环境下,一个系统中往往有多个队列,任务提交后,将在所选的队列中排除等候。系统中有哪些队列可以用qstat -q查看。

qsub运行参数

     

-a <作业开始运行的时间>

PBS系统指定作业运行的开始时间。

作业运行时间格式为:      [[[[CC]YY]MM]DD]hhmm[.SS]

-A <用户名>

使用不同的用户来提交作业,缺省使用当前用户名

-o <标准输出文件的路径>

-e <标准错误输出的路径>

该参数指定标准错误输出的位置,缺省的情况下,PBS系统把标准输出和标准

错误输出放在用户qsub命令提交作业的目录下。

标准错误输出:<作业名>.o<作业号>

标准错误输出:<作业名>.e<作业号>

路径使用如下格式标准:  [<节点名>:]<路径名>

-N <作业名>

指定提交的作业名

-q <目标队列>

指定作业提交的目标队列,其中目标队列可以是目标队列、目标节点名或者

是目标节点上的队列。如果目标队列是一个路由队列,那么服务器可能把

作业路由到新的队列中。如果该参数没有指定,命令qsub会把作业脚本

提交到缺省的队列中。

-l <申请资源列表>

该参数指定作业脚本申请的PBS系统资源列表。

申请资源列表使用如下格式:

         <资源名>[=[<数量>]][,资源名[=[<数量>]] …..]

例如作业希望申请在双路节点上申请5CPU资源的情况,

则可以在脚本中如下:

#PBS –l nodes=2:ppn=2+1:ppn=1

PBS的环境变量

     

登陆SHELL继承来的变量

包括$HOME$LANG$LOGNAME$PATH$MAIL$SHELL$TZ

$PBS_O_HOST

qsub提交的节点名称

$PBS_O_QUEUE

qsub提交的作业的最初队列名称

$PBS_O_WORKDIR

qsub提交的作业的绝对路径

$PBS_JOBID

作业被PBS系统指定的作业号

$PBS_JOBNAME

用户指定的作业名,可以在作业提交的时候用qsub –N <作业名>指定,或者

PBS脚本中加入

#PBS –N <作业名>

$PBS_NODEFILE

PBS系统指定的作业运行的节点名。该变量在并行机和

机群中使用。当在PBS脚本中用#PBS –l nodes=2:ppn=2指定程序运行的节点数

时,可以使用$PBS_NODEFILE在脚本中引用PBS系统指定的作业运行的节点名。比如:

#PBS –l nodes=2:ppn=2

mpirun –np 4 –machinefile $PBS_NODEFILE <程序名>

$PBS_QUEUE

PBS脚本在执行时的队列名

PBS作业脚本举例

# 这是一个串行作业脚本的例子

#PBS -N Loop.out

#PBS -l nodes=1:ppn=1

cd $HOME/test/

./a.out > $HOME/result/a.result

 

# 这是一个并行作业脚本的例子

#PBS -N vasp.Hg

#PBS -l nodes=8:ppn=2

#PBS -q low

echo "This jobs is "$PBS_JOBID@$PBS_QUEUE

cd $PBS_O_WORKDIR

mpirun -np 16 -machinefile $PBS_NODEFILE ./vasp

一个复杂的PBS作业脚本

#!/bin/bash

#PBS -N jobname

#PBS -l nodes=4:ppn=2

 

cat `echo $PBS_NODEFILE` > $HOME/$PBS_JOBID.nodes

for node in `cat $HOME/$PBS_JOBID.nodes`

   do

      rsh $node mkdir /tmp/$PBS_JOBID

      rsh $node cp -rf $PBS_O_WORKDIR/* /tmp/$PBS_JOBID/

   done

 

cd /tmp/$PBS_JOBID

mpirun -np 8 -machinefile $PBS_NODEFILE $HOME/bin/vasp

 

cp -rf /tmp/$PBS_JOBID/* $PBS_O_WORKDIR/

for node in `cat $HOME/$PBS_JOBID.nodes`

   do

      rsh $node rm -rf /tmp/$PBS_JOBID

   done

rm $HOME/$PBS_JOBID.nodes

指定节点特性

# 这是一个并行作业脚本的例子

#PBS -N vasp.Hg

#PBS -j oe

#PBS -l nodes=2:ppn=12:amd

#PBS -q low

 

echo "This jobs is "$PBS_JOBID@$PBS_QUEUE

NP=`cat $PBS_NODEFILE | wc -l`

cd $PBS_O_WORKDIR

mpirun -np $NP -machinefile $PBS_NODEFILE ./vasp

#PBS -l nodes=2:ppn=4:amd:chem

#PBS -l nodes=1:ppn=8:chem+1:ppn=8:bio

#PBS -l nodes=node1:ppn=8+node2:ppn=8

提交作业

vim  job.sh

添加“可执行命令”

qsub  job.sh

查询作业运行

作业提交后,会生成一个作业号,如:

[dawning@node1 ~]$ qsub test.pbs

93.node1

 

查看集群作业运行状态:

[dawning@node1 ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                     vasp             0    E   default

111.node1         structure                   amber            0    Q  default

Name:作业名称

User   用户名

Time  使用时间

S     作业状态(E:退出,H:挂起,Q:排队,R:运行,S:暂停)

Queue:队列       

查询作业运行

[dawning@node1 ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R   default

95.node1          vasp.Hg                     vasp             0    E   default

111.node1         structure                   amber             0   Q   default

 

查询某个作业运行状态:

qstat 93.node1 (或者 qstat 93)

 

显示作业运行在哪些节点上:

qstat -n 93.node1

 

显示作业运行详细信息:

qstat -f 93.node1

取消作业

[dawning@node1 ~]$ qstat

Job id               Name                     User          Time Use S  Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                      zhaocs           0    R  default

95.node1          vasp.Hg                      vasp             0    E   default

111.node1         structure                    amber             0    Q  default

[dawning@node1 ~]$ qdel 93.node1

作业挂起和取消挂起

[dawning@node1 ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                   vasp               0     E   default

111.node1         structure                   amber             0    Q  default

挂起作业:

qhold 111.node1

 

取消作业挂起

qrls 111.node1

更改作业属性

[dawning@node1 ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                   vasp               0     E   default

111.node1         structure                  amber              0    Q  default

更改作业运行队列:

qmove high 111.node1

 

更改作业资源属性:

qalter -l walltime=10:00:00 111.node1

交换作业排队顺序

[dawning@node1 ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                     vasp             0    E   default

111.node1         structure                   amber             0    Q  default

112.node1         gaussian                    gauss             0    Q   default

交换两个作业的排队顺序:

qorder 111.node1 112.node1

[dawning@node1 ~]$ qstat

Job id               Name                        User       Time Use S Queue

----------------   ----------------       ----------------           --------  -   -----

93.node1          test.pbs                    zhaocs            0    R  default

95.node1          vasp.Hg                   vasp               0     E   default

112.node1         gaussian                    gauss             0    Q   default

111.node1         structure                   amber             0    Q  default

作业依赖关系

PBS脚本中可以指定多个作业之间的依赖关系,比如作业提交前另一个作业必须完成,否则处于排队状态

#PBS -N step2

#PBS -l nodes=4:ppn=4

#PBS -q high

#PBS -W depend=after:<JOB_ID>

当指定作业非正常结束,作业才能提交

#PBS -N job_rerun

#PBS -l nodes=4:ppn=4

#PBS -q high

#PBS -W depend=afternotok:<JOB_ID>

Showq:可以查看任务的资源情况

tracejob命令:追踪作业的状态,语法是:tracejob –n(天数)  <jobID>,例子,tracejob -n4 6(查看4天内作业号为6的运行状态)

删除作业:qdel  6(id)

 

PBS

标签:

原文地址:http://www.cnblogs.com/shelly-family/p/4616589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!