如果用Torque的multiple queue加上acl_user方法, 看起來並不是強制性.
但是網路上似乎很缺乏Maui的partition設定參考...
參考用的cluster, master叫c6, 有兩個node叫c61與c62, 各有2個core.
設定檔是在maui.cfg, 這沒問題.
先做好node分組:
NODECFG[c61] PARTITION=group1
NODECFG[c62] PARTITION=group2
這樣我們就有兩個partition, 分別叫group1與group2.
再來我們要指定哪些user可以用哪些partition.
(也可以照user group來分喔, 把USERCFG換成GROUPCFG, 搭配user group名稱即可)
SYSCFG[base] PLIST=
USERCFG[DEFAULT] PLIST=group1
USERCFG[user1] PLIST=group1
USERCFG[user2] PLIST=group2
USERCFG[user3] PLIST=group2:group1
這樣設定的話, user1只能使用group1的node, user2只能使用group2的node
如果user1丟了3個job, 第3個會被queue住.
而user3會優先用group2的node, 如果塞不進去的話, 才去用group1.
也就是說, PLIST後面的partition清單, 是有順序的.
其他的user (user1~3之外的), 會用DEFAULT(注意大寫)的規則.
但是, 設定成partition有一個問題.
以預設行為來說, 使用者的job必須要能塞進一個partition裡, 不能一個job用一個以上的partition.
例如, 如果user3送了一個job:
#PBS -l nodes=2:ppn=2
這個job會被接受, 但是會一直留在Q的狀態, 不會額外給出錯誤訊息.
用checkjob去看會寫:
cannot select job for partition group2 (NodeCount)
cannot select job for partition group1 (NodeCount)
雖然文件裡只有稍微提到, 但是可以用QoS旗標SPAN, 來讓一個job使用一個以上的partition:
#PBS -l nodes=1:ppn=2,qos=SPAN
另外. SYSCFG[base]這邊的PLIST, 必須要留空, 這是因為這些rule中間是or的運算.
所以如果:
SYSCFG[base] PLIST=
USERCFG[user2] PLIST=group2
這樣兩條rule or起來的結果還是group2, 所以user2只能在group2跑job.
如果寫成:
SYSCFG[base] PLIST=group1:group2
USERCFG[user2] PLIST=group2
那麼or起來的結果變成group1:group2, 會變成user1優先使用group1.
SYSCFG行不寫的話, 會是後者的結果 (陷阱!!)
我們也可以設定rule用and的方式運作, 只要在PLIST後面加上&符號.
在這個情形下, SYSCFG行就一定要寫:
在這個情形下, SYSCFG行就一定要寫:
SYSCFG[base] PLIST=group1,group2&
USERCFG[user1] PLIST=group1&
USERCFG[user2] PLIST=group2&
USERCFG[user3] PLIST=group2,group1&
注意冒號變成了逗號.
USERCFG[user1] PLIST=group1&
USERCFG[user2] PLIST=group2&
USERCFG[user3] PLIST=group2,group1&
注意冒號變成了逗號.
No comments:
Post a Comment