Sun Grid Engine 上的重疊隊列?
我們希望有一個基於 SGE 的計算集群,其中有一個隊列可以讓計算人員訪問所有節點,還有一個第二個集群隊列可以訪問,比如說,一半的節點供其他員工偶爾(但很重)使用.
我們希望限制第二個隊列的資源,以便計算人員可以繼續做一些工作,即使非電腦偶爾(但大量)使用。職員。
有沒有辦法為一個節點集合設置兩個(或多個)SGE 隊列,這樣一個隊列可以包含所有節點,第二個隊列包含相同節點的子集,並且兩個隊列同時執行?
我會研究哪些特定的 SGE 配置參數來設置這樣的東西?
當然,這完全有可能。SGE 隊列彼此獨立,因此您可以為每個隊列分配您想要的任何節點,讓它們按照您的意願重疊。
要創建隊列,請輸入
qconf -aq
:這將打開您的預設編輯器(通常是 vim)。鍵入隊列名稱作為qname
,在 中添加您要分配的主機hostlist
,對於slots
,添加格式為 的條目的逗號分隔列表[hostname=numslots]
。通常,插槽數是主機中的核心數,但如果您願意,您可以訂閱不足或過度訂閱。如果您希望隊列重疊,只需將相同的主機添加到多個隊列中。但是請注意,預設情況下,重疊隊列不知道彼此的使用情況。他們都會愉快地將作業分配給同一個節點並期望它們執行。
防止這種情況的最常見方法是使節點具有作業獨占性,因此一次只能執行一個作業。(這是 PBS 等其他調度程序的預設設置。)SGE 使這有點複雜,並且涉及創建一個虛擬“資源”,每個節點只能使用一次。為此,請鍵入
qconf -mc
以管理消耗性資源。這將打開一個列出消耗性資源的編輯器:添加一個名為“exclusive”的新編輯器,如下所示:#name shortcut type relop requestable consumable default urgency #----------------------------------------------------------------------------------------- exclusive excl BOOL EXCL YES YES 1 1000
有關詳細資訊,請參閱Grid Engine wiki。
您還可以配置所謂的從屬隊列。在此,您設置一個隊列,以便在分配超過一定數量的每個節點的插槽時,它將自動覆蓋另一個隊列。要進行此設置,請執行
qconf -mq queue1
並在“下屬”下指定queue2=N
. 然後,每當 queue1 中某個節點上使用的槽數超過N時,queue2 中的作業將被掛起,直到 queue1 作業完成。