Torque PBS管理系统

PBS管理系统

(一)作业提交系统Torque个人安装总结(PBS)

PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一。 PBS的目前包括openPBS,PBS Pro和Torque三个主要分支。其中OpenPBS是最早的PBS系统,目前已经没有太多后续开发,PBS pro是PBS的商业版本,功能最为丰富。Torque是Clustering公司接过了OpenPBS,并给与后续支持的一个开源版本。

下面是本人安装torque的过程。

一、Torque安装

在master(管理结点上)

1、解压安装包

[root@master tmp]# tar zxvf torque-2.3.0.tar.gz

2、进入到解压后的文件夹

./configure --with-default-server=master

make

make install

3、

(1)[root@master torque-2.3.0]#./torque.setup

必须是个普通用户

(2)[root@master torque-2.3.0]#make packages

把产生的 tpackages , torque-package-clients-linux-x86-64.sh,

torque-package-mom-linux-x86-64.sh 拷贝到所有节点。

(3)[root@master torque-2.3.0]# ./torque-package-clients-linux-x86_64.sh --install

[root@master torque-2.3.0]# ./torque-package-mom-linux-x86_64.sh --install

(4)编辑/var/spool/torque/server_priv/nodes (需要自己建立)

加入如下内容

master np=4

node01 np=4

........

node09 np=4

(5)启动pbs_server,pbs_sched,pbs_mom,并把其写到/etc/rc.local里使其能开机自启动。

(6)创建队列

[root@master ~]# qmgr

create queue students

set queue students queue_type = Execution

set queue students Priority = 40

set queue students resources_max.cput = 96:00:00

set queue students resources_min.cput = 00:00:01

set queue students resources_default.cput = 96:00:00

set queue students enabled = True

set queue students started = True

4、在node0x (x=1-9,计算结点上)

[root@node0x torque-2.3.0]# ./torque-package-clients-linux-x86_64.sh --install

[root@node0x torque-2.3.0]# ./torque-package-mom-linux-x86_64.sh --install

然后启动pbs_mom ,把pbs_mom写入/etc/rc.local

二、Torque PBS使用

1、创建用户

在master的root下

useradd test

passwd test

输入test密码

到/var/yp下make一下

2、配置普通用户的ssh

su test

cd

ssh-keygen -t dsa

cd .ssh

cat id_pub.dsa >>authorized_keys

chmod 600 authorized_keys

3、编写作业脚本

[test1@master t]vi pbsjob

#!/bin/tcsh

#PBS -o /home/test1/pbstest/t/output 标准输出文件

#PBS -e /home/test1/pbstest/t/error 错误输出文件

#PBS -l nodes=5:ppn=4 规定使用的节点数以及每个节点能跑多少核

#PBS –q students 把任务提交到students队列中

cd $PBS_O_WORKDIR 到工作目录下(此为PBS提供的环境变量)

mpirun –machine $PBS_NODEFILE -np 20 ./vasp

4、启动mpd

mpdboot -n 10 -f mfa

mfa内容:

master:4

node01:4

….

node09:4

5、提交,查询,删除作业

提交作业:qsub pbsjob

作业提交后会有一个作业号

[test1@master pbstest]$ qsub pbsjob

48.master

查询作业:qstat

[test1@master pbstest]$ qstat

Job id Name User Time Use S Queue

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

48.master pbstest test1 00:00:00 R students

删除作业:qdel 作业号

[test1@master pbstest]$ qdel 48

链接http://hi.baidu.com/danganxi521/blog/item/2b23c03db6cea1e93c6d975f.html/cmtid/b4f2450700f2e5c77b89478f

(二)PBS脚本使用

qsub -N Relax -l nodes=1:ppn=8 pbs

#!/bin/sh

VASP="/home/user15/soft/mpi/bin/mpirun -machinefile $PBS_NODEFILE -np 8 avasp < /dev/null "

i=36

times=1000

while((i<=times))

do

cp RStru_$i POSCAR

rm WAVECAR CHG*

./produKPTS.x

$VASP

cp CONTCAR POSCAR

rm WAVECAR CHG*

./produKPTS.x

$VASP

cp CONTCAR POSCAR

rm WAVECAR CHG*

./produKPTS.x

$VASP

cp CONTCAR pos.$i

cp OUTCAR out.$i

let i=i+1

done

cd /temp/user15/RST1000

./relax.sh >& log

(三)pbs常用命令和选项

一、基本选项

pbs是Protable Batch System的缩写,是一个任务管理系统。当多个用户使用同一个计算资源时,每个用户用PBS脚本提交自己的任务,由PBS对这些任务进行管理和资源的分配。下面是一个简单的PBS脚本:
#PBS -l nodes=20
#PBS -N snaphu
#PBS -j oe
#PBS -l walltime=24:00:00
#PBS -l cput=1:00:00
#PBS -q dque

cd $PBS_O_WORKDIR
cat $PBS_NODEFILE $PBS_NODEFILE> NODEFILE

