集群系统就好像一台服务器或者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管理节点)
[root@master ~]# 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 [root@master ~]# tar zxf torque-5.1.3-1462984387_205d70d.tar.gz [root@master ~]# cd torque-5.1.3-1462984387_205d70d [root@master 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等操作。 [root@master torque-5.1.3-1462984387_205d70d]# make [root@master torque-5.1.3-1462984387_205d70d]# make install (torque的配置目录: /var/spool/torque) [root@master torque-5.1.3-1462984387_205d70d]# make packages (生成计算节点安装包,即在计算节点上安装的包,确保所有计算节点和服务节点的架构是相同的) |
##配置pbs_server、pbs_sched、pbs_mom 、trqauthd等服务随系统自动启动
[root@master torque-5.1.3-1462984387_205d70d]# cp contrib/init.d/{pbs_{server,sched,mom},trqauthd} /etc/init.d/ > do chkconfig --add $i; > chkconfig $i on; > done 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 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管理账户
[root@master torque-5.1.3-1462984387_205d70d]# ./torque.setup root initializing TORQUE (admin: root@node1) 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 [root@master torque-5.1.3-1462984387_205d70d]# 停止bps_server [root@master torque-5.1.3-1462984387_205d70d]# qterm -t quick [root@master 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两个程序包到计算节点
[root@compute01 ~]# scp master:/root/torque-5.1.3-1462984387_205d70d/torque-package-{clients,mom}-linux-x86_64.sh /root/ |
##安装torque-package-clients和torque-package-mom两个软件
[root@compute01 ~]# ./torque-package-clients-linux-x86_64.sh --install [root@compute01 ~]# ./torque-package-mom-linux-x86_64.sh --install |
3、配置Torque程序启动参数等
##master管理节点配置nodes文件
创建/var/spool/torque/server_priv/nodes文件并写入如下内容 [root@master ~]# cd /var/spool/torque/ [root@master 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守护进程, 负责监控本机并执行作业,位于所有计算节点上
[root@master ~]# 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 ] [root@master ~]# 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 [root@master ~]# 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 |
或者
[root@compute01 ~]# service pbs_mom start Starting TORQUE Mom: [ OK ] [root@compute01 ~]# 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脚本,串行运算(单节点)
[swpu@master 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脚本,并行运算
[swpu@master 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测试,确保所有节点上有此用户,并且在prog和icpi-64在所有计算节点上的路径一致(建议使用NFS来保证绝对路径的一致性)
2. 启动mpd程序时要使用相同的普通用户test,因为在调度时会连接计算节点上/tmp/mpd2.console_test。
如果不是则会报错,提示无法连接mpd进程,报错日志如下:
[swpu@master ~]$ 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://rabbitjian.blog.51cto.com/864581/1862678