Slurm,限制每个分区的作业数量

我正在configuration一个Slurm调度器,并且我需要限制分区(队列)上同时运行的最大作业的数量。

我正在阅读大量有关会计和资源的信息,但都与用户限制有关,我也阅读了有关创build协会的信息,但我不确定是否有必要。

我需要限制每个分区(队列)的作业数,因为我有属于同一个分区的计算节点。

即我有2个分区,短期和长期,具有相同的计算节点,但具有不同的时间限制和优先级。 如果所有用户使用长分区启动长时间作业,则可以阻止集群。 所以,我想限制为长分区运行的最大作业数量。

提前致谢。

现在我已经看到了你的编辑,这实际上应该通过优先级和节点共享来完成,而不是限制工作。
如果您没有实施会计,请参阅多因素优先级和抢占 。

抢占更容易configuration,PreemptType = preempt / partition_prio,对短作业队列设置更高的优先级。
你将不得不在slurm.conf中设置PreemptMode = SUSPEND,GANG,并在默认队列/每个队列上configurationShared = FORCE来优先。

它工作得很好,但可能导致长期工作的饥饿。

多因素是更公平的,但你将不得不尝试看看什么适合你。 您可能需要设置PriorityWeightPartition,因为没有与工作时间相关的直接因素。

否则 – 安装会计,并简单地收取更长时间的工作。

由于我不能评论,我发布作为答案。
你能分享你的推理吗? 作为一名资源经理,slurm非常有效 – 除非你允许超额认购,否则不会允许使用比现有资源更多的资源。 你为什么要强加一个人为的限制呢?

无论如何,如果你正在使用回填,你可能会逃脱一个简单的bf_max_job_part =#或更一般的partition_job_depth =#

阅读man slurm.conf中的这些选项

最好的方法是使用QoS。 对于每个QoS,您可以为CPU的数量或该QoS的最大壁挂时间设置不同的限制。QoS在限制方面比分区更灵活。

所以我的build议是,你只使用一个带有2个QoS的分区,并在QoS级别设置限制。