ジョブスケジューラー torque の設定
- 履歴
- 2013/04/09 杉山耕一郎, 荻原弘尭
- 2013/10/04 荻原弘尭
- 2017/10/19 荻原弘尭
スケジューラーの設定
ログインノードでのインストールと設定
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
- /work00 を NFS していることを教え込む. (これにより標準出力・エラーをログインノードに戻すのに scp を使わないで済む)
-
# 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 (時間無制限, ユーザの同時ジョブ数7, 全体のジョブ数20, 優先度低) の 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 long max_running=20" # qmgr -c "set queue long max_user_queuable=7" # 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
ユーザ設定
- ログインノードにアカウントがあっても計算ノードにアカウントが無いと, ジョブを実行できない. /etc/passwd, /etc/shadow, ホームディレクトリを用意する.
- /work00/bin/adduser.rb として, ユーザ登録スクリプトを用意した.
引数にユーザ名を与える.
# 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}:"
single CPU テスト
- "/work00/ユーザ名" 以下でジョブを投入する.
- root 権限ではジョブを投入できないので注意.
ここでは, /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
MPI テスト
- "/work00/ユーザ名" 以下でジョブを投入する.
- root 権限ではジョブを投入できないので注意.
ここでは, /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
参考
- http://www.clusterresources.com/torquedocs21/a.ltorquequickstart.shtml
- http://debianclusters.cs.uni.edu/index.php/Resource_Manager:_Torque
- http://www.ie.u-ryukyu.ac.jp:16080/howto/index.php?Howto%2FTORQUE
- http://www.cms-initiative.jp/ja/research-support/supercomputing-support/psi/doc/torque
- http://docs.adaptivecomputing.com/torque/6-1-1/adminGuide/torqueAdminGuide-6.1.1.pdf