まとめて投入した複数のバッチを順番に1本づつ実行させたい。投入ノードと計算ノードが同一かつ計算ノードが1つのみという単純構成。パッケージで入れたこともありすんなり出来たがメモしておく。
まずは pbs_server, pbs_scheduler, pbs_mom をインストール
apt-get install torque-server apt-get install torque-mom apt-get install torque-clientサーバノードの指定は vi /etc/torque/server_name (/var/spool/torque/server_priv/server_name)
ホスト名計算ノードの指定は vi /var/spool/torque/server_priv/nodes
ホスト名 np=2np=2 はこの計算ノードの最大同時実行数。
もし pbs_server が起動していなければ手動で pbs_server -t create を実行後に qmgr コマンドを実行し、以下を設定する
c q キュー名 queue_type=e s s default_queue=キュー名 s s scheduling = t s s acl_hosts = ホスト名 s q キュー名 started=t s q キュー名 enabled=t s q キュー名 max_running=1pbs_server, pbs_sched, pbs_mom が動いていたら一旦全部 kill して、手動で起動してみる。
/etc/init.d/torque_server start /etc/init.d/torque_sched start /etc/init.d/torque_mom start
pbs_server, pbs_sched, pbs_mom が起動したのでジョブ投入してみる。
$ echo sleep 60 | qsub 1.ホスト名 qstat Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 1.ホスト名 STDIN JC 0 R キュー名 $ echo sleep 60 | qsub 2.ホスト名 $ qstat Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 1.ホスト名 STDIN JC 0 R キュー名 2.ホスト名 STDIN JC 0 Q キュー名
このキューの max_running は 1 なので 2 本投入したうち 1 本だけが R (Run) で後から投入したジョブは実行待ちで Q (Queued) になっている。一人で使う分にはこれで申し分ない。
<2011/12/19 追記>
Syslog に pbs_server のエラーが大量に出ていた:
Dec 19 04:51:02 huge_host pbs_server: LOG_ERROR::is_request, bad attempt to connect from 10.0.2.15:1023 (address not trusted - check entry in server_priv/nodes)
/var/spool/torque/server_priv/nodes というファイルを新規に作って以下一行記述
hoge_host np=2 headnode
Daemon 再起動した。