在slurm 中, 当PreemptType=preempt/qos 时, 如何才能实现一个JOB抢占另一个正在运行的JOB.
时间: 2024-03-03 09:53:06 浏览: 166
在 Slurm 中,当 `PreemptType=preempt/qos` 时,可以通过设置 QoS(Quality of Service)参数来实现一个作业抢占另一个正在运行的作业。具体实现步骤如下:
1. 创建一个新的 QoS,例如 `high_priority`。
2. 将正在运行的作业的 QoS 改为 `low_priority`,使其优先级降低。
3. 提交一个优先级更高的作业,并将其 QoS 设置为 `high_priority`。
4. Slurm 将会抢占正在运行的低优先级作业,以便运行高优先级作业。
这种方式可以通过以下命令实现:
```
# 创建一个新的 QoS
sacctmgr add qos high_priority
# 将正在运行的作业的 QoS 改为 low_priority
scontrol update jobid=<job_id> qos=low_priority
# 提交一个优先级更高的作业,并将其 QoS 设置为 high_priority
sbatch --qos=high_priority <script>
```
需要注意的是,这种作业抢占方式可能会影响正在运行的作业,因此需要谨慎使用,并在必要时与其他用户或管理员进行协调。
相关问题
在slurm 中, 当PreemptType=preempt/qos 时, QoS的哪些参数会引起job抢占,请举例说明
在 Slurm 中,当 `PreemptType=preempt/qos` 时,QoS 的以下参数可能会引起 job 抢占:
1. `Priority`:该参数指定了 job 的优先级,值越高,表示 job 越重要,被抢占的概率越小。当其他 job 的优先级高于当前 job 时,当前 job 可能会被抢占。
2. `MaxTime`:该参数指定了 job 的最大运行时间。如果一个 job 运行时间超过了其指定的最大运行时间,那么其他 job 可能会抢占它。
3. `MaxCPU`:该参数指定了 job 能够使用的最大 CPU 核心数。如果一个 job 占用的 CPU 核心数超过了其指定的最大核心数,那么其他 job 可能会抢占它。
举例来说,如果一个 job 的优先级比其他 job 低,同时它的运行时间超过了它指定的最大运行时间,那么其他 job 可能会抢占它。类似地,如果一个 job 占用的 CPU 核心数超过了其指定的最大核心数,那么其他 job 也可能会抢占它。
在slurm 中, 当PreemptType=preempt/qos 时, 一个高优先级JOB 没有抢占低优先级JOB, 为什么 ?
在Slurm中,PreemptType=preempt/qos时,一个高优先级JOB没有抢占低优先级JOB的原因可能是因为低优先级JOB已经被分配了足够的资源,而高优先级JOB所需要的资源已经不足以满足其需求,因此无法抢占低优先级JOB。此外,也有可能是由于Slurm中的调度算法在考虑抢占时,同时考虑了任务的优先级以及当前任务所占用的资源情况,因此在某些情况下,高优先级JOB也可能无法抢占低优先级JOB。
阅读全文