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)的控制。
-
安装Torque组件:在一个节点上(head node)安装pbs_server,所有计算节点上安装pbs_mom,所有计算节点和提交节点上安装PBS客户端。至少做最基本的配置,使Torque系统跑起来,也就是使pbs_server能知道该和哪些机器通话。
-
在pbs_server上创建一个作业提交队列。
- 在集群的所有节点上指定一个cluster name作为property。这可以用qmgr命令做到。比如:
qmgr -c "set node node properties=cluster-name"。
- 确保作业可以提交到节点上去。这可以通过使用qsub命令做到。比如:
echo "sleep 30" | qsub -l nodes=3。
1.0 作业提交系统Torque个人安装总结(PBS)
1.1 Torque安装(在master管理结点上)
1. 解压安装包
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使用
1、创建用户在master的root下
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服务开启操作流程
我在Dawing上操作成功了!!
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常用命令和选项
3.1 基本脚本写法和选项
PBS是Protable Batch System的缩写,是一个任务管理系统。当多个用户使用同一个计算资源时,每个用户用PBS脚本提交自己的任务,由PBS对这些任务进行管理和资源的分配。下面是一个简单的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
<nobr><span id="MathJax-Span-1" class="math" style="width:8.94em; display:inline-block"><span style="width:1px; display:inline-block; height:0px; overflow:hidden; margin-right:-1px"></span><span style="position:relative; width:7.69em; display:inline-block; height:0px; font-size:116%"><span style="position:absolute; top:-4em; left:0em"><span id="MathJax-Span-2" class="mrow"><span id="MathJax-Span-3" class="mi" style="font-family:MathJax_Math-italic-Web">P<span style="width:0.1em; display:inline-block; height:1px; overflow:hidden"></span></span><span id="MathJax-Span-4" class="mi" style="font-family:MathJax_Math-italic-Web">B</span><span id="MathJax-Span-5" class="msubsup"><span style="width:1px; display:inline-block; height:0px; overflow:hidden; margin-right:-1px"></span><span style="position:relative; width:1.27em; display:inline-block; height:0px"><span style="position:absolute; top:-4em; left:0em"><span id="MathJax-Span-6" class="mi" style="font-family:MathJax_Math-italic-Web">S<span style="width:0.03em; display:inline-block; height:1px; overflow:hidden"></span></span><img class="MathJax_strut" border="0" src="about:blank" width="28" height="30" alt="" style="width:0px; height:4em"></span><span style="position:absolute; top:-3.85em; left:0.58em"><span id="MathJax-Span-7" class="mi" style="font-family:MathJax_Math-italic-Web; font-size:70.7%">N<span style="width:0.06em; display:inline-block; height:1px; overflow:hidden"></span></span><img class="MathJax_strut" border="0" src="about:blank" width="28" height="30" alt="" style="width:0px; height:4em"></span></span></span><span id="MathJax-Span-8" class="mi" style="font-family:MathJax_Math-italic-Web">O</span><span id="MathJax-Span-9" class="mi" style="font-family:MathJax_Math-italic-Web">D</span><span id="MathJax-Span-10" class="mi" style="font-family:MathJax_Math-italic-Web">E<span style="width:0.02em; display:inline-block; height:1px; overflow:hidden"></span></span><span id="MathJax-Span-11" class="mi" style="font-family:MathJax_Math-italic-Web">F<span style="width:0.1em; display:inline-block; height:1px; overflow:hidden"></span></span><span id="MathJax-Span-12" class="mi" style="font-family:MathJax_Math-italic-Web">I<span style="width:0.06em; display:inline-block; height:1px; overflow:hidden"></span></span><span id="MathJax-Span-13" class="mi" style="font-family:MathJax_Math-italic-Web">L</span><span id="MathJax-Span-14" class="mi" style="font-family:MathJax_Math-italic-Web">E<span style="width:0.02em; display:inline-block; height:1px; overflow:hidden"></span></span></span><img class="MathJax_strut" border="0" src="about:blank" width="28" height="30" alt="" style="width:0px; height:4em"></span></span><span style="border-left:0em solid; width:0px; display:inline-block; height:1.13em; vertical-align:-0.24em; overflow:hidden"></span></span></nobr>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’)
2) 运行脚本同LINUX下一般的运行脚本文件格式如下:
mpirun –np 进程数 ./可执行程序名
3.2 PBS 命令与选项
PBS提供的4条命令用于作业管理
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"
相关推荐
pbs作业调度系统
PBS作业调度使用方法.doc
pbs作业管理系统曙光PPT课件.pptx
作业调度系统PBSPro的windows开源版本,从github上面下载的,编译很久。
本文将以应用于实际案例(南航理学院、复旦大学物理系、宁波气象局)中的作业调度系统为例,简单介绍一下免费开源又好用的Torque+Maui如何在曙光服务器上进行安装和配置,以及针对用户特定需求的常用调度策略的设定...
pbs作业管理系统.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
介绍了PBS作业管理系统的特点和其作业调度的机制,并对其中三种作业调度方式进行了测试和分析,对作业运行当中的“饥饿”问题进行了研究.针对作业管理中存在的“欺骗”问题,给出了一种解决问题的方法.
PBS是功能最为齐全, 历史最悠久, 支持最广泛的本地集群调度器之一. PBS的目前包括openPBS, PBS Pro和Torque三个主要分支. 其中OpenPBS是最早的PBS系统, 目前已经没有太多后续开发, PBS pro是PBS的商业版本, 功能最为...
CFX PBS并行机作业提交脚本
针对遥感数据集群处理,基于集群作业调度管理系统Open PBS,提出一种最优资源自动分配的“双级调度策略”;应用分层架构和面向服务的软件开发思想,采用ICE中间件的网络通信技术,使用XML格式作为数据交换模式,研究...
PBS 管理系统 (一)作业提交系统 Torque 个人安装总结(PBS) PBS 是功能最为齐全, 历史最悠久, 支持最广泛的本地集群调度器之一。 PBS 的目前包括 openPBS,PBS Pro 和 Torque 三个主要分支。其中 OpenPBS 是最早...
PBS作业调度系统,基于集群的作业调度,支持CPU、GPU、IntelPHI。TorquePBS版本x4.2,基于Linux操作系统。源代码。
mdsimple 一个命令行实用程序,可轻松创建,设置一组MD实验并将其提交给集群上的作业调度程序。 最初支持GROMACS模拟和PBS作业计划程序。
pbs作业管理系统曙光PPT学习教案.pptx
该文档是Linux系统的作业管理系统讲义,可以参考一下!
用户与操作系统的接口 批处理系统的作业管理 重点:作业调度 交互式系统的作业管理 系统调用 操作系统的安装和启动
PBS包括四个主要的组件:命令组件、作业服务器、作业执行组件和作业调度器。这里给出每一部分的简要描述来帮助你在安装过程中做出决定。 命令组件: PBS支持与POSIX1003.2d相一致的命令行和图形接口两种命令方式。...
集群管理工具作业提交系统pbs,torque
详细描述了集群上提交作业的PBS文件各个部分的功能 提供了一个完整的模板 验证可用
PBS Pro的管理员手册18.2版。。。