PBS 作业管理系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PBS 作业管理系统相关的知识,希望对你有一定的参考价值。

参考技术A 在 上一篇 中我们非常简单地介绍了在 C 语言中嵌入 mpi4py 程序的方法。

前面我们所给出的各个例程一般都是在单台计算机上直接使用 mpiexec 或 mpirun 执行的,但是在实际应用中,对规模比较大的高性能计算任务,一般会提交到集群或超级计算机平台上进行计算。集群系统具有低成本、高性能的特性,提供了强大的批处理和并行计算能力,代表了高性能计算机发展的新方向。在集群或者超级计算机平台上,一般不能随意地直接以 mpiexec 或 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。作为集群系统软件的重要组成部分,集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。下面我们将简要地介绍几个常用的集群作业管理系统:PBS,LSF 和 SLURM。下面我们首先简要介绍 PBS 作业管理系统。

PBS (Protable Batch System) 作业管理系统会根据一个集群上的可用计算节点的计算资源管理和调度所有计算作业(无论是批处理作业还是交互式作业)。

可以用两种方式设置 PBS 作业属性:

下表列出常用的 PBS 作业属性

比较常用的作业资源如下:

可以用以下方法设定节点资源构型:

下表列出常用的 PBS 环境变量:

用以下命令形式提交批处理作业:

作业提交后一般会先排队等待,PBS 系统会根据作业的优先级和可用的计算资源来调度和执行作业。

