設定SGE以完全填入每個節點而不是分配作業

設定SGE以完全填入每個節點而不是分配作業

最初錯誤地發佈在 Stack Overflow 上...請參閱底部的 PS 以獲取該帖子的回應。

我已經搜索了一段時間,但找不到答案。我遇到的問題是:假設我有一個兩台 12-CPU 機器的 SGE。我有兩個 1-CPU 作業要提交到網格,但其他使用者通常希望提交 12-CPU 作業。這些是共享記憶體作業,無法跨多台機器拆分。發生的情況是,有時我會提交兩個作業,它們每個都會轉到單獨的機器上,從而使每個作業都有 11/12 個空閒 CPU。這樣就可以防止其他人在我工作時執行 12-CPU 作業。

有沒有解決的辦法?我知道您可以使用fillup 規則來控制單個qsub (因此fillup 可以使12-CPU qsub 要么留在一台機器上,要么分割在幾台機器上,等等),但是是否有一個類似的設定來強制單獨的qsub 運行到同一台機器?我也知道我可以明確要求特定的機器(我認為它是 -h machinename 或類似的東西),但我更希望有一個比這更強大的設定。

任何幫助表示讚賞。謝謝!

PS:在 Stack Overflow 帖子中,在線程關閉之前收到了一個回复,建議使用並行環境 Allocation_rule=$fill_up。除非我在嘗試時做錯了什麼,否則我認為這不能解決問題。從我所看到的測試來看,如果我設定為fill_up,這意味著如果可能的話,單一qsub 內請求的CPU 會被放入同一網格機器,但來自不同qsub 的CPU 仍將轉到低負載機器(或其他機器)網格選擇),並且可能會進入空機器。對此的測試涉及 qsubbing 一些單 CPU 作業,等待約 5 分鐘,然後再提交一些作業。雖然有時第一組最終會在同一台機器上(我猜因為機器負載不是即時的,所以它們都被發送到同一台低負載機器?),但第二組不會一致地去與第一組相同的機器。

答案1

調度程序的預設值加載論壇設定是np_負載_平均它將新作業指派給平均負載最低的節點。要讓它填充節點,您可以設定載入公式插槽。若要查看目前的調度程式設定:

qconf -ssconf

若要修改設定:

qconf -msconf

相關內容