[转载]PBS作业调度应用与说明PBS(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需 要,如集群系统、超级计算机和大规模并行系统。PBS的主要特点有:代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业,如MPI、 PVM、HPF、MPL;PBS是功能最为齐全, 历史最悠久, 支持最广泛的本地集群调度器之一. PBS的目前包括openPBS, PBS Pro和Torque三个主要分支. 其中OpenPBS是最早的PBS系统, 目前已经没有太多后续开发, PBS pro是PBS的商业版本, 功能最为丰富. Torque是Clustering公司接过了OpenPBS, 并给与后续支持的一个开源版本. PBS的应用不同于一般的直接运行: mpirun –np number ./executable_file 直接运行上句,则只能在单个节点上进行并行计算。如果要在多个节点上并行执行则要写machinefile或p4pgfile,两种文件的具体写法参考张林波等《并行计算导论》。运行命令分别为: mpirun –machinefile filename mpirun –p4pg filename 应用PBS提交任务则会形成任务队列,依次执行,有效分配资源,避免资源竞争。否则CPU时间片会轮流分配给各个人的任务,从而影响所有人的正常作业。 torque PBS 提供对批处理作业和分散的计算节点(Compute nodes)的控制。
qmgr -c "set node node properties=cluster-name"。
echo "sleep 30" | qsub -l nodes=3。 1.0 作业提交系统Torque个人安装总结(PBS) tar -zxvf torque-2.3.0.tar.gz 2. 进入到解压后的文件夹 ./configure --with-default-server=master make make install 3. 打包, <user>必须是个普通用户 1) [root@master torque-2.3.0]# ./torque.setup <user> 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 1.2 Torque PBS使用 useradd test passwd test 输入test密码 到/var/yp下make一下 2、配置普通用户的ssh su test ssh-keygen -t dsa cd .ssh cat id_pub.dsa >> authorized_keys chmod 600 authorized_keys 3、编写作业脚本,见下文 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
删除作业:qdel 作业号 [test1@master pbstest]$ qdel 48 2.0 PBS服务开启操作流程 1) 在主节点上打开PBS服务 /etc/init.d/pbs_server start 2) 在主节点和其他节点打开PBS客户端。主节点虽是服务端,但也可参加计算,因而要打开客服。依次执行如下: /etc/init.d/pbs_mom start 3) 在所有节点上打开调度器 /etc/init.d/maui.d start 对于这些PBS的功能开启有几个相同的参量: status 查看状态 restart 重启 stop 终止 start 开启 4) 接下来是检查是否可以提交作业 pbsnodes –a 返回free即表示可以提交作业。 5) 写脚本vim pbs_ fdtd_TE_xyPML_MPI_OpenMP #!/bin/bash #PBS -l nodes=5:ppn=4 规定使用的节点数nodes以及每个节点能跑多少核ppn #PBS –N taskname 任取一作业任务名taskname cd $PBS_O_WORKDIR 到工作目录下(此为PBS提供的环境变量) mpirun -np 20 ./fdtd_TE_xyPML_MPI_OpenMP 执行mpirun一句可以用-machinefile或-p4pg 命令参量制定 6) 提交 qsub pbs_ fdtd_TE_xyPML_MPI_OpenMP 7) 可用qstat查看作业任务,具体参量参看下文。流程终结! 3.0 PBS常用命令和选项 #!/bin/bash #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 -np ./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查看。 PBS脚本文件由脚本选项和运行脚本两部分组成。 1) PBS作业脚本选项(若无-C选项,则每项前面加‘#PBS’)
mpirun –np 进程数 ./可执行程序名 3.2 PBS 命令与选项 1. qsub 命令:用于提交作业脚本 命令格式: qsub [-a date_time] [-e path] [-I] [-l resource_list] [-M user_list] [-N name] [-S path_list] [-u user_list] [-W additional_attributes] 例:# qsub aaa.pbs 提交某作业,系统将产生一个作业号 2. qstat 命令:用于查询作业状态信息 命令格式: qstat [-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" |
|