【PBS环境】服务器批处理作业 & 脚本如何提交 qsub, qdel, qstat

一、什么是PBS

现在的计算平台有很多是 Linux Cluster,常用的作业管理系统采用 PBS。

PBS是一个公开源代码的批处理作业和计算机系统资源管理软件包。它可以接受批处理作业、shell脚本和控制属性,作业运行前对其储存并保护,然后运行作业,并且把输出转发回提交者。

在此环境下运行,用户不需要指定程序在哪些节点上运行,程序所需的硬件资源由PBS管理和分配

二、组件:
  1. 命令组件
    PBS支持与POSIX1003.2d相一致的命令行和图形接口两种命令方式。这些命令用于提交、监视、修改和删除作业。命令可以被安装在任何PBS支持的系统类型上,并且不需要在本地安装任何其它的PBS组件。共有三种类型的命令:任何已授权用户可以使用的命令;操作员命令;管理员命令;操作员和管理员命令需要不同的访问权限。

  2. 作业服务器
    作业服务器是PBS的中心。它一般被称作服务器或被称为可执行文件的名字pbs_server。所有命令和其它守护进程都通过IP网络和服务器通信。服务器的主要功能就是提供基本的批处理服务,例如接收/创建一个批处理作业,修改作业,保护作业免受系统宕机的影响并运行作业。

  3. 作业执行组件
    作业执行器是一个守护进程,它真正地把作业放入执行队列。这一进程,pbs_mon,被非正式地命名为Mom,正如它是所有正在执行的作业的母亲(mother)一样。当Mom从一个服务器那里接收一个作业拷贝时就将它放入执行队列。Mom创建一个和用户登陆会话尽可能一致的新的会话。例如,如果用户的登陆shell是csh,那么Mom就创建一个会话,在此会话中.login和.cshrc一样运行。当服务器指示需要那么做时,Mom也负责把作业的输出返回给用户。

  4. 作业调度器
    作业调度器是另一个守护进程,这一进程包括site’ policy,这一策略控制着哪一个作业被运行,在那个节点运行,什么时候运行。因为每一个site对于什么是好的或者有效的策略都有它自己的想法,PBS允许每一个site来创建它自己的调度器。当运行的时候,调度器就可以和不同的Moms进行通信来获知系统资源的状态;和服务器进行通信来获知要执行的作业的有效性。与服务器之间的接口是通过和命令组件一样的API。实际上,调度器仅仅作为服务器的批处理管理器出现的。

  5. API
    除了上面主要的部分之外,PBS也提供了一个应用编程接口,API,命令组件用它来和服务器进行通信。如果愿意可以利用这些API来实现新的命令。

脚本1:

#!/bin/bash
#PBS -l nodes=1:ppn=4 【设定该作业所需1个节点,每个节点使用4核】
#PBS -l walltime=1500:00:00 【设定作业所需的最大wallclock时间】
#PBS -j oe
#PBS -q batch
source /public/software/profile.d/mpi_openmpi-intel-2.1.2.sh
nodecpu=’cat /proc/cpuinfo|grep processor|wc -l’
Id=’echo $PBS_JOBID | awk -F. ‘{print $1}’’
NP=’cat $PBS_NODEFILE|wc -l’
echo “The Jobbed is $id”
echo “Worker dir is $PBS_O_WORKDIR”
cat $PBS_NODEFILE
echo “begin time is ‘date’”
cd $PBS_O_WORKDIR
mpirun -np 4 vasp_std
echo “End time is ‘date’”

脚本2:

#PBS -S /bin/bash
#PBS -N Test01 【作业名称】
#PBS -o out
#PBS -o out
#PBS -e err
#PBS -q odasc
#PBS -l nodes=8:ppn=12【设定该作业所需8个节点,每个节点使用12核】
NP=‘wc -l <$PBS_NODEFILE’ 【计算申请的CPU核数量,赋值给NP;PBS_NODEFILE:包含作业所用计算节点的主机名; wc命令用于计算字数, -l或–lines 显示行数。】
cd $PBS_O_WORKDIR【执行qsub命令所在的绝对路径】
echo “= LAM BATCH JOB=” 【echo:写内容到标准输出】
echo “. Working Dir : $PBS_O_WORKDIR”
echo “. Job Running on queue: $PBS_QUEUE” 【PBS_QUEUE:作业所执行的队列名称】
echo “. ”
echo “. Running on: $NP processors”
echo “ $PBS_NODEFILE” 【PBS_NODEFILE:包含作业所用计算节点的主机名】
echo “==============”
NP=‘cat $PBS_NODEFILE | wc -l’【cat $PBS_NODEFILE输出作业所用计算节点的主机名;将‘|’前面命令的输出作为’|'后面的输入】
NN=‘cat $PBS_NODEFILE | sort | uniq | tee /tmp/nodes.$$ | wc -l’【sort:排序;uniq:检查重复的行列;tee:输出成文件;$$:Shell本身的PID(ProcessID),即当前进程的PID】
cat $PBS_NODEFILE > /tmp/nodefile.$$
module() { eval ‘/usr/bin/modulecmd bash $*’; }
module load openmpi1.4.2-intel2016
mpirun -hostfile /tmp/nodefile.$$ -n $NP ./mitgcmuv

重点参数解释:

