Tuesday, September 23, 2014

Maui partition 設定

用Maui可以做到cluster的node分組, 而且是強制性的,
如果用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[base]    PLIST=group1,group2&
USERCFG[user1]    PLIST=group1&
USERCFG[user2]    PLIST=group2&
USERCFG[user3]    PLIST=group2,group1&

注意冒號變成了逗號.

No comments: