系统环境: rhel6 x86_64 iptables and selinux disabled
主机: 192.168.122.121 server21.example.com 计算节点
192.168.122.173 server73.example.com 计算节点
192.168.122.135 server35.example.com 调度节点(注:时间需同步)
所需的包:icpi-64 torque-4.1.2.tar.gz
相关网址:http://www.clusterresources.com/downloads/torque/
注:首先建立调度节点与所有计算节点间的
ssh
无密码连接,方法可参考Rhel6-mpich2
hpc集群.pdf
#安装并配置torque
以下步骤在server35(调度节点)上实施:
[root@server35
kernel]# tar zxf torque-4.1.2.tar.gz
[root@server35
kernel]# cd torque-4.1.2
[root@server35
torque-4.1.2]# ./configure --with-rcp=scp
--with-default-server=server35.example.com
此时会出现如下错误:
(1)configure:
error: no acceptable C compiler found in $PATH
(2)configure:
error: cannot find a make command
(3)configure:
error: TORQUE needs lib openssl-devel in order to build
(4)configure:
error: TORQUE needs libxml2-devel in order to build
解决方法如下:
[root@server35
torque-4.1.2]# yum install gcc -y
[root@server35
torque-4.1.2]# yum install make -y
[root@server35
torque-4.1.2]# yum install openssl-devel -y
[root@server35
torque-4.1.2]# yum install libxml2-devel -y
[root@server35
torque-4.1.2]# make && make install
(torque 的配置目录:
/var/spool/torque)
[root@server35
torque-4.1.2]# make packages (生成计算节点安装包,即在
host1
和
host2
上安装的包,确保所有计算
节点和服务节点的架构是相同的)
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
[root@server35
torque-4.1.2]# cd contrib/init.d/
[root@server35
init.d]# cp pbs_server /etc/init.d/
[root@server35
init.d]# cp pbs_sched /etc/init.d/
[root@server35
init.d]# cp pbs_mom /etc/init.d/ (如果调度端同时做计算的话就拷贝)
[root@server35
init.d]# scp pbs_mom 192.168.122.121:/etc/init.d/
[root@server35
init.d]# scp pbs_mom 192.168.122.173:/etc/init.d/
[root@server35
init.d]# cd /root/kernel/torque-4.1.2
[root@server35
torque-4.1.2]# ./torque.setup root (设置
torque
的管理帐户)
[root@server35
torque-4.1.2]# vim /var/spool/torque/server_priv/nodes
server21.example.com
server73.example.com
(设定计算节点,服务节点也可做计算)
[root@server35
torque-4.1.2]# scp torque-package-clients-linux-x86_64.sh
torque-package-mom-linux-x86_64.sh [email protected]:/root/kernel/
[root@server35
torque-4.1.2]# scp torque-package-clients-linux-x86_64.sh
torque-package-mom-linux-x86_64.sh [email protected]:/root/kernel/
[root@server35
torque-4.1.2]# qterm -t quick (停止torque)
[root@server35
torque-4.1.2]# /etc/init.d/pbs_server start (启动torque)
[root@server35
torque-4.1.2]# /etc/init.d/pbs_sched start (启动调度程序)
以下步骤在server21和server73(所有计算节点)上实施:
[root@server21
kernel]# ./torque-package-clients-linux-x86_64.sh –install
[root@server21
kernel]# ./torque-package-mom-linux-x86_64.sh –install
注:如果计算节点的架构和服务节点不同,安装方法如下:
tar
zxf torque-4.1.2.tar.gz
./configure
--with-rcp=rcp –with-default-server=server35.example.com
make
make
install_mom install_clients
[root@server21
kernel]# vim /var/spool/torque/mom_priv/config
$pbsserver
server35.example.com
$logevent
255
[root@server21
kernel]# /etc/init.d/pbs_mom start
[root@server21
kernel]# su - lmx
[lmx@server21
~]$ mpdboot -n 2 -f mpd.hosts
测试前配置:
注:torque
的调度需要使用非
root 用户
[root@server35
~]# su - lmx
[lmx@server35
~]$ vim job1.pbs (串行作业)
#!/bin/bash
#PBS
-N job1
#PBS
-o job1.log
#PBS
-e job1.err
#PBS
-q batch
cd
/home/lmx
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
./prog
[lmx@server35
~]$ vim job2.pbs (并行作业)
#!/bin/bash
#PBS
-N job2
#PBS
-o job2.log
#PBS
-e job2.err
#PBS
-q batch
#PBS
-l nodes=2
cd
/home/lmx
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 ./prog
[lmx@server35
~]$ vim prog
#!/bin/bash
echo
1000000000 | ./icpi-64 (icpi 程序是
mpi 自带的,拷贝过来即可)
[lmx@server35
~]$ chmod +x prog
qsub
jobx.pbs(提交作业)
qstat
(查看作业)
pbsnodes
(查看节点)
测试结果:
[lmx@server35
~]$ qsub job1.pbs (提交串行作业)
10.server35.example.com
[lmx@server35
~]$ qstat
Job
id Name User Time Use S
Queue
-------------------------
---------------- --------------- -------- - -----
10.server35
job1 lmx 0 R batch
[lmx@server35
~]$ pbsnodes
server21.example.com
state = job-exclusive
np = 1
ntype = cluster
jobs =
0/10.server35.example.com
status =
rectime=1375075596,varattr=,jobs=,state=free,netload=18001357,gres=,loadave=0.00,ncpus=1,physmem=285532kb,availmem=1196472kb,totmem=1301332kb,idletime=7413,nusers=0,nsessions=0,uname=Linux
server21.example.com 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36
EDT 2012 x86_64,opsys=linux
mom_service_port = 15002
mom_manager_port = 15003
gpus = 0
server73.example.com
state =
free
np = 1
ntype = cluster
status =
rectime=1375075593,varattr=,jobs=,state=free,netload=18502638,gres=,loadave=0.00,ncpus=1,physmem=285532kb,availmem=1194920kb,totmem=1301332kb,idletime=12865,nusers=0,nsessions=0,uname=Linux
server73.example.com 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36
EDT 2012 x86_64,opsys=linux
mom_service_port = 15002
mom_manager_port = 15003
gpus = 0
[lmx@server35
~]$ cat job1.log (查看计算结果)
Running
on hosts server21.example.com
Time
is Mon Jul 29 13:26:58 CST 2013
Directory
is /home/lmx
This
job runs on the following nodes:
server21.example.com
This
job has allocated 1 node
Enter
the number of intervals: (0 quits) pi is approximately
3.1415926535899708, Error is 0.0000000000001776
wall
clock time = 31.147027
Enter
the number of intervals: (0 quits) No number entered; quitting
[lmx@server35
~]$ qsub job2.pbs (提交并行作业)
11.server35.example.com
[lmx@server35
~]$ qstat
Job
id Name User Time Use S
Queue
-------------------------
---------------- --------------- -------- - -----
10.server35
job1 lmx 00:00:31 C batch
11.server35
job2 lmx 0 R batch
[lmx@server35
~]$ pbsnodes
server21.example.com
state = job-exclusive
np = 1
ntype = cluster
jobs =
0/11.server35.example.com
status =
rectime=1375075821,varattr=,jobs=,state=free,netload=18314029,gres=,loadave=0.02,ncpus=1,physmem=285532kb,availmem=1196340kb,totmem=1301332kb,idletime=7638,nusers=1,nsessions=2,sessions=1209
2980,uname=Linux server21.example.com 2.6.32-279.el6.x86_64 #1 SMP
Wed Jun 13 18:24:36 EDT 2012 x86_64,opsys=linux
mom_service_port = 15002
mom_manager_port = 15003
gpus = 0
server73.example.com
state =
job-exclusive
np = 1
ntype = cluster
jobs =
0/11.server35.example.com
status =
rectime=1375075818,varattr=,jobs=,state=free,netload=18756208,gres=,loadave=0.00,ncpus=1,physmem=285532kb,availmem=1194860kb,totmem=1301332kb,idletime=13090,nusers=0,nsessions=0,uname=Linux
server73.example.com 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36
EDT 2012 x86_64,opsys=linux
mom_service_port = 15002
mom_manager_port = 15003
gpus = 0
[lmx@server35
~]$ cat job2.log (查看计算结果)
Time
is Mon Jul 29 13:30:43 CST 2013
Directory
is /home/lmx
This
job runs on the following nodes:
server73.example.com
server21.example.com
This
job has allocated 2 nodes
Enter
the number of intervals: (0 quits) pi is approximately
3.1415926535900072, Error is 0.0000000000002141
wall
clock time = 16.151319
Enter
the number of intervals: (0 quits) No number entered; quitting
注:
1.
测试时需确保所有节点上有lmx这个用户
2.
启动 mpd
程序时要使用lmx用户([lmx@server21
~]$ mpdboot -n 2 -f mpd.hosts) 因为在调度时会连接计算节点
上/tmp/mpd2.console_wxh