如何设置 SGE 进行以下调度:“首先尝试在队列 A 中运行,如果没有可用的 A 槽,则尝试在队列 B 中运行”?

如何设置 SGE 进行以下调度:“首先尝试在队列 A 中运行,如果没有可用的 A 槽,则尝试在队列 B 中运行”?

假设您有两个队列,队列 A 有一些新硬件,队列 B 有旧硬件。此外,两个队列都具有相同数量的 SGE 作业节点和插槽,例如每个队列 10 个插槽。

现在我提交了 10 个作业。如果两个队列都是空的,并且节点的负载相同,我猜想其中 5 个作业将在队列 A 中运行,另外 5 个作业将在队列 B 中运行。但由于 B 的硬件较旧,因此作业需要更长时间才能完成。

有没有办法让 SGE 先尝试“填充”队列 A 中的快速节点,然后再“退回”旧队列 B?我问的是用户和管理员两个方面的问题。

答案1

我认为您可能误解了队列,或者您没有足够的信息。SGE 不会将提交拆分到不同的队列,您通常提交到一个队列。因此,您可以控制您想要提交的作业提交。您可以简单地编写一个脚本,将所有作业提交到队列 A,检查 qstat 以查看哪些作业处于暂停状态,哪些作业正在运行,然后将这些作业重新提交到队列 B,然后取消队列 A 中暂停的作业。

你也可以将所有内容放在一个队列中,这就是我所做的。看看: https://www.icts.uiowa.edu/confluence/display/ICTSit/SGE+adaptive+sequence+scheduling 概述如何使用某些脚本设置下一个作业调度的首选项/顺序 - 尽管在该示例中,他们还执行具有优先级的重叠队列,但您不需要这样做(除非您愿意)...

要设置填充顺序,请参阅http://gridscheduler.sourceforge.net/htmlman/htmlman5/sched_conf.html 从基于负载的填充更改为基于序列的填充。然后,您将使较新的节点具有比较旧的节点更早的序列号。

相关内容