mpirun -hostfile NODEFILE -np `cat NODEFILE |wc -l` ./mpiTest

将这个脚本保存成submit
然后qsub submit就将这个mpiTest的任务提交给了系统。
脚本中#PBS为脚本选项,用于设置一些参数。
#PBS -l表示资源列表,用于设定特定任务所需的一些参数。这里的NODES表示并行环境下可以使用的节点数,而walltime表示任务最大时限,而cput表示cpu时间的最大时限,运行时间和cpu使用时间超过对应的时限,任务就会以超时退出。这三个参数不是PBS脚本参数,而是并行环境所需的参数。
#PBS -N表示任务名称
#PBS -j表示系统输出,如果是oe,则标准错误输出(stderr)和标准输出(stdout)合并为stdout,如果是eo,则合并为stderr,如果没有设定或设定为n,则stderr和stdout分开。
#PBS -q表示当前任务选用的队列。在并行环境下,一个系统中往往有多个队列,任务提交后,将在所选的队列中排除等候。系统中有哪些队列可以用qstat -q查看。


二、简单命令

任务提交后,需要查看任务信息和环境信息,有如下常用命令。
qstat 查看本用户提交的任务
qstat -n 同上,输出内容稍有不同
qstat -q 查看系统中所有的队列,以及每个队列中任务的运行和等候情况。
showq 查看系统中所有运行的任务。
qdel id 删除JOBNAME为id的任务。该任务如果在等待,则可以有这个命令删除,如果已经开始运行,则无法删除。

三、参数传递

qsub submit -l nodes=4 -v x=1,y=2
其中,-l nodes=4本来就是一个#PBS选项,既可以放在submit文件中,又可以放到命令行上。
-v x=1,y=2为一个变量列表,和shell命令一样,在submit文件中可以用$x,$y来调用这两值

链接http://hi.baidu.com/pkuwwt/blog/item/d6e094b1b910df5c0923022f.html

(四)PBS 命令与使用

PBS(Portable Batch System)是由NASA开发的灵活的批处理系统。它被用于集群系统、超级计算机和大规模并行系统。PBS主要有如下特征:

  • 易用性:为所有的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略。
  • 移植性:符合POSIX 1003.2标准,可以用于shell和批处理等各种环境。
  • 适配性:可以适配与各种管理策略,并提供可扩展的认证和安全模型。支持广域网上的负载的动态分发和建立在多个物理位置不同的实体上的虚拟组织。
  • 灵活性:支持交互和批处理作业。

OpenPBS( http://www.OpenPBS.org/)是PBS的Open Source的实现。商业版本的PBS可以参照: http://www.pbspro.com/

1、PBS命令

PBS提供4条命令用于作业管理。

(1) qsub 命令—用于提交作业脚本

命令格式:

qsub [-a date_time] [-c interval] [-C directive_prefix]

[-e path] [-I] [-j join] [-k keep] [-l resource_list] [-m mail_options]

[-M user_list][-N name] [-o path] [-p priority] [-q destination] [-r c]

[-S path_list] [-u user_list][-v variable_list] [-V]

[-W additional_attributes] [-z]

[script]

参数说明:因为所采用的选项一般放在pbs脚本中提交,所以具体见PBS脚本选项。

例:# qsub aaa.pbs 提交某作业,系统将产生一个作业号

(2) qstat 命令—用于查询作业状态信息

命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]

参数说明:

-f jobid 列出指定作业的信息

-a 列出系统所有作业

-i 列出不在运行的作业

-n 列出分配给此作业的结点

-s 列出队列管理员与scheduler所提供的建议

-R 列出磁盘预留信息

-Q 操作符是destination id,指明请求的是队列状态

-q 列出队列状态,并以alternative形式显示

-au userid 列出指定用户的所有作业

-B 列出PBS Server信息

-r 列出所有正在运行的作业

-Qf queue 列出指定队列的信息

-u 若操作符为作业号,则列出其状态。

若操作符为destination id,则列出运行在其上的属于user_list中用户的作业状态。

例:# qstat -f 211 查询作业号为211的作业的具体信息。

(3) qdel 命令—用于删除已提交的作业

命令格式:qdel [-W 间隔时间] 作业号

命令行参数:

例:# qdel -W 15 211 15秒后删除作业号为211的作业

(4) qmgr 命令—用于队列管理

qmgr -c "create queue batch queue_type=execution"

qmgr -c "set queue batch started=true"

qmgr -c "set queue batch enabled=true"

qmgr -c "set queue batch resources_default.nodes=1"

qmgr -c "set queue batch resources_default.walltime=3600"

qmgr -c "set server default_queue=batch"

2、PBS脚本文件

PBS脚本文件由脚本选项和运行脚本两部分组成。

