Sun Grid Engine上的重叠队列?

我们希望有一个基于SGE的计算集群,其队列可以访问计算人员的所有节点,第二个集群队列可以访问其他人员偶尔使用的一半节点。

我们希望限制第二个队列的资源,以便计算人员可以继续做一些工作,即使偶尔(非常重)使用non-comp也是如此。 员工。

有没有办法build立一个节点集合中的两个(或更多)SGE队列,这样一个队列可以包含所有节点,第二个队列包含相同节点的一个子集,并且两个队列同时操作?

我将研究哪些具体的SGEconfiguration参数来设置类似的东西?

当然,这是完全可能的。 SGE队列是相互独立的,所以你可以分配任何节点,你想每个队列,让他们重叠,但是你希望。

要创build一个队列,inputqconf -aq :这将打开你的默认编辑器(通常是vim)。 input队列的名称作为qname ,在主机列表中添加要分配的hostlist ,而对于slots ,添加格式为[hostname=numslots]的逗号分隔列表。 通常情况下,插槽数量是主机中的核心数量,但是如果您愿意,您可以低于或高于预订。 如果您希望队列重叠,只需将相同的主机添加到多个队列。

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

防止这种情况的最常见方法是使节点独占工作,所以一次只能运行一个工作。 (这在PBS等其他调度器中是默认的。)SGE使这个有点复杂,并且涉及创build一个虚拟“资源”,每个节点只能使用一次。 要执行此操作,请inputqconf -mc以pipe理可用资源 。 这将打开编辑器列出耗材资源:添加一个名为“exclusive”的新版本,如下所示:

 #name shortcut type relop requestable consumable default urgency #----------------------------------------------------------------------------------------- exclusive excl BOOL EXCL YES YES 1 1000 

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

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