TORQUE安装笔记:
Torque Resource Manager是一套OpenSource的软体,主要是用来控管丛集式电脑的工作排程,虽然是免费软体但功能还算蛮完整的,可以设定不同的工作类别,分配不同的资源,还可以设定工作完成时的e-mail通知...等等,我所知道的几座丛集式电脑上都有安装这个。 会重新安装这套软体(版本2.4.17,于RHEL4上)是因为各个节点间的版本不一样,造成了一些奇奇怪怪的问题,像是什么送工作就会让伺服器服务停掉啦. ..等等的,安装步骤如下,主要其实也是参考官方说明来操作:
- 首先到官方网站上去找你要的版本
如果想要抓2.5.x以前的版本,要从Archived Versions Library找,下载后请先解压缩。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)所设计的,有兴趣的人可以自行研究 - 执行安装设定
--with-scp是要求它使用scp来当复制档案的工具,预设为rcp(建议使用scp)[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: disabledReady for 'make'.
这里的prefix是放主程式的位置,不加的话预设为/usr/local/bin、/usr/local/sbin...等位置
而with-server-home是放设定档的地方,预设值为/var/spool/torque
为了搞清楚哪些是后来装上去的我都会额外指定大写的资料夹。
- 看到Ready for 'make'之后,请下make; make install来安装。
- 若不打算以NFS共享已安装的TORQUE到运算节点上的话,可以用以下指令制作给节点用的安装档:
节点上的安装仅需torque-package-clients-linux-x86_64.sh、torque-package-mom-linux-x86_64.sh这两个档案复制过去后执行./torque-package-clients-linux-x86_64.sh --install即可完成节点上的安装,路径会跟server上使用的路径一样。[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
到此基本的安装就完成了,不过接下来的设定才是最重要的部分!
主机上的设定
- 环境设定:
如果不是装在预设位置的话需要先把程式路径设定在环境变数里,不这么做的话就有可能在执行时遇上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里面):
然后source一下让设定生效,再用which检查设定是否正确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
之后检查一下TORQUE Server的server_name有没有设定对,这是程式帮你设定的,应该是没问题[root@HPC ~]$ source /etc/profile.d/torque.sh
[root@HPC ~]$ which pbs_server
/usr/TORQUE/sbin/pbs_server
[root@HPC ~]# cat /var/spool/TORQUE/server_name
HPC - 新增服务:
这步骤可以略过没关系,主要的目的是要让管理比较便利,能经由service指令查询运作状态:
要注意,在这个版本里contrib/init.d/底下的script,路径都是指向预设路径,所以如果不是安装到预设路径下的人记得要先改一下 档案中PBS_DAEMON以及PBS_HOME的值。[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
- 将服务设定为开机启动:
开机启动的设定有两种方式,如果你是照着我上面写的做到这里的话,请用下面这个方法:
若你主机上的TORQUE不是自己安装的,请检察/etc/里有没有pbs.conf或是torque.conf之类的设定档,如果有的话请找找/etc/init.d下有没有叫做pbs或torque的script,很有可能是靠这个设定档来控制开机时要启动什么服务。#在伺服器端,以下这两个为必要服务
[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
我手边的这台机器就是这样,设定档为/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的资料库,有两个方法选一个即可
初始化之后就可以依需要设定伺服器了(例如walltime等参数)#方法一:
[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
下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可以看当前运算节点的状态。 如果遇上:
那可能是忘了编写nodes这个档案,或者是没有重新启动伺服器所致。[root@HPC ~]$ pbsnodes
pbsnodes: Server has no node list MSG=node list is empty - check 'server_priv/nodes' file
- 启动伺服器以及排程daemon
如果你的伺服器到现在都还没启动的话,现在可以把他启动了,靠service指令启动或是直接执行都可以
OK![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
运算节点上的设定
用先前制作出来的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 = ......叭啦叭啦一狗票(略) |
测试 <br>测试时可以用随便挑个指令或是执行档来跑,要注意送工作不能用root:
[Cypresslin@HPC work]# vi TORQUEtest.sh |
设定的备份 <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 |
参考资料: TORQUE Admin Manual
[torqueusers] a question about $usecp