Nodes=node1:ppn=10+node2:ppn=10,设定node1中10个核核node2中10个核计算;
source /public/software/profile.d/mpi_openmpi-intel-2.1.2.sh 表示openmpi生效;
nodecpu=’cat /proc/cpuinfo|grep processor|wc -l’ 反引号内为计算系统可用的cpu核数目,然后赋值给变量nodecpu;
NP=’cat $PBS_NODEFILE|wc -l’ 计算申请的CPU核数量,赋值给NP;
echo “Worker dir is $PBS_O_WORKDIR” 输出字符串worker dir is和脚本所在路径;
cat $PBS_NODEFILE 输出作业所用计算节点的主机名;
echo “begin time is ‘date’” 输出作业开始时间;
cd $PBS_O_WORKDIR 进入所在的路径;
echo “End time is ‘date’” 输出作业停止时间;

常用的作业控制命令
  • qsub:提交作业
  • qdel:取消作业
  • qsig:给作业发送信号
  • qhold:挂起作业
  • qrls:释放挂起的作业
  • qrerun:重新运行作业
  • qmove:将作业移动到另一个队列
  • qalter:更改作业资源属性
  • qsig -s KILL 1010 停止1010作业
  • qdel -p 强制删除作业(当某些作业由于节点死机无法删除时,可由root用户登录,使用qdel -p 作业号来删除作业)
  • qstat [选项][作业号]
    -f:列出指定作业的信息
    -a:列出系统所有作业
    -i:列出不在运行的作业
    -n:列出分配给此作业的结点
    -B:列出PBS Server信息
    -q:列出队列状态
    -r:列出所有正在运行的作业
  • pestat :用于查看计算节点使用情况
    state表示节点状态,主要有以下几点参数
    Excl:所有CPU资源已被占用
    Busy:CPU已接近满负荷运行
    Free:全部或部分CPU空闲
    Offl:管理员手动指定离线状态
  • Showq:用于查看所有作业
  • Pbsnodes: 用于列出集群中所有节点的状态和属性
作业状态(S)

B:只用于作业向量,表示作业向量已经开始执行
E:作业再运行后退出
H:作业被服务器或用户或者管理员阻塞
Q:作业正在排队中,等待被调度运行
R:作业正在运行
S:作业被服务器挂起,由于一个更优先级的作业需要当前作业的资源
T:作业被转移到其他执行节点了
U:由于服务器繁忙,作业被挂起
W:作业在等待它所请求的执行时间的到来(qsub -a)
X:只用于子作业,表示自作业完成
C:作业完成

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 下使用! PBS是一个批处理作业和计算机系统资源管理软件包。它原本是按照POSIX 1003.2d批处理环境来开发的。这样,它就可以接受批处理作业、shell脚本和控制属性,作业运行前对其储存并保护,然后运行作业,并且把输出转发回提交者。   PBS可以被安装并配置运行在单机系统或多个系统组来支持作业处理。由于PBS的灵活性,多个系统可以以多种方式组合。 PBS的组件   PBS包括四个主要的组件:命令组件、作业服务器作业执行组件和作业调度器。这里给出每一部分的简要描述来帮助你在安装过程中做出决定。   命令组件:   PBS支持与POSIX1003.2d相一致的命令行和图形接口两种命令方式。这些命令用于提交、监视、修改和删除作业。命令可以被安装在任何PBS支持的系统类型上,并且不需要在本地安装任何其它的PBS组件。共有三种类型的命令:任何已授权用户可以使用的命令;操作员命令;管理员命令;操作员和管理员命令需要不同的访问权限。   作业服务器:   作业服务器PBS的中心。在本文档中,它一般被称作服务器或被称为可执行文件的名字pbs_server。所有命令和其它守护进程都通过IP网络和服务器通信。服务器的主要功能就是提供基本的批处理服务,例如接收/创建一个批处理作业,修改作业,保护作业免受系统宕机的影响并运行作业。   作业执行器:   作业执行器是一个守护进程,它真正地把作业放入执行队列。这一进程,pbs_mon,被非正式地命名为Mom,正如它是所有正在执行的作业的母亲(mother)一样。当Mom从一个服务器那里接收一个作业拷贝时就将它放入执行队列。Mom创建一个和用户登陆会话尽可能一致的新的会话。例如,如果用户的登陆shell是csh,那么Mom就创建一个会话,在此会话中.login和.cshrc一样运行。当服务器指示需要那么做时,Mom也负责把作业的输出返回给用户。   作业调度器:   作业调度器是另一个守护进程,这一进程包括site’ policy[1],这一策略控制着哪一个作业被运行,在那个节点运行,什么时候运行。因为每一个site对于什么是好的或者有效的策略都有它自己的想法,PBS允许每一个site来创建它自己的调度器。当运行的时候,调度器就可以和不同的Moms进行通信来获知系统资源的状态;和服务器进行通信来获知要执行的作业的有效性。与服务器之间的接口是通过和命令组件一样的API。实际上,调度器仅仅作为服务器批处理管理器出现的。   除了上面主要的部分之外,PBS也提供了一个应用编程接口,API,命令组件用它来和服务器进行通信。这一API在和PBS一起完成的第三部分的man pages中描述。A site[1]如果愿意可以利用这些API来实现新的命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值