$ sudo apt-get install torque-server torque-mom torque-client torque-scheduler
$ ps -e | grep pbs
$ sudo service torque-mom stop $ sudo service torque-scheduler stop $ sudo service torque-server stop
※service コマンドで torque-server が終了しない場合
$ sudo kill 24277
24277 は、pbs_server の PID で ps -e | grep pbs
で確認する
$ sudo mkdir /var/spool/torque/server_priv $ sudo chmod 777 /var/spool/torque/spool /var/spool/torque/undelivered $ sudo chmod o+t /var/spool/torque/spool /var/spool/torque/undelivered
$ sudoedit /etc/torque/server_name
ホスト名を入れる
$ sudo pbs_server -t create
$ ps -e | grep pbs $ sudo kill xxxxx $ sudoedit /var/spool/torque/server_priv/nodes
ノード名 np=CPU数
を列挙していくserver np=8 node1 np=4 node2 np=4 node3 np=2
$ sudoedit /etc/hosts
$ sudo service torque-server start $ sudo qmgr < queue.conf
# # Create queues and set their attributes. # # # Create and define queue F # create queue F set queue F queue_type = Execution set queue F resources_default.ncpus = 1 set queue F resources_default.nodes = 1 set queue F enabled = True set queue F started = True # # Create and define queue Q2 # create queue Q2 set queue Q2 queue_type = Execution set queue Q2 max_running = 1 set queue Q2 resources_max.ncpus = 4 set queue Q2 resources_max.nodes = 1 set queue Q2 resources_default.ncpus = 1 set queue Q2 resources_default.nodes = 1 set queue Q2 resources_available.ncpus = 4 set queue Q2 resources_available.nodes = 1 set queue Q2 enabled = True set queue Q2 started = True # # Create and define queue Q4 # create queue Q4 set queue Q4 queue_type = Execution set queue Q4 max_running = 1 set queue Q4 resources_max.ncpus = 4 set queue Q4 resources_max.nodes = 1 set queue Q4 resources_default.ncpus = 1 set queue Q4 resources_default.nodes = 1 set queue Q4 resources_available.ncpus = 4 set queue Q4 resources_available.nodes = 1 set queue Q4 enabled = True set queue Q4 started = True # # Create and define queue Q1 # create queue Q1 set queue Q1 queue_type = Execution set queue Q1 max_running = 1 set queue Q1 resources_max.ncpus = 4 set queue Q1 resources_max.nodes = 1 set queue Q1 resources_default.ncpus = 1 set queue Q1 resources_default.nodes = 1 set queue Q1 resources_available.ncpus = 4 set queue Q1 resources_available.nodes = 1 set queue Q1 enabled = True set queue Q1 started = True # # Create and define queue Q3 # create queue Q3 set queue Q3 queue_type = Execution set queue Q3 max_running = 1 set queue Q3 resources_max.ncpus = 4 set queue Q3 resources_max.nodes = 1 set queue Q3 resources_default.ncpus = 1 set queue Q3 resources_default.nodes = 1 set queue Q3 resources_available.ncpus = 4 set queue Q3 resources_available.nodes = 1 set queue Q3 enabled = True set queue Q3 started = True # # Set server attributes. # set server scheduling = True set server default_queue = F set server log_events = 511 set server query_other_jobs = True set server scheduler_iteration = 600 set server node_check_rate = 150 set server tcp_timeout = 6 set server node_pack = False set server allow_node_submit = True
$ sudo service torque-scheduler start $ sudo service torque-mom start
$ qstat -q
$ pbsnodes -a
$ echo "sleep 30" | qsub $ qstat
$ sudo apt-get install torque-server torque-scheduler
$ sudo apt-get install torque-mom torque-client
$ qsub [オプション] ジョブファイル
Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 760.servername JOB_NAME1 hoge 311:35:2 R F 762.servername JOB_NAME2 hoge 165:50:2 R F 860.servername JOB_NAME3 fuga 03:03:40 R F
$ qstat [オプション]
$ qdel ジョブID ...
$ qorder ジョブID1 ジョブID2
$ qhold ジョブID1 ジョブID2 ...
$ qrls ジョブID1 ジョブID2 ...
$ qrun ジョブID1 ジョブID2 ...
$ qmove 変更後のキュー名 ジョブID
$ qsig -s シグナル ジョブID
#PBS …
で始まるジョブ指定#!/bin/bash #PBS -V #PBS -l nodes=1:ppn=4 #PBS -j oe #PBS -N jobname cd ${PBS_O_WORKDIR} 実行コマンド :
オプション | 意味 | 値 |
---|---|---|
-V | ジョブを投入した所の環境変数をすべて、ジョブファイルにも適用する | |
-v | ジョブを投入した所の環境変数を指定した分だけ、ジョブファイルにも適用する | |
-q | キューの指定 | |
-j | 出力ファイルの制御 | oe: 標準出力と標準エラーを標準ファイル(*.oジョブID)にまとめる, eo: 標準出力と標準エラーを標準エラーファイル(*.eジョブID)にまとめる, 指定しない場合は、それぞれのファイルが出力される |
-o | 標準出力ファイルのパス | |
-e | 標準エラーファイルのパス | |
-m | メール送信の方法 | 次の文字の組み合わせでメールの送信タイミングを指定 a: ジョブが失敗, b: ジョブが開始, e: ジョブが終了, n: 何もしない |
-M | メールの送信先 | |
-l | リソースの指定(複数ある場合は、カンマで区切る) | walltime=24:00:00 |
nodes=2:ppn=2 (2CPUずつ2ノードを使う; 計4CPU) | ||
nodes=ノード1:ppn=3+ノード2:ppn=2+ノード3:ppn=1 (特定のノードを利用する場合はノード名を書いて + で結合する) | ||
mem, ncpu が使える | ||
-N | ジョブ名 | 指定しない場合は、ジョブファイル名の先頭から15文字 |
set server …
で始まる項目
項目 | 意味 | 値 (太字がデフォルト) |
---|---|---|
scheduling | スケジューリングの有効化 | true or false |
default_queue | デフォルトのキューを設定 | |
log_events | ログの出力内容 | |
query_other_jobs | root以外のユーザが他人のジョブを閲覧する許可 | true or false |
scheduler_iteration | ? | |
node_check_rate | ノードが死亡していると判断するまでの時間(秒) | 整数値 (600) |
tcp_timeout | pbs_serverとpbs_mon間のTCPソケットのタイムアウト時間(秒) | 整数値 (8) |
node_pack | 1つのノードを埋めてから次のノードを利用するか | true or false |
allow_node_submit | ノードからのジョブ投入の許可 | true or false |
set queue キュー名 …
で始まる項目
項目 | 意味 | 値 (太字がデフォルト) |
---|---|---|
queue_type | キュータイプ | execution(e) or route(r) |
resource_default.ncpus | デフォルトで指定されるCPU数 | |
resources_default.nodes | デフォルトで指定されるノード数 | |
enabled | ジョブの受け入れ(このキューでのジョブ投入を許可するか) | true or false |
started | ジョブを実行するか(falseならhold状態で投入される) | true or false |
$ echo 'p s' | sudo qmgr
'p s
' は 'print server
' でも可help_starving_jobs true ALL
の true を false に変えるmax_starve: 24:00:00
の時間を長くする$ qstat -f
でジョブ状態を表示し、その中に comment = Not Running: Draining system to allow starving job to run
とあれば、この問題でジョブが処理されないことになる。