TORQUE
TORQUE はオープンソースのリソースマネージャです。バッチジョブや分散された計算ノードを制御します。TORQUE を使うことで、ホーム・スモールオフィス用の Linux クラスタを構築してジョブを管理することができます。クラスタは一つのヘッドノードと多数の計算ノードから成ります。ヘッドノードでは torque-server デーモンを動作させ計算ノードでは torque-client デーモンを動作させます。ヘッドノードではスケジューラデーモンも動かします。
目次
インストール
AUR の torqueAUR パッケージをインストールしてください。
要件
/etc/hosts
クラスタの全てのマシンの /etc/hosts
に、クラスタの全てのマシンのホストネームを記述してください。例えば、クラスタを3つのマシン (mars, phobos, deimos) で構成する場合:
192.168.0.20 mars 192.168.0.21 phobos 192.168.0.22 deimos
ファイアウォールの設定 (インストールしている場合)
TORQUE を使用する全てのマシンの TCP を開いてください。
pbs_server (サーバー) と pbs_mom (クライアント) はデフォルトでは TCP と UDP のポート 15001-15004 を使用します。また、特権ポートが設定されている場合 (デフォルト) pbs_mom (クライアント) は UDP ポート 1023 以下も使用します。
NFS
技術的には、NFS を必ずしも使う必要はありませんが、使ったほうが設定が簡単になります。ビルドに使用するディスク領域を共有するために NFS の共有をサーバーや他のマシンで設定することを強く推奨します。
セットアップ
サーバー (ヘッドノード) の設定
ヘッドノード/スケジューラで以下の手順に従ってください。
/var/spool/torque/server_name
を編集してヘッドノードに名前を付けます。分かりやすいように /etc/hostname
のホストネームと一緒の名前にすることを推奨します。
torque サーバーを作成・設定:
# pbs_server -t create PBS_Server localhost.localdomain: Create mode and server database exists, do you wish to continue y/(n)?y
以下を実行して trqauthd を起動:
# trqauthd
最小限必要なオプションは以下の通りです。最初の行の "mars" を /var/spool/torque/server_name
で入力したホストネームに置き換えてください:
qmgr -c "set server acl_hosts = mars" qmgr -c "set server scheduling=true" qmgr -c "create queue batch queue_type=execution" qmgr -c "set queue batch started=true" qmgr -c "set queue batch enabled=true" qmgr -c "set queue batch resources_default.nodes=1" qmgr -c "set queue batch resources_default.walltime=3600" qmgr -c "set server default_queue=batch"
完了したジョブは一定期間キューの中に保持すると良いでしょう:
qmgr -c "set server keep_completed = 86400"
上記の場合、86400秒 = 24時間後に、キューからジョブが自動的に削除されます。qstat の -f
スイッチを使うことでキューから削除されたジョブのログを確認することができます:
qstat -f
サーバーの設定を確認したい場合は次のコマンドを実行:
# qmgr -c 'p s'
/var/spool/torque/server_priv/nodes
を編集して計算ノードを全て追加してください。ヘッドノードと同じように、LAN 上のマシンのホストネームと同じ名前を使うことを推奨します。構文は HOSTNAME np=x gpus=y properties です。
- HOSTNAME=マシンのホストネーム
- np=プロセッサの数
- gpus=gpu の数
- properties=コメント
ホストネームだけが必須で、後のフィールドは任意です。
例:
mars np=4 phobos np=2 deimos np=2
サーバーを再起動して新しいオプションを読み込ませてください。
クライアント (計算ノード) の設定
クラスタ内の全ての計算ノードで以下の手順に従ってください。
/var/spool/torque/mom_priv/config
を編集してサーバーに関する基本的な情報を記述:
$pbsserver mars # note: this is the hostname of the headnode $logevent 255 # bitmap of which events to log
サーバーの再起動
サーバーを再起動すると設定が適用されます:
# killall -s 9 pbs_server # pbs_server
クライアントの起動
クライアントマシンで以下を実行することでクライアントが起動します:
# pbs_mom
クラスタの状態を確認
クラスタの状態を確認したいときは、以下を実行:
$ pbsnodes -a
state が free となっていればノードはジョブを受け取る準備が出来ています。ノードが落ちている場合、state は down となります。
出力例:
mars state = free np = 4 ntype = cluster status = rectime=1308479899,varattr=,jobs=0.localhost.localdomain,state=free,netload=1638547057, gres=,loadave=2.69,ncpus=4,physmem=8195892kb,availmem=7172508kb,totmem=8195892kb, idletime=24772,nusers=1,nsessions=5,sessions=1333 1349 1353 1388 9095, uname=Linux mars 2.6.39-ck #1 SMP PREEMPT Sat Jun 18 14:19:01 EDT 2011 x86_64,opsys=linux mom_service_port = 15002 mom_manager_port = 15003 gpus = 2 phobos state = free np = 2 ntype = cluster status = rectime=1308479933,varattr=,jobs=,state=free,netload=1085755815, gres=,loadave=2.84,ncpus=2,physmem=4019704kb,availmem=5753552kb,totmem=6116852kb, idletime=7324,nusers=2,nsessions=6,sessions=1565 1562 1691 1716 1737 1851, uname=Linux phobos 2.6.37-ck #1 SMP PREEMPT Sun Apr 3 17:16:35 EDT 2011 x86_64,opsys=linux mom_service_port = 15002 mom_manager_port = 15003 gpus = 1 deimos state = free np = 2 ntype = cluster status = rectime=1308479890,varattr=,jobs=2.localhost.localdomain,state=free,netload=527239670, gres=,loadave=0.52,ncpus=2,physmem=4057808kb,availmem=3955624kb,totmem=4057808kb, idletime=644,nusers=1,nsessions=1,sessions=865, uname=Linux deimos 2.6.39-ck #1 SMP PREEMPT Sat Jun 11 12:36:21 EDT 2011 x86_64,opsys=linux mom_service_port = 15002 mom_manager_port = 15003 gpus = 1
ジョブをキューに追加
クラスタのキューにジョブを登録するには qsub コマンドを使います。
sleep を実行するだけの簡単なテスト:
$ echo "sleep 30" | qsub
キューの状態は下に書かれているように qstat コマンドで確認できます。待機中のジョブの状態は "Q" になります。ジョブを開始するには、スケジューラを実行:
# pbs_sched
torque-server の systemd デーモンを修正することで起動時に pbs_sched を有効にすることができます。
また、qsub にはジョブに名前をつけてスクリプトをキューに入れるという使い方もあります:
$ qsub -N x264 /home/facade/bin/x264_HQ.sh
Another example can use a wrapper script to make and queue work en mass automatically.
ジョブの状態の確認
作業状況を確認するには qstat
を使います:
$ qstat
Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 13.localhost generic-i686.pbs facade 00:05:06 R batch 14.localhost atom-i686.pbs facade 00:03:09 R batch 15.localhost core2-i686.pbs facade 00:01:02 R batch 16.localhost k7-i686.pbs facade 0 Q batch 17.localhost k8-i686.pbs facade 0 Q batch 18.localhost k10-i686.pbs facade 0 Q batch 19.localhost p4-i686.pbs facade 0 Q batch 20.localhost pentm-i686.pbs facade 0 Q batch 21.localhost ...ic-x86_64.pbs facade 0 Q batch 22.localhost atom-x86_64.pbs facade 0 Q batch 23.localhost core2-x86_64.pbs facade 0 Q batch 24.localhost k8-x86_64.pbs facade 0 Q batch 25.localhost k10-x86_64.pbs facade 0 Q batch
-n
スイッチを追加することでどのノードがどのジョブを実行しているのか確認できます:
$ qstat -n
localhost.localdomain: 405.localhost.lo facade batch i686-generic 3035 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 406.localhost.lo facade batch i686-atom 5768 1 0 -- 01:00 C 00:46 phobos/1+phobos/0 407.localhost.lo facade batch i686-core2 22941 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 408.localhost.lo facade batch i686-k7 10152 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 409.localhost.lo facade batch i686-k8 29657 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 410.localhost.lo facade batch i686-k10 16838 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 411.localhost.lo facade batch i686-p4 25340 1 0 -- 01:00 C 00:46 deimos/1+deimos/0 412.localhost.lo facade batch i686-pentm 12544 1 0 -- 01:00 R 00:20 phobos/1+phobos/0 413.localhost.lo facade batch x86_64-generic 4024 1 0 -- 01:00 C 00:13 mars/3+mars/2+mars/1+mars/0 414.localhost.lo facade batch x86_64-atom 19330 1 0 -- 01:00 C 00:13 mars/3+mars/2+mars/1+mars/0 415.localhost.lo facade batch x86_64-core2 2146 1 0 -- 01:00 C 00:13 mars/3+mars/2+mars/1+mars/0 416.localhost.lo facade batch x86_64-k8 17234 1 0 -- 01:00 R 00:11 mars/3+mars/2+mars/1+mars/0 417.localhost.lo facade batch x86_64-k10 -- 1 0 -- 01:00 Q -- --
参照
- TORQUE short course from University of California, San Francisco - Good guide with templates.
- TORQUE admin manual - Great resource and easy to read.
- Boston College's Torque user guide - Guide not extensive but gives a flavor for how end-users can use a cluster. Probably overkill for home clusters where only one user is submitting work.
- TORQUE mailing lists - The TORQUE community is very knowledgeable and a key asset.
- TORQUE users mailing list archives - Searchable archive of TORQUE-users.