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
........ node09np=4
(5)启动 pbs_server,pbs_sched,pbs_mom,并把其写到/etc/rc.local 里使 其能开机自启动。
(6)创建队列 [root@master~]# qmgr create queue students
set queuestudents queue_type = Execution set queue students Priority = 40
set queuestudents resources_max.cput = 96:00:00 set queue students resources_min.cput =00:00:01
set queuestudents 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 testpasswd test 输入 test 密码
到/var/yp 下 make 一下
2、配置普通用户的 ssh su test
cd
ssh-keygen -tdsa cd .ssh
cat id_pub.dsa>>authorized_keys chmod 600 authorized_keys
3、编写作业脚本
[test1@mastert]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:4node01:4
….
node09:4
5、提交,查询,删除作业 提交作业:qsub pbsjob 作业提交后会有一个作业号 [test1@master pbstest]$ qsub pbsjob
48.master
查询作业:qstat
[test1@masterpbstest]$ qstat
Job id Name User Time Use S Queue
----------------------------------------- ---------------
-------- --------------------------------
48.master pbstest test1 00:00:00R students
删除作业:qdel 作业号
[test1@master pbstest]$ qdel 48
链接 http://hi.baidu.com/danganxi521/blog/item/2b23c03db6cea1e93c6d975f.ht ml/cmtid/b4f2450700f2e5c77b89478f
(二)PBS 脚本使用
qsub -N Relax -lnodes=1:ppn=8 pbs
#!/bin/sh
VASP="/home/user15/soft/mpi/bin/mpirun -machinefile $PBS_NODEFILE
-np 8avasp < /dev/null "
i=36times=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
cpCONTCAR 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 -lnodes=20
#PBS -Nsnaphu
#PBS -joe
#PBS -lwalltime=24:00:00
#PBS -lcput=1:00:00
#PBS -qdque
cd $PBS_O_WORKDIR
cat$PBS_NODEFILE $PBS_NODEFILE>NODEFILE
mpirun -hostfileNODEFILE -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 -lnodes=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] [-mmail_options]
[-M user_list][-N name][-o path] [-p priority] [-q destination] [-r c]
[-Spath_list] [-u user_list][-vvariable_list] [-V]
[-Wadditional_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 queuebatch 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 表示皆不保留。若忽略此选项,二者都不保留。
-lresource_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 |
HTMLand PS |
qstat man page |
qstat -Q |
list queue limits for all queues |
HTMLand 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 |
HTMLand PS |
qstat man page |
qstat -r |
list all running jobs |
HTMLand 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 |
HTMLand 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 -lnodes=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 Workingdirectory is $LJRS_O_WORKDIR
cd $LJRS_O_WORKDIR
echoRuning on host `hostname` echo Starting Time is `date` echo Directory is `pwd`
echo This jobs runson the following processors:
echo`cat $GM_NODEFILE` NPROCS=`wc -l < $GM_NODEFILE`
echo This job hasallocated $NPROCS nodes
## User ParallelProgram ###########
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
echoEnding Time is `date`