slurm - 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 无法提供我计划的抢占,而我不希望对资源有任何时间片?
解决方案
问题是 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 选项一起使用(组调度程序模块执行作业恢复操作)。
推荐阅读
- discord.js - 如何设置无法踢出具有更高角色的成员 - Discord.js
- python - Python Pandas:计算正数的连续窗口计数
- elasticsearch - Flink 弹性搜索源连接器
- android - 旋转设备时如何不丢失 EditText 内容 - EditText 在 RecyclerView 项目内
- perl - Perl如何在关键字(匹配)前面引入文本并将其余部分保留在文件中
- typescript - 使用 Angular 快速地 iframe
- excel - 根据特定值更新表中的值
- terraform - 如果映射键为空字符串,则条件动态块
- birt - 如何创建全局变量以及如何将数据集值设置为全局变量
- javascript - jquery post方法的问题