Sun Grid Engine 上的队列重叠?

Ale*_*lds 5 cluster gridengine grid

我们想要一个基于 SGE 的计算集群,其中有一个队列可以让计算人员访问所有节点,另一个集群队列可以让其他人员偶尔(但大量)使用一半的节点.

我们希望限制第二个队列的资源,以便计算人员可以继续做一些工作,即使非计算人员偶尔(但大量)使用。职员。

有没有办法为一个节点集合设置两个(或多个)SGE 队列,这样一个队列可以包含所有节点,第二个队列包含相同节点的子集,并且两个队列同时运行?

我会研究哪些特定的 SGE 配置参数来设置这样的东西?

ajd*_*con 5

当然,这是完全可能的。SGE 队列彼此独立,因此您可以为每个队列分配您想要的任何节点,让它们随意重叠。

要创建队列,请键入qconf -aq:这将打开您的默认编辑器(通常是 vim)。键入队列名称作为 ,在qname中添加您要分配的主机hostlist,并为slots,添加逗号分隔的格式条目列表[hostname=numslots]。通常,插槽数是主机中的内核数,但如果您愿意,您可以订阅不足或过度订阅。如果您希望队列重叠,只需将相同的主机添加到多个队列即可。

但是请注意,默认情况下,重叠队列不知道彼此的使用情况。他们都会愉快地将作业分配给同一个节点并期望它们运行。

防止这种情况的最常见方法是使节点作业独占,因此一次只能运行一项作业。(这是 PBS 等其他调度程序的默认设置。)SGE 使这有点复杂,并涉及创建一个虚拟“资源”,每个节点只能使用一次。为此,请键入qconf -mcto manage consumable resources。这将打开一个列出消耗性资源的编辑器:添加一个名为“exclusive”的新资源,如下所示:

#name          shortcut     type         relop  requestable  consumable  default  urgency
#-----------------------------------------------------------------------------------------
exclusive      excl         BOOL         EXCL   YES          YES          1        1000
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Grid Engine wiki

您还可以配置所谓的从属队列。在这种情况下,您设置一个队列,以便在每个节点分配的插槽数量超过一定数量时,它会自动覆盖另一个队列。要设置它,运行qconf -mq queue1并在“下级”下,指定queue2=N. 然后每当queue1 中某个节点上使用的槽数超过N 时,queue2 中的作业将被挂起,直到 queue1 作业完成。