本文共 7657 字,大约阅读时间需要 25 分钟。
TORQUE安装笔记:
是一套OpenSource的软体,主要是用来控管丛集式电脑的工作排程,虽然是免费软体但功能还算蛮完整的,可以设定不同的工作类别,分配不同的资源,还可以设定工作完成时的e-mail通知...等等,我所知道的几座丛集式电脑上都有安装这个。 会重新安装这套软体(版本2.4.17,于RHEL4上)是因为各个节点间的版本不一样,造成了一些奇奇怪怪的问题,像是什么送工作就会让伺服器服务停掉啦. ..等等的,安装步骤如下,主要其实也是参考官方说明来操作:
- 首先到官方网站上去找你要的版本
2.4.x | 官方已于2012 Aug.31停止对此版本的支援,2.4.17为最终版本 |
2.5.x | 未来只会新增小功能,官方表示这是最值得信赖的版本,推荐安装2.5.12 |
3.0.x | 除了拥有2.5.x的所有功能以外,新增对「非统一记忆体存取」 (Non-Uniform Memory Access, NUMA)架构的支援,此版本不向下相容,官方已于2012 Dec.31停止对此版本的支援,3.0.6为最终版本 |
4.xx | 版本4以后多是针对较为庞大的运算环境(PETA flops)所设计的,有兴趣的人可以自行研究 |
如果想要抓2.5.x以前的版本,要从找,下载后请先解压缩。 - 执行安装设定
[root@HPC TORQUE]$ ./configure --prefix=/usr/TORQUE --with-scp \ --with-server-home=/var/spool/TORQUE checking ...(略) Building components: server=yes mom=yes clients=yes gui=no drmaa=no pam=no PBS Machine type: linux Remote copy: /usr/bin/scp -rpB PBS home: /var/spool/TORQUE Default server: HPC Unix Domain sockets: yes Tcl: disabled Tk: disabled Ready for 'make'. |
--with-scp是要求它使用scp来当复制档案的工具,预设为rcp(建议使用scp) 这里的prefix是放主程式的位置,不加的话预设为/usr/local/bin、/usr/local/sbin...等位置 而with-server-home是放设定档的地方,预设值为/var/spool/torque 为了搞清楚哪些是后来装上去的我都会额外指定大写的资料夹。 - 看到Ready for 'make'之后,请下make; make install来安装。
- 若不打算以NFS共享已安装的TORQUE到运算节点上的话,可以用以下指令制作给节点用的安装档:
[root@HPC TORQUE]$ make packages Building ./torque-package-clients-linux-x86_64.sh ... Building ./torque-package-mom-linux-x86_64.sh ... ...(略) [root@HPC TORQUE]$ ls torque-package-clients-linux-x86_64.sh torque-package-devel-linux-x86_64.sh torque-package-doc-linux-x86_64.sh torque-package-mom-linux-x86_64.sh torque-package-server-linux-x86_64.sh |
节点上的安装仅需torque-package-clients-linux-x86_64.sh、torque-package-mom-linux-x86_64.sh这两个档案复制过去后执行./torque-package-clients-linux-x86_64.sh --install即可完成节点上的安装,路径会跟server上使用的路径一样。
到此基本的安装就完成了,不过接下来的设定才是最重要的部分!
主机上的设定
- 环境设定: 如果不是装在预设位置的话需要先把程式路径设定在环境变数里,不这么做的话就有可能在执行时遇上pbs_server: not found之类的错误讯息,或是在呼叫相关的函式库时出现error while loading shared libraries: libtorque.so.2: cannot open shared object file: No such file or directory,请将以下设定写入你的环境设定档(我是写在/etc/profile.d/torque ,sh里面):
export PBS=/usr/TORQUE export PBS_SERVER_HOME=/var/spool/TORQUE export TORQUE=$PBS export PATH=$PBS/bin:$PBS/sbin:$PATH export MANPATH=$PBS/man:$MANPATH export LD_LIBRARY_PATH=$PBS/lib:$LD_LIBRARY_PATH |
然后source一下让设定生效,再用which检查设定是否正确 [root@HPC ~]$ source /etc/profile.d/torque.sh [root@HPC ~]$ which pbs_server /usr/TORQUE/sbin/pbs_server |
之后检查一下TORQUE Server的server_name有没有设定对,这是程式帮你设定的,应该是没问题 [root@HPC ~]# cat /var/spool/TORQUE/server_name HPC |
- 新增服务: 这步骤可以略过没关系,主要的目的是要让管理比较便利,能经由service指令查询运作状态:
[root@HPC torque-2.4.17]$ service pbs_server status pbs_server: unrecognized service [root@HPC torque-2.4.17]$ cp contrib/init.d/pbs_server /etc/init.d [root@HPC torque-2.4.17]$ cp contrib/init.d/pbs_mom /etc/init.d [root@HPC torque-2.4.17]$ cp contrib/init.d/pbs_sched /etc/init.d [root@HPC torque-2.4.17]$ chkconfig --add pbs_server [root@HPC torque-2.4.17]$ chkconfig --add pbs_mom [root@HPC torque-2.4.17]$ chkconfig --add pbs_sched [root@HPC torque-2.4.17]$ service pbs_server status pbs_server is not running |
要注意,在这个版本里contrib/init.d/底下的script,路径都是指向预设路径,所以如果不是安装到预设路径下的人记得要先改一下 档案中PBS_DAEMON以及PBS_HOME的值。 - 将服务设定为开机启动: 开机启动的设定有两种方式,如果你是照着我上面写的做到这里的话,请用下面这个方法:
#在伺服器端,以下这两个为必要服务 [root@HPC torque-2.4.17]$ chkconfig pbs_server on [root@HPC torque-2.4.17]$ chkconfig pbs_sched on #如果也要把伺服器端加入运算资源中,那也要启动pbs_mom [root@HPC torque-2.4.17]$ chkconfig pbs_mom on |
若你主机上的TORQUE不是自己安装的,请检察/etc/里有没有pbs.conf或是torque.conf之类的设定档,如果有的话请找找/etc/init.d下有没有叫做pbs或torque的script,很有可能是靠这个设定档来控制开机时要启动什么服务。 我手边的这台机器就是这样,设定档为/etc/torque.conf,而PBS init script就是/etc/init.d/torque(chkconfig中的服务也只有torque一个,但这个script里面就有写好关于那三个服务的操作控制,简言之,用这个script就可以控制那三个服务)。 在这种情况下请修改/etc/torque.conf: [root@HPC ~]$ cat /etc/torque.conf PBS_EXEC=/usr/TORQUE PBS_HOME=/var/spool/TORQUE # 1表示启动,0则为不启动 PBS_START_SERVER=1 #同样的,如果你的主机也要加入运算资源里,那这个也要启动 PBS_START_MOM=1 PBS_START_SCHED=1 PBS_SERVER=HPC #最后确定一下torque这个服务有设定成开机启动: [root@HPC ~]$ chkconfig --list |grep "torque" torque 0:off 1:off 2:on 3:on 4:on 5:on 6:off #这样就OK了! |
- 初始化资料库: 使用前要先初始化TORQUE的资料库,有两个方法选一个即可
#方法一: [root@HPC torque-2.4.17]$ pbs_server -t create #方法二:用里面的script,后面接你要让它成为TORQUE管理者的帐号 [root@HPC torque-2.4.17]$ ./torque.setup root initializing TORQUE (admin: root@HPC) Max open servers: 9 Max open servers: 9 |
初始化之后就可以依需要设定伺服器了(例如walltime等参数) 下qmgr -c "print server"可以看到现在的设定 - 伺服器设定 <br>其实资料库初始化之后大概就可以直接使用了,这边列出几个可能会用上的设定:
#让使用者可以查询别人送的工作 [root@HPC ~]$ qmgr -c "set server query_other_jobs = True" #允许于运算节点上送工作(或者是去修改/etc/hosts.equiv这样就不需要设定这参数) [root@HPC ~]$ qmgr -c "set server allow_node_submit = True" #限制使用者所能送的工作数(这里queue "batch"要依你设定的queue的名称来改 #如果没有做额外设定的话预设值就是batch) [root@HPC ~]$ qmgr -c "set queue batch max_user_queuable=20" #更改预设的walltime(预设为一小时,以下将会把他设定为两小时,用02:00:00也可以) [root@HPC ~]$ qmgr -c "set queue batch resources_default.walltime=7200" #设定batch这个工作序列最多可以使用到几颗运算核心 [root@HPC ~]$ qmgr -c "set queue batch resources_max.ncpus = 30" |
- 设定运算节点资讯: 节点名称及可用的CPU/GPU数量等资讯都是记录在/var/spool/TORQUE/server_priv/nodes里,格式如下: 主机名 可用核心数 node2 np=12 node3 np=12 设定完后重新启动pbs_server,再用pbsnodes可以看当前运算节点的状态。 如果遇上:
[root@HPC ~]$ pbsnodes pbsnodes: Server has no node list MSG=node list is empty - check 'server_priv/nodes' file |
那可能是忘了编写nodes这个档案,或者是没有重新启动伺服器所致。 - 启动伺服器以及排程daemon 如果你的伺服器到现在都还没启动的话,现在可以把他启动了,靠service指令启动或是直接执行都可以
[root@HPC ~]$ pbs_server [root@HPC ~]$ pbs_sched #确认一下伺服器的状态 [root@HPC ~]$ qmgr -c 'list server' Server HPC server_state = Active scheduling = True total_jobs = 0 ....(略) #确认一下工作列里的工作可以开始进行了 [root@HPC ~]$ gmqr -c 'list queue batch' Queue batch queue_type = Execution total_jobs = 0 ...(略) enabled = True started = True |
OK!
运算节点上的设定
用先前制作出来的package在运算节点上安装好之后,跟设定伺服器一样先依需求新增pbs_mom的服务,并把它设定为开机启动,之后就只要再新增一个config档就可以了: [root@node1 ~]$ vi /var/spool/TORQUE/mom_priv/config $pbsserver HPC $logevent 255 #其实只有上面两行是必备的,下面这行是标明作业系统 opsys RHEL4 $usecp *:/home /home $usecp *:/scra /scra $usecp *:/scra2 /scra2 # 下面这行是只允许 $restricted HPC #最后启动pbs_mom [root@node1 ~]$ service pbs_mom start Starting TORQUE Mom: [ OK ] #此时执行pbsnodes,如果设定正确应该就可以看到node上线了 [root@node1 ~]$ pbsnodes node1 state = free np = 12 ntype = cluster status = ......叭啦叭啦一狗票(略) |
这config里的usecp呢,是针对NFS档案系统设定的,举例来说我在登入节点有设定将/home、/scra、/scra2以NFS广播出去,在运算节点上也都有挂载这些资料夹,那如果我在这几个地方送工作的话,那些工作输出以及错误输出纪录档(*.o/*.e)时就没有必要透过scp来做跨机器的复制,这里的设定就是告诉TORQUE对于要送到这些地方的资料直接用一般的cp指令复制到该处即可。
测试 <br>测试时可以用随便挑个指令或是执行档来跑,要注意送工作不能用root: [Cypresslin@HPC work]# vi TORQUEtest.sh #!/bin/sh #PBS -N TEST #PBS -l nodes=HPC echo "TORQUE TEST on " `hostname` echo "Current working directory is " `pwd` [root@HPC work]$ qsub TORQUEtest.sh qsub: Bad UID for job execution MSG=root user root not allowed [Cypresslin@HPC work]# qsub TORQUEtest.sh 1.HPC [Cypresslin@HPC work]# qstat Job id Name User Time Use S Queue -------- ------ ------------ --------- - ------ 1.HPC TEST Cypresslin 00:00:00 C batch #因为指令很短,所以一瞬间就执行完毕了,并会产生输出与错误纪录 #状态栏位(S)说明如下: # R = running # Q = queued # H = held # C = completed after having run # E = exiting after having run [Cypresslin@HPC work]# ls TEST.o1 TEST.e1 TORQUEtest.sh [Cypresslin@HPC work]# cat TEST.o1 TORQUE TEST on HPC Current working directory is /work #看到讯息正确无误就OK啦! 稍后也可以指定不同node去测试,会出现对应的主机名称 #如果没有出错的话,纪录stderr的TEST.e1是不会有东西的 |
如果在测试时发现送的工作一直处在Queue的状态,可以用pbsnodes检查看看node的状态,如果一切正常再试试把防火墙暂时停掉(关于防火墙的设定可以看 )
设定的备份 <br>可以看到在执行qmgr -c 'print server'或是qmgr -c 'print queue batch'时,出现的都是set server ...、set queue ...等执行命令句,所以只要把这些结果写到某个档案就可以把他们备份下来: [root@HPC ~]$ qmgr -c 'print server' > TORQUE.server.bak #要把备份的设定叫回来也很简单,只要: [root@HPC ~]$ qmgr < TORQUE.server.bak |
如果在网路上搜寻,有时可能会看到有文章说到关于执行host $HOSTNAME时出现Host XXXX not found: 3(NXDOMAIN)这个错误讯息,从而导致TORQUE没有办法正确运作。 在我手边这台机器,执行该指令时的确会出现此错误讯息,但是排程工具仍旧能正常运作,所以我想这可能不是造成错误的主因。 参考资料:
转载地址:http://hekli.baihongyu.com/