PBS(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需要,如集群系统、超级计算机和大规模并行系统。
PBS是功能最为齐全, 历史最悠久, 支持最广泛的本地集群调度器之一。PBS的主要特点有:代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业,如MPI、PVM、HPF、MPL。
PBS的目前包括:openPBS, PBS Pro和Torque三个主要分支.
OpenPBS:是最早的PBS系统, 目前已经没有太多后续开发
PBS pro:是PBS的商业版本, 功能最为丰富
Torque:是Clustering公司接过了OpenPBS, 并给与后续支持的一个开源版本
应用PBS提交任务则会形成任务队列,依次执行,有效分配资源,避免资源竞争。否则CPU时间片会轮流分配给各个人的任务,从而影响所有人的正常作业。
torque主要由三个主要部件组成:
PBS服务守护进程: pbs_server 负责接收作业提交,位于服务节点
PBS调度守护进程: pbs_sched 负责调度作业,位于服务节点
PBS MOM守护进程: pbs_mom 负责监控本机并执行作业,位于所有计算节点
PBS 提供4 条命令用于作业管理:
qsub 命令:用于提交作业脚本
#命令格式:
$qsub -a date_time [-C directive_prefix]
-e path -j join -l resource_list
-M user_list -o path -q destination
-S path_list-v variable_list
-W additional_attributes
参数说明:因为所采用的选项一般放在pbs 脚本中提交,所以具体见PBS 脚本选项。
例:# qsub aaa.pbs 提交某作业,系统将产生一个作业号
qstat 命令:用于查询作业状态信息
#命令格式:
$qatat -f-i-s -Q-B
参数说明:
参数 | 作用 |
---|---|
-f | jobid 列出指定作业的信息 |
-a | 列出系统所有作业 |
-i | 列出不在运行的作业 |
-n | 列出分配给此作业的结点 |
-s | 列出队列管理员与scheduler 所提供的建议 |
-R | 列出磁盘预留信息 |
-Q | 操作符是destination id,指明请求的是队列状态 |
-q | 列出队列状态,并以alternative 形式显示 |
-au userid | 列出指定用户的所有作业 |
-B | 列出PBS Server 信息 |
-r | 列出所有正在运行的作业 |
-Qf queue | 列出指定队列的信息 |
-u | 若操作符为作业号,则列出其状态。 |
例:# qstat -f 211 查询作业号为211 的作业的具体信息。
qdel 命令:用于删除已提交的作业
#命令格式:
$qdel [-W 间隔时间] 作业号
例:# qdel -W 15 211 #15秒后删除作业号为211 的作业
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对这些任务进行管理和资源的分配。下面是一个简单的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’)
2) 运行脚本同LINUX下一般的运行脚本文件格式如下:
mpirun –np 进程数 ./可执行程序名
安装信息
名称 | 版本 | 下载 |
---|---|---|
系统 | CentOS-7-x86_64-DVD-1708 | 点击这里 |
Torque | torque-6.1.1.1.tar | 点击这里 |
节点信息
主机名 | IP |
---|---|
master | 192.168.64.51 |
通过编译源代码的方式安装torque由于整个torque都被安装在一台计算机上,所以上述pbs_server、pbs_mom和pbs_sched都会被安装在一起。
1 检查设置主机名
$hostnamectl set-hostname master
2 安装torque运行环境和依赖库
$yum install libxml2-devel openssl-devel gcc gcc-c++ boost-devel libtool-y
3 下载torque安装包,上传到centos中,解压后进入此目录
$tar -zxvf tar/torque-6.1.1.1.tar.gz
$cd torque-6.1.1.1/
4 设置安装的配置信息,然后编译、安装,打包。打包是为了以便在其他节点安装配置。
#prefix设置安装路径,with-default-server设置主机名
$./configure --prefix=/usr/local/torque --with-scp --with-default-server=master
$make
$make install
$make packages
5 将contrib/init.d/目录下的pbs_server、pbs_sched、pbs_mom、trqauthd添加到系统初始化简脚本/etc/init.d/中,并设置为开机启动。
$cp contrib/init.d/{pbs_{server,sched,mom},trqauthd} /etc/init.d/
$for i in pbs_server pbs_sched pbs_mom trqauthd; do chkconfig --add $i; chkconfig $ion; done
6 设置环境变量
$TORQUE=/usr/local/torque
$echo "TORQUE=$TORQUE" >>/etc/profile
$echo "export PATH=\$PATH:$TORQUE/bin:$TORQUE/sbin" >>/etc/profile
$source /etc/profile
$echo '/usr/local/lib' > /etc/ld.so.conf.d/torque.conf
$ldconfig
*备注:**ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
将 testuser设为 TORQUE 的管理账户,没有user1则添加。
$./torque.setup user1
$useradd user1
7 启动pbs_server、pbs_sched、pbs_mom、trqauthd几个服务
$for i in pbs_server pbs_sched pbs_mom trqauthd; do service $i start; done
#或者使用如下一次开启、停止、查看状态
$ /etc/init.d/pbs_server start|stop|status
$ /etc/init.d/pbs_sched start|stop|status
$ /etc/init.d/pbs_mom start|stop|status
$ /etc/init.d/trqauthd start|stop|status
**备注:**Torque主要是由三个主要部件组成
pbs_server PBS服务守护进程,负责接收作业提交,位于服务节点上
pbs_sched PBS调度守护进程,负责调度作业,位于服务节点上
pbs_mom PBS MOM守护进程, 负责监控本机并执行作业,位于所有计算节点上
8 用user用户提交作业
$su user1
$echo sleep 200 | qsub
$qstat -an
9 将master也作为计算节点,编辑/var/spool/torque/mom_priv/config
$pbsserver master
10 安装mom、client
在root用户下,执行:
$./torque-package-mom-*.sh --install
$./torque-package-clients-*.sh --install
12 创建设置作业队列
$qmgr
Qmgr: create queue test_queue
Qmgr: set queue test_queue queue_type = execution
Qmgr: set queue test_queue started = true
Qmgr: set queue test_queue enabled = true
Qmgr: set queue test_queue resources_default.walltime = 1:00:00
Qmgr: set queue test_queue resources_default.nodes = 1
Qmgr: set server default_queue = batch
Qmgr: exit
$qstat -q
备注:
设置torque(工作目录为/var/spool/torque/)
a)设置服务器名:编译/var/spool/torque/server_name文件
b)设置机群所有机器名:编辑/var/spool/torque/server_priv/nodes文件
c)设置MOM进程配置文件:编辑 /var/spool/torque/mom_priv/config文件
1 PBS Pro的安装及其作业管理命令
2 Centos7单机安装torque
3 作业提交系统Torque个人安装总结(PBS)
4 PBS(Portable BatchSystem)简介
2017-11-16-Boy