Debian パッケージのインストール
# apt-get install torque-scheduler torque-server
サーバ名の設定. hikari を設定する
# vi /etc/torque/servername hikari
計算ノードの一覧を作成
# vi /etc/torque/nodes hikari101 np=6 hikari102 np=6 hikari103 np=6 hikari104 np=6 hikari105 np=6 hikari106 np=6 hikari107 np=6 hikari108 np=6 hikari109 np=6 hikari110 np=6 hikari111 np=6 hikari112 np=6 # cd /var/spool/torque/server_priv/ # ln -s /etc/torque/nodes .
再起動
# /etc/init.d/torque-server restart # /etc/init.d/torque-scheduler restart
Debian パッケージをインストールする
# apt-get install torque-mom torque-client
サーバ名の設定. hikari を設定
# vi /etc/torque/server_name hikari
# vi /etc/torque/config $usecp *:/work00 /work00 # cd /var/spool/torque/mom_priv/ # ln -s /etc/torque/config .
restart だと fail する. stop に時間がかかるらしい
# /etc/init.d/torque-mom stop # /etc/init.d/torque-mom start
確認
# momctl -d3 Host: hikari1xx/hikari1xx.ep.sci.hokudai.ac.jp Version: 2.4.16 PID: 15302 Server[0]: hikari (192.168.90.1:15001) Init Msgs Received: 0 hellos/1 cluster-addrs Init Msgs Sent: 1 hellos Last Msg From Server: 10 seconds (CLUSTER_ADDRS) Last Msg To Server: 10 seconds HomeDirectory: /var/spool/torque/mom_priv stdout/stderr spool directory: '/var/spool/torque/spool/' (91020497 blocks available) NOTE: syslog enabled MOM active: 11 seconds Check Poll Time: 45 seconds Server Update Interval: 45 seconds LogLevel: 0 (use SIGUSR1/SIGUSR2 to adj ust) Communication Model: RPP MemLocked: TRUE (mlock) TCP Timeout: 20 seconds Prolog: /var/spool/torque/mom_priv/pr ologue (disabled) Alarm Time: 0 of 10 seconds Trusted Client List: 192.168.90.101,192.168.90.1,1 92.168.90.111,192.168.90.110,192.168.90.109,192.168.9 0.108,192.168.90.107,192.168.90.106,192.168.90.105,19 2.168.90.104,192.168.90.103,192.168.90.102,127.0.0.1 Copy Command: /usr/bin/scp -rpB NOTE: no local jobs detected diagnostics complete
確認. まだキューを作成していないので何も表示されないはず
# qstat -a
今回は short (30 分, 優先度高) と, long (無制限, 優先度低) の 2 つを用意する.
# qmgr -c "set server scheduling=true" # qmgr -c "create queue long queue_type=execution" # qmgr -c "create queue short queue_type=execution" # qmgr -c "set queue long started=true" # qmgr -c "set queue short started=true" # qmgr -c "set queue long priority=30" # qmgr -c "set queue short priority=50" # qmgr -c "set queue long enabled=true" # qmgr -c "set queue short enabled=true" # qmgr -c "set queue long resources_default.nodes=1" # qmgr -c "set queue short resources_default.nodes=1" # qmgr -c "set queue short resources_default.walltime=3600" # qmgr -c "set server default_queue=short"
確認. 以下のコマンドでキューの情報が出れば OK.
# qstat -q
試しにジョブを実行する. qstat でジョブの情報が得られれば OK. root ではキューを投げられないので注意.
$ echo "sleep 30" | qsub $ qstat
引数にユーザ名を与える.
# ruby /work00/bin/adduser.rb sugiyama
やっていることは..., 以下, スクリプトから適当に抜粋.
1) homedir が無ければそれを作る workdir = "/work00" homedir = "#{workdir}/#{user}" 2) /etc/passwd, /etc/group, /etc/shadow にエントリを追加. passwd = "#{user}:x:#{uid}:#{uid}:,,,:#{homedir}:/bin/bash" shadow = "#{user}:!:14249:0:99999:7:::" group = "#{user}:x:#{uid}:"
ここでは, /work00/sugiyama/a.out を実行するスクリプト (test.sh) を作る.
$ vi test.sh #!/bin/sh #PBS -N sample #PBS -j oe #PBS -q long #PBS -M sugiyama@gfd-dennou.org #PBS -m abe cd /work00/sugiyama ./a.out exit 0
うまくいけば, 出力が sample.o** に書き出される.
$ qsub test.sh $ qstat
ここでは, /work00/sugiyama/a.out を実行するスクリプト (testmpi.sh) を作る.
$ vi testmpi.sh #!/bin/sh #PBS -N sample #PBS -j oe #PBS -q long #PBS -M sugiyama@gfd-dennou.org #PBS -m abe #PBS -l nodes=2 cd /work00/sugiyama mpiexec -n 2 ./a.out exit 0
うまくいけば, 出力が sample.o** に書き出される.
$ qsub testmpi.sh $ qstat