(1) PBS作业脚本选项 (若无-C选项,则每项前面加‘#PBS’)

-a date_time : date_time格式为:[[[[CC]YY]MM]DD]hhmm[.SS]

表示经过date_time时间后作业才可以运行。

-c interval :定义作业的检查点间隔,如果机器不支持检查点,则忽略此选项。

-C directive_prefix :在脚本文件中以directive_prefix开头的行解释为qsub的命

令选项。(若无此选项,则默认为’#PBS’ )

-e path :将标准错误信息重定向到path

-I :以交互方式运行

-j join :将标准输出信息与标准错误信息合并到一个文件join中去。

-k keep :定义在执行结点上保留标准输出和标准错误信息中的哪个文件。

keep为o 表示保留前者,e表示后者,oe或eo表示二者都保留,

n表示皆不保留。若忽略此选项,二者都不保留。

-l resource_list : 定义资源列表。以下为几个常用的资源种类。

cput=N : 请求N秒的CPU时间; N也可以是hh:mm:ss的形式。

mem=N[K|M|G][B|W]:请求N {kilo|mega|giga}{bytes|words} 大小的内存。

nodes=N:ppn=M :请求N个结点,每个结点M个处理器。

-m mail_options :mail_option为a:作业abort时给用户发信;为b:作业开始运行发信;为e:作业结束运行时发信。若无此选项,默认为a。

-M user_list :定义有关此作业的mail发给哪些用户。

-N name : 作业名,限15个字符,首字符为字母,无空格。

-o path :重定向标准输出到path。

-p priority : 任务优先级,整数,[-1024,1023],若无定义则为0.

-q destination : destination有三种形式: queue , @server,queue@server。

-r y|n : 指明作业是否可运行,y为可运行,n为不可运行。

-S shell :指明执行运行脚本所用的shell,须包含全路径。

-u user_list :定义作业将在运行结点上以哪个用户名来运行。

-v variable_list :定义export到本作业的环境变量的扩展列表。

-V :表明qsub命令的所有环境变量都export到此作业。

-W additional_attributes : 作业的其它属性。

-z :指明qsub命令提交作业后,不在终端显示作业号。

(2) 运行脚本同LINUX下一般的运行脚本文件。

[注]:脚本文件中的mpirun_rsh命令行中的节点列表文件要用环境变量表示

$PBS_NODEFILE,这个环境变量表示由pbs自动分配给作业的节点列表;

节点数为命令行中指定的进程数。

格式如下:

mpirun_rsh –np 进程数 –hostfile $PBS_NODEFILE 可执行程序名

命令详解如下:

Getting Status on the System, Queues, and Jobs
Command Short Description Tutorial Manual Page
qstat list information about queues and jobs Using qstat qstat man page
qstat -q list all queues on system HTML and PS qstat man page
qstat -Q list queue limits for all queues HTML and PS qstat man page
qstat -a list all jobs on system Using qstat qstat man page
qstat -au userid list all jobs owned by user userid Using qstat qstat man page
qstat -s list all jobs with status comments HTML and PS qstat man page
qstat -r list all running jobs HTML and PS qstat man page
qstat -f jobid list all information known about specified job Using qstat qstat man page
qstat -Qf queue list all information known about specified queue Using qstat qstat man page
qstat -B List summary information about the PBS server HTML and PS qstat man page
Submitting a Job
qsub jobscript submit jobscript to PBS Using qsub qsub man page
qsub -I submit an interactive-batch job Using qsub qsub man page
qsub -q queue submit job directly to a specified queue Using qsub qsub man page
Using the Graphical User Interface (GUI)
xpbs Graphical User Interface to PBS commands Using xpbs xpbs man page

链接http://blog.chinaunix.net/u1/34200/showart_1880946.html

(五)GM并行作业提交PBS脚本

PBS模板脚本文件路径为:/export/home/pbs/mpich-gm.pbs.pbs

按照如下示例文件,建立pbs作业提交脚本,修改红色的部分即可。

#LJRS -S /bin/bash

#LJRS -o script.out

#LJRS -j oe

#LJRS -q dpool

#LJRS -l nodes=8:ppn=1 (nodes:计算节点数,ppn:计算节点CPU数)

#LJRS -l walltime=48:00:00 (用户估计的最大计算时间,超时系统会自动中断作业)

limit -s unlimited

TMPFILE=`whoami`_mpich_gm.tmp

sed 's/c/g/g' $LJRS_NODEFILE > /tmp/$TMPFILE

GM_NODEFILE=/tmp/$TMPFILE

echo Working directory is $LJRS_O_WORKDIR

cd $LJRS_O_WORKDIR

echo Runing on host `hostname`

echo Starting Time is `date`

echo Directory is `pwd`

echo This jobs runs on the following processors:

echo `cat $GM_NODEFILE`

NPROCS=`wc -l < $GM_NODEFILE`

echo This job has allocated $NPROCS nodes

## User Parallel Program ###########

mpirun -v -machinefile $GM_NODEFILE -np $NPROCS ~/my_parallel.exe > out (修改为用户的并行作业执行命令)

####################################

rm -f /tmp/$TMPFILE

链接http://cftcc.iccas.ac.cn/show.aspx?id=25&cid=12

echo Ending Time is `date`

你可能感兴趣的:(Torque PBS管理系统)