PBS 脚本本质上是一个 Linux shell 脚本,在 PBS 脚本中可以用一种特殊形式的注释(#PBS)作为 PBS 指令以设定作业属性。下面是一个 PBS 脚本示例:

用以下命令提交该作业:

要取消或停止一个作业,需要得到该作业的作业标识号 <job ID >,可以通过 qstat 命令获得。

取消一个正在排队等待的作业,可用以下命令:

要停止一个正在运行的作业,可用向其发送 KILL 信号:

交互式的计算作业通过类似于下面的命令使用:

例如要求 2 台计算节点,运行在 example-queue 队列上的交互式作业,执行如下命令:

执行完以上命令,等 PBS 系统分配好资源后会进入所分配的第一台计算节点,可在其命令终端上执行交互式的计算任务,如要退出交互作业,可在终端输入 exit 命令,或使用按键 Ctrl+D。

以上简要介绍了 PBS 作业管理系统,在 下一篇 中我们将介绍 LSF 作业管理系统。

PBS Torque 5.1.3安装配置

集群系统就好像一台服务器或者PC,集群资源由实现如下几个部分:

资源管理器:为了确保分配给作业合适的资源,集群资源管理需要维护一个数据库。这个数据库记录了集群系统中各种资源的属性和状态、所有用户提交的请求和正在运行的作业。策略管理器根据这些数据和指定的调度策略生成优先级列表。资源管理器根据这优先级列表调度作业。资源管理器还应该具有资源预留能力。这样不仅可以保留强大的资源给需要的作业,而且可以预留一定的冗余资源以应付集群中的结点失效和突发的计算。

作业调度策略管理器:策略管理器根据资源管理器得到各个结点上的资源状况和系统的作业信息生成一个优先级列表。这个列表告诉资源管理器何时在哪些结点上运行哪个作业。策略管理器不仅要提供一个复杂的参数集合去定义计算环境和作业,而且要为这个定义提供简捷灵活的表达方式以允许实现策略驱动的资源调度。

 

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是一个用于作业分配的调度器 (scheduler),其主要任务是分配批作业计算任务到现有的计算资源上。 以下版本的PBS系统目前可用: OpenPBS:没有技术支持的原始开源版本; PBSPro(PBS专业版):由Altair Engineering发行和支持的商业版本; Torque:衍生的OpenPBS,由Cluster Resources Inc.发展、支持和维护

应用PBS提交任务则会形成任务队列,依次执行,有效分配资源,避免资源竞争。否则CPU时间片会轮流分配给各个人的任务,从而影响所有人的正常作业。

 

Maui集群调度器 是Moab集群套件前身,是一个开放源码的集群和超级计算机作业调度器(scheduler)

Maui 是一个高级的作业调度器。它采用积极的调度策略优化资源的利用和减少作业的响应时间。Maui的资源和负载管理允许高级的参数配置:作业优先级(Job Priority)、调度和分配(Scheduling and Allocation)、公平性和公平共享(Fairness and Fairshare)和预留策略(Reservation Policy)。Maui的机制允许资源和服务的直接传递、策略解除(Policy Exemption)和指定特征的受限访问。Maui采用高级的资源预留架构可以保证精确控制资源何时、何地、被谁、怎样使用。Maui的预留架构完全支持非入侵式的元调度。 Maui的设计得益于世界最大的高性能计算中心的经验。Maui本身也提供测试工具和模拟器用于估计和调节系统性能。

Maui 需要资源管理器与其配合使用。我们可以把Maui想象为PBS中的一个插入部件。

其中Intel MPI软件安装见Intel MPI 5.1.3安装,当MPI的集群测试完成后,开始torque的安装配置。

torque主要操作在master管理节点,计算节点安装torque-package-clients和torque-package-mom这两个软件包。

 

####安装开发软件包

yum install -y gcc gcc-c++ make openssl-devel libxml2-devel boost-devel

 

1、编译与安装软件(master管理节点)

 

[[email protected] ~]# ls -l torque-5.1.3-1462984387_205d70d.tar.gz
-rw-r--r-- 1 root root 6395167 Sep 27 01:48 torque-5.1.3-1462984387_205d70d.tar.gz
[[email protected] ~]# tar zxf torque-5.1.3-1462984387_205d70d.tar.gz
[[email protected] ~]# cd torque-5.1.3-1462984387_205d70d
[[email protected] torque-5.1.3-1462984387_205d70d]# ./configure --prefix=/usr/local/torque-5.1.3 --with-scp --with-default-server=master
 ##当提示“Ready for ‘make‘.”时,可进行make/make package/make install等操作。
[[email protected] torque-5.1.3-1462984387_205d70d]# make
[[email protected] torque-5.1.3-1462984387_205d70d]# make install (torque的配置目录: /var/spool/torque)
[[email protected] torque-5.1.3-1462984387_205d70d]# make packages (生成计算节点安装包,即在计算节点上安装的包,确保所有计算节点和服务节点的架构是相同的)

 ##配置pbs_server、pbs_sched、pbs_mom 、trqauthd等服务随系统自动启动

[[email protected] torque-5.1.3-1462984387_205d70d]# cp contrib/init.d/{pbs_{server,sched,mom},trqauthd} /etc/init.d/


[[email protected] ~]# for i in pbs_server pbs_sched pbs_mom trqauthd;
> do chkconfig --add $i;
> chkconfig $i on;

> done


[[email protected] ~]# chkconfig |grep pbs
pbs_mom 0:off 1:off 2:on 3:on 4:on 5:on 6:off
pbs_sched 0:off 1:off 2:on 3:on 4:on 5:on 6:off

pbs_server 0:off 1:off 2:on 3:on 4:on 5:on 6:off


[[email protected] ~]# chkconfig |grep trq
trqauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

##配置torque软件环境变量

echo "TORQUE=/usr/local/torque-5.1.3" >>/etc/profile
echo "export PATH=\$PATH:/usr/local/torque-5.1.3/bin:/usr/local/torque-5.1.3/sbin" >>/etc/profile

退出当前会话或者执行“source /etc/profile”使环境变量生效

 

##设置torque管理账户

[[email protected] torque-5.1.3-1462984387_205d70d]# ./torque.setup root
initializing TORQUE (admin: [email protected])
 
You have selected to start pbs_server in create mode.
If the server database exists it will be overwritten.
do you wish to continue y/(n)?y
root 79824 1 1 15:50 ? 00:00:00 pbs_server -t create
Max open servers: 9
Max open servers: 9
[[email protected] torque-5.1.3-1462984387_205d70d]#
 
停止bps_server
[[email protected] torque-5.1.3-1462984387_205d70d]# qterm -t quick
[[email protected] torque-5.1.3-1462984387_205d70d]# ps -ef |grep pbs
root 79882 79791 0 15:57 pts/0 00:00:00 grep pbs

 

2、客户端安装配置(计算节点)

##拷贝torque-package-clients和torque-package-mom两个软件安装程序到计算节点

##拷贝pbs_mom和trqauthd两个程序包到计算节点

[[email protected] ~]# scp master:/root/torque-5.1.3-1462984387_205d70d/torque-package-{clients,mom}-linux-x86_64.sh /root/


[[email protected] ~]# scp master:/root/torque-5.1.3-1462984387_205d70d/contrib/init.d/{pbs_mom,trqauthd} /etc/init.d/

 

##安装torque-package-clients和torque-package-mom两个软件

[[email protected] ~]# ./torque-package-clients-linux-x86_64.sh --install
[[email protected] ~]# ./torque-package-mom-linux-x86_64.sh --install

技术分享

 

3、配置Torque程序启动参数等

##master管理节点配置nodes文件

创建/var/spool/torque/server_priv/nodes文件并写入如下内容
[[email protected] ~]# cd /var/spool/torque/
[[email protected] torque]# more server_priv/nodes
master np=8
compute01 np=12
compute02 np=12
compute03 np=12
compute04 np=12
compute05 np=12
compute06 np=12
compute07 np=12
compute08 np=12

如果只写主机名,不写进程数“np=Number”,则在执行qnodes时显示np=1,也就是将以一个进程的数目来执行计算。

 

##计算节点配置config文件

创建/var/spool/torque/mom_priv/config文件并写入如下内容
$pbsserver master
$logevent 255

 

##master管理节点启动pbs_server、pbs_sched、pbs_mom、trqauthd几个服务

Torque主要是由三个主要部件组成

pbs_server  PBS服务守护进程,负责接收作业提交,位于服务节点上

pbs_sched  PBS调度守护进程,负责调度作业,位于服务节点上

pbs_mom  PBS MOM守护进程, 负责监控本机并执行作业,位于所有计算节点上

[[email protected] ~]# for i in pbs_server pbs_sched pbs_mom trqauthd;
> do service $i start;
> done
Starting TORQUE Server: [ OK ]
Starting TORQUE Scheduler: [ OK ]
Starting TORQUE Mom: [ OK ]
Starting TORQUE Authorization Daemon: trqauthd already runn[ OK ]
 
[[email protected] ~]# ps -ef |grep pbs
root 79903 1 0 15:59 ? 00:00:00 /usr/local/torque-5.1.3/sbin/pbs_server -d /var/spool/torque
root 79932 1 0 15:59 ? 00:00:00 /usr/local/torque-5.1.3/sbin/pbs_sched -d /var/spool/torque
root 79953 1 0 15:59 ? 00:00:00 /usr/local/torque-5.1.3/sbin/pbs_mom -p -d /var/spool/torque
[[email protected] ~]# ps -ef |grep trq
root 80282 1 0 16:00 pts/0 00:00:00 /usr/local/torque-5.1.3/sbin/trqauthd

或者再重启一下进程

for i in pbs_server pbs_sched pbs_mom trqauthd;
do service $i restart;
done

技术分享

 

##计算节点启动pbs_mom、trqauthd两个服务

for i in pbs_mom trqauthd;
do service $i start;
done

或者

[[email protected] ~]# service pbs_mom start
Starting TORQUE Mom:   [ OK ]
[[email protected] ~]# service trqauthd start
Starting TORQUE Authorization Daemon: hostname: master
Active server name: node1 pbs_server port is: 15001
trqauthd daemonized - port /tmp/trqauthd-unix [ OK ]

 

##检查pbs节点状态,状态为free则正常(master管理节点上运行)

# qnodes
或者
pbsnodes –a

技术分享

技术分享 

4、测试调度

用普通账户创建两个job,分别是串行运算(单节点)和并行运算。

prog脚本,可单独执行,测试脚本是否准确

技术分享

icpi-64测试脚本见附件


job1脚本,串行运算(单节点)

[[email protected] testc]$ more job1
#!/bin/bash
#PBS -N job1
#PBS -o job1.log
#PBS -e job1.err
#PBS -q batch
cd /data/testc
echo Running on hosts `hostname`
echo Time is `date`
echo Directory is $PWD
echo This job runs on the following nodes:
cat $PBS_NODEFILE
echo This job has allocated 1 node
/data/testc/prog

技术分享

提交job1

技术分享

检查任务状态

技术分享

job1执行结果

技术分享

 

job2脚本,并行运算

[[email protected] testc]$ more job2
#!/bin/bash
#PBS -N job2
#PBS -o job2.log
#PBS -e job2.err
#PBS -q batch
#PBS -l nodes=9
cd /data/testc
echo Time is `date`
echo Directory is $PWD
echo This job runs on the following nodes:
cat $PBS_NODEFILE
NPROCS=`wc -l < $PBS_NODEFILE`
echo This job has allocated $NPROCS nodes
mpiexec -machinefile $PBS_NODEFILE -np $NPROCS /data/testc/prog

提交job2

技术分享

检查任务状态

技术分享

job2执行结果

技术分享

执行时间比较

技术分享

技术分享

 

可以看到同样的任务并行的时间用的短

注:

1. 以上测试我是以普通账户test测试,确保所有节点上有此用户,并且在progicpi-64在所有计算节点上的路径一致(建议使用NFS来保证绝对路径的一致性)

2. 启动mpd程序时要使用相同的普通用户test,因为在调度时会连接计算节点上/tmp/mpd2.console_test

    如果不是则会报错,提示无法连接mpd进程,报错日志如下:

[[email protected] ~]$ mpdtrace -l
mpdtrace: cannot connect to local mpd (/tmp/mpd2.console_swpu); possible causes:
 1. no mpd is running on this host
 2. an mpd is running but was started without a "console" (-n option)

 

参考文档

高性能集群 并行计算 mpich hpc 及 torque作业调度系统  着重参考

http://yejiankang.blog.51cto.com/4032242/885484

CentOS下torque集群配置(MPI+Torque+NFS+NIS集中认证)

http://blog.csdn.net/dream_angel_z/article/details/44225669/

http://blog.csdn.net/dream_angel_z/article/details/44225713

http://blog.csdn.net/dream_angel_z/article/details/44226055

http://blog.csdn.net/dream_angel_z/article/details/44226179

PBS作业调度应用与说明

http://blog.csdn.net/cloudeagle_bupt/article/details/11775107

Moab 5.2.0+Torque 2.2.1/pbs集群作业可视化管理系统部署试验

http://blog.csdn.net/educast/article/details/7167542

 

资源管理软件TORQUE 与作业调度软件Maui 的安装、设置及使用

http://wenku.baidu.com/link?url=W_7yuMrXmpjMIctZUvhgeUqt7n-KUajfRaZ_PoP3TC3bVpUqLSNn7ijUcVY_I4eNRd_8L6TA2ljB_MUKRcWHXObxb0DTDydEs8mDXI1pegG


以上是关于PBS 作业管理系统的主要内容,如果未能解决你的问题,请参考以下文章

PBS Torque 5.1.3安装配置

调度器PBS

PBS常用指令合集

qsub vasp.pbs怎么提前任务

LSF 作业管理系统

SGE作业调度系统的简单理解