在太阳网格引擎(SGE)中的asynchronous作业排队 – 可能吗?

我们正在考虑部署一个排队系统,SGE看起来几乎可以满足我们所有的愿望。 但是,我们有支持同步和asynchronous排队模型的想法。 换一种说法:

  1. 我们将所有工作者节点绑定到一个同步队列,以便分配给他们的作业将正常排队 – 也就是说,一个作业运行完毕,另一个作业将被接受并运行。

  2. 我们希望能够为节点分配“asynchronous”作业。 这些任务可以与其他任务同时完成,通常是机器本身的维护任务。

我在SGE文档中看到,可以在节点上定义多个队列,但这与拥有一个队列来处理任何工作并将其启动到后台,然后再接受另一个队列是不一样的。 我没有完全按照SGE的所有configuration选项来加速,但似乎这可能是可能的。 任何人都可以指向我的一些信息如何configuration?

您可以定义每个队列的插槽数量。 因此,对于“同步”作业队列,您可能需要将每个主机的插槽数量设置为1.这样一次只有一个作业将被主机的队列接受,一旦完成,另一个作业就可以运行。 对于“asynchronous”队列,只需将插槽的数量设置为某个较高的数字,以便您需要的任何数量的作业可以一次在主机上运行。

现在你有两个队列,你需要一些方法将作业作为目标。 一个简单的方法是只使用-q开关来qsub显式select一个队列,例如: qsub -q 'sync.q@*'

但是,最好允许gridengine决定将工作放入哪个队列。 为此,你可以定义一个复杂的,比如sync ,并将forced属性设置为true。 然后,将该复合体分配给队列。 现在,使用qsub -l sync提交的作业将只被放入具有该属性的队列中。 这样做的好处是,如果您决定重新组织您的队列,以及稍微简单一点的提交程序,则可以获得一些额外的灵活性。