首页 > 解决方案 > SLURM QOS 抢占

问题描述

我试图在我的 SLURM 19.05 集群中设置抢占,但我无法弄清楚如何让抢占按我的计划工作。

基本上,我有两个 QOS。

$ sacctmgr show qos format=name,priority,preempt

      Name   Priority    Preempt
---------- ---------- ----------
    normal          0
   premium       5000     normal

这些是我的抢占配置中的相关设置:

# SCHEDULING

SelectType=select/cons_res
FastSchedule=1
SelectTypeParameters=CR_CPU_Memory    
PreemptType=preempt/qos
PreemptMode=SUSPEND,GANG

PriorityType=priority/multifactor
PriorityWeightFairshare=10000
PriorityWeightAge=10000
PriorityWeightJobSize=10000
PriorityFavorSmall=YES
PriorityWeightQOS=10000

PartitionName=Compute OverSubscribe=FORCE:1 State=UP Nodes=compute01,compute02

我的计划是让premium作业抢占normal作业,暂停normal作业,直到premium作业在集群中完成运行。

但是,我观察到的抢占似乎每 30 秒按顺序划分并暂停两个作业。我在配置文件中是否遗漏了什么,或者 SLURM 无法提供我计划的抢占,而我不希望对资源有任何时间片?

标签: slurmqospreemption

解决方案


问题是 PreemptMode=SUSPEND,GANG 和 PreemptType=preempt/qos 会导致时间片。

您必须将 PreemptType 设置为 preempt/partition_prio,从而导致“暂停并自动恢复低优先级作业”,或者将 PreemptMode 设置为 REQUEUE,其中作业将被中止并放回队列中。

据我所知,这些是最接近我认为你想要的选项。

https://slurm.schedmd.com/slurm.conf.html#PreemptMode

GANG 启用同一分区中作业的组调度(时间片)。注意: Gang 调度是针对每个分区独立执行的,因此一般不建议配置具有重叠节点的分区和 gang 调度。

REQUEUE 通过重新排队(如果可能)或取消它们来抢占作业。对于要重新排队的作业,它们必须设置 --requeue sbatch 选项,或者 slurm.conf 中的集群范围的 JobRequeue 参数必须设置为 1。

SUSPEND 如果配置了 PreemptType=preempt/partition_prio,则暂停并自动恢复低优先级作业。如果配置了 PreemptType=preempt/qos,那么共享资源的作业将始终按时间切片,而不是一个作业保持挂起。SUSPEND 只能与 GANG 选项一起使用(组调度程序模块执行作业恢复操作)。


推荐阅读