PBS简介 – PBS作业调度详解


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 是公开源代码的作业管理系统,pbspro是著名的open PBS的商业版。

https://github.com/PBSPro/pbspro/releases

https://github.com/PBSPro/pbspro/blob/master/LICENSE


Open Source License for PBS Professional

Copyright (C) 1994-2019 Altair Engineering, Inc.
For more information, contact Altair at www.altair.com.

This file is part of the PBS Professional (“PBS Pro”) software.

Open Source License Information:

PBS Pro is free software. You can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.

PBS Pro is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.

PBS作业调度详解

1、PBS环境变量

环境变量说明
PBS_ENVIRONMENT批处理作业为PBS_BATCH,交互式作业为PBS_INTERACTIVE
PBS_JOBIDPBS系统给作业分配的标识号
PBS_JOBNAME用户指定的作业名称
PBS_NODEFILE包含作业所用计算节点的主机名
PBS_QUEUE作业所执行的队列名称
PBS_O_HOME执行qsub命令的HOME环境变量值
PBS_O_PATH执行qsub命令的PATH环境变量值
PBS_O_SHELL执行qsub命令的SHELL环境变量值
PBS_O_HOST执行qsub命令节点名称
PBS_O_QUEUE提交的作业的最初队列名称
PBS_O_WORKDIR执行qsub命令所在的绝对路径

2、PBS作业属性

属性取值说明
-l以逗号分隔的资源列表设定作业所需资源
-N作业名称设定作业名称
-o文件路径设定作业的标准输出文件路径
-e文件路径设定作业的标准错误文件路径
-p-1024到+1023之间的整数设定作业优先级,越大优先级越高
-q队列名称设定作业队列名称

3、作业资源设置

资源取值说明
nodes节点资源构型设定作业所需计算节点资源
walltimeHh:mm:ss设定作业所需的最大wallclock时间
cputHh:mm:ss设定作业所需的最大CPU时间
mem正整数,后面可跟b,kb,mb,gb设定作业所需的最大内存
ncpus正整数设定作业所需的CPU数目

例如:

nodes=2:ppn=28,即设定该作业所需2个节点,每个节点使用28核。

Nodes=node1:ppn=10+node2:ppn=10,设定node1中10个核核node2中10个核计算。

脚本:

#!/bin/bash

#PBS -l nodes=1:ppn=4

#PBS -l walltime=1500:00:00

#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’”

重点参数解释:

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’” 输出作业停止时间

4、常用的作业控制命令

qsub:提交作业

qdel:取消作业

qsig:给作业发送信号

qhold:挂起作业

qrls:释放挂起的作业

qrerun:重新运行作业

qmove:将作业移动到另一个队列

qalter:更改作业资源属性

qsig -s KILL 1010 停止1010作业

qdel -p

强制删除作业(当某些作业由于节点死机无法删除时,可由root用户登录,使用qdel -p 作业号来删除作业)

5、作业检测

qstat [选项][作业号]

选项

-f:列出指定作业的信息

-a:列出系统所有作业

-i:列出不在运行的作业

-n:列出分配给此作业的结点

-B:列出PBS Server信息

-q:列出队列状态

-r:列出所有正在运行的作业

6、作业状态

B:只用于作业向量,表示作业向量已经开始执行

E:作业再运行后退出

H:作业被服务器或用户或者管理员阻塞

Q:作业正在排队中,等待被调度运行

R:作业正在运行

S:作业被服务器挂起,由于一个更优先级的作业需要当前作业的资源

T:作业被转移到其他执行节点了

U:由于服务器繁忙,作业被挂起

W:作业在等待它所请求的执行时间的到来(qsub -a)

X:只用于子作业,表示自作业完成

C:作业完成

  1. 其他几个作业命令
  • pestat命令 用于查看计算节点使用情况

state表示节点状态,主要有以下几点参数

Excl:所有CPU资源已被占用

Busy:CPU已接近满负荷运行

Free:全部或部分CPU空闲

Offl:管理员手动指定离线状态

  • Showq命令 用于查看所有作业
  • Pbsnodes命令 用于列出集群中所有节点的状态和属性

《PBS简介 – PBS作业调度详解》有1条评论

发表评论