Sun Grid Engine 上的队列重叠吗?

Sun Grid Engine 上的队列重叠吗?

我们希望拥有一个基于 SGE 的计算集群,其中一个队列可以让计算人员访问所有节点,另一个集群队列可以让其他人员访问一半的节点,以供偶尔(但频繁)使用。

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

有没有办法设置两个(或更多)由一个节点集合组成的 SGE 队列,使得一个队列可以包含所有节点,而第二个队列包含相同节点的子集,并且两个队列同时运行?

我应该研究哪些具体的 SGE 配置参数来设置这样的功能?

答案1

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

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

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

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

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

有关详细信息,请参阅网格引擎 维基

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

相关内容