TORQUE安装笔记:

TORQUE安装笔记:

Torque Resource Manager是一套OpenSource的软体,主要是用来控管丛集式电脑的工作排程,虽然是免费软体但功能还算蛮完整的,可以设定不同的工作类别,分配不同的资源,还可以设定工作完成时的e-mail通知...等等,我所知道的几座丛集式电脑上都有安装这个。 会重新安装这套软体(版本2.4.17,于RHEL4上)是因为各个节点间的版本不一样,造成了一些奇奇怪怪的问题,像是什么送工作就会让伺服器服务停掉啦. ..等等的,安装步骤如下,主要其实也是参考官方说明来操作:

  1. 首先到官方网站上去找你要的版本
    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以前的版本,要从Archived Versions Library找,下载后请先解压缩。
  2. 执行安装设定

    [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 
    为了搞清楚哪些是后来装上去的我都会额外指定大写的资料夹。 

  3. 看到Ready for 'make'之后,请下make; make install来安装。
  4. 若不打算以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上使用的路径一样。

到此基本的安装就完成了,不过接下来的设定才是最重要的部分!


主机上的设定

  1. 环境设定: 
    如果不是装在预设位置的话需要先把程式路径设定在环境变数里,不这么做的话就有可能在执行时遇上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
  2. 新增服务: 
    这步骤可以略过没关系,主要的目的是要让管理比较便利,能经由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的值。 

  3. 将服务设定为开机启动: 
    开机启动的设定有两种方式,如果你是照着我上面写的做到这里的话,请用下面这个方法: 
    #在伺服器端,以下这两个为必要服务 
    [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了!

  4. 初始化资料库: 
    使用前要先初始化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 "p​​rint server"可以看到现在的设定 

  5. 伺服器设定 
    其实资料库初始化之后大概就可以直接使用了,这边列出几个可能会用上的设定:
     
    #让使用者可以查询别人送的工作 
    [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"

  6. 设定运算节点资讯: 
    节点名称及可用的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这个档案,或者是没有重新启动伺服器所致。 

  7. 启动伺服器以及排程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指令复制到该处即可。  

测试 
测试时可以用随便挑个指令或是执行档来跑,要注意送工作不能用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的状态,如果一切正常再试试把防火墙暂时停掉(关于防火墙的设定可以看这篇说明 )  

设定的备份 
可以看到在执行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没有办法正确运作。   在我手边这台机器,执行该指令时的确会出现此错误讯息,但是排程工具仍旧能正常运作,所以我想这可能不是造成错误的主因。  


参考资料: TORQUE Admin Manual 
[torqueusers] a question about $usecp 

你可能感兴趣的:(Linux系统,量化资源)