[[TORQUE]]
既に計算ノードで&color(magenta){計算中};で、かつリソース的な余裕がなくても
強制的にその先行ジョブを&color(darkmagenta){''suspend''};にさせて、別のジョブを流す。
torque-4.2.10 + maui-3.3.1 環境です(&size(10){インストールは[[TORQUE]]参照};)
***maui.cfg [#q6407027]
重要なことは下記の三つかな
-項目&color(orangered){PREEMPTPOLICY};の値を&color(darkmagenta){''SUSPEND''};にして、
-&color(darkmagenta){''suspend''};対象となりえるフラグ''PREEMPTEE''と、割り込みできるフラグ''PREEMPTOR''を用意して、
-項目&color(orangered){PREEMPTPOLICY};の値を&color(darkmagenta){''SUSPEND''};にする
-&color(darkmagenta){''suspend''};対象となりえるフラグ''PREEMPTEE''と、割り込みできるフラグ''PREEMPTOR''を用意する
-各優先順位(job credentials、fairshare usage、requested job resources、current service levels、target service levels、consumed resources)の何れか一つが定義されている
&size(10){(優劣がないと&color(darkmagenta){suspend};になってくれない)};
下記は job credentials を念頭に各優先順位付けを行っている。
&color(darkgreen){QOSWEIGHT};と&color(darkgreen){CLASSWEIGHT};は係数で、掛かる値は &color(red){PRIORITY};である。
最後のほうにある''CLASSCFG''で、Torqeu qmgrで定義されるキュー名と繋げている。
#code(nonumber){{
[root@pbs ~]# cat /usr/local/maui/maui.cfg
# maui.cfg 3.3.1
SERVERHOST pbs.sybyl.local
ADMIN1 root
RMCFG[PBS.SYBYL.LOCAL] TYPE=PBS
SERVERPORT 42559
SERVERMODE NORMAL
RMPOLLINTERVAL 00:00:30
# log file
LOGFILE maui.log
LOGFILEMAXSIZE 10000000
LOGLEVEL 3
NODEACCESSPOLICY shared
DEFERTIME 00:01:00
PREEMPTPOLICY SUSPEND
BACKFILLPOLICY FIRSTFIT
RESERVATIONPOLICY CURRENTHIGHEST
NODEALLOCATIONPOLICY MINRESOURCE
QOSWEIGHT 1
QOSCFG[quick] PRIORITY=100 QFLAGS=PREEMPTOR
QOSCFG[slow] PRIORITY=10 QFLAGS=PREEMPTEE
CLASSWEIGHT 1
CLASSCFG[hi] QDEF=quick
CLASSCFG[low] QDEF=slow
[root@pbs ~]#
}}
***qmgr [#k8cc2779]
キューの定義は全計算ノードを使用する2つのキュー(hiとlow)を作成している
#code(nonumber){{
create queue hi
set queue hi queue_type = Execution
set queue hi resources_default.cput = 480:00:01
set queue hi resources_default.nodes = 1
set queue hi resources_default.walltime = 240:00:00
set queue hi enabled = True
set queue hi started = True
create queue low
set queue low queue_type = Execution
set queue low resources_default.cput = 480:00:01
set queue low resources_default.nodes = 1
set queue low resources_default.walltime = 240:00:00
set queue low enabled = True
set queue low started = True
}}
***テスト実行 [#q3d127a0]
キュー名「low」のジョブを投入して、計算が開始された跡に、「hi」のキューを投げたとところ。
#code(nonumber){{
[root@pbs maui]# qstat -n
pbs.sybyl.local:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
----------------------- ----------- -------- ---------------- ------ ----- ------ ------ --------- - ---------
86.pbs.sybyl.local illya low test.sh 0 3 3 -- 480:00:01 R --
n3+n2+n1
87.pbs.sybyl.local illya hi hi.sh -- 3 3 -- 480:00:01 Q --
--
[root@pbs maui]#
}}
この瞬間までは n1、n2、n3の3台を使って計算していた。
暫くすると、優先順位の見積もりなおしが行われ(maui.cfgのRMPOLLINTERVALの間隔で)、
キュー名「hi」のジョブが優先とされ、下位に属する「low」は&color(darkmagenta){''suspend''};になる。
#code(nonumber){{
[root@pbs maui]# qstat -n
pbs.sybyl.local:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
----------------------- ----------- -------- ---------------- ------ ----- ------ ------ --------- - ---------
86.pbs.sybyl.local illya low test.sh 0 3 3 -- 480:00:01 S --
n3+n2+n1
87.pbs.sybyl.local illya hi hi.sh 0 3 3 -- 480:00:01 R --
n3+n2+n1
[root@pbs maui]#
}}
キュー名「hi」のジョブが優先的に実行された。