在slurm 中, 当PreemptType=preempt/qos 时, 一个高优先级JOB 没有抢占低优先级JOB, 为什么 ?
时间: 2024-03-04 12:52:41 浏览: 134
在Slurm中,PreemptType=preempt/qos时,一个高优先级JOB没有抢占低优先级JOB的原因可能是因为低优先级JOB已经被分配了足够的资源,而高优先级JOB所需要的资源已经不足以满足其需求,因此无法抢占低优先级JOB。此外,也有可能是由于Slurm中的调度算法在考虑抢占时,同时考虑了任务的优先级以及当前任务所占用的资源情况,因此在某些情况下,高优先级JOB也可能无法抢占低优先级JOB。
相关问题
在slurm 中, 当PreemptType=preempt/qos 时, QoS优先级高的job 没有发生抢占,为什么? 而是在经过一段时时间后, 以timeslic方式执行,为什么 ?
当PreemptType=preempt/qos时,Slurm会首先考虑QoS的优先级来判断是否进行抢占。如果有比当前正在运行的任务优先级更高的QoS任务等待运行,当前任务可能会被抢占。但是,如果已经有一个高优先级的QoS任务在等待运行,而当前正在运行的任务是较低优先级的,那么当前任务不会立刻被抢占,而是会被调度程序以timeslice方式执行一段时间,以确保当前任务完成一定量的工作,然后再将CPU资源分配给高优先级的任务。这样可以避免资源的浪费和任务的频繁切换,提高整个系统的效率。
在slurm 中, 当PreemptType=preempt/qos 时, 如何查看一个将要运行job的优先级 ?
当PreemptType=preempt/qos时,在Slurm中查看一个将要运行job的优先级可以使用`squeue`命令并指定`-o`选项来指定输出格式。例如,以下命令可以列出正在运行的job以及它们的优先级:
```
squeue -o "%.18i %.9P %.8j %.8u %.2t %.10M %.6D %R" -t RUNNING
```
在输出中,`%.9P`字段表示job的QOS级别,这也是job优先级的一个指标。如果想查看所有状态的job的优先级,可以去掉`-t`选项。如果想只查看某一个job的优先级,可以使用`scontrol`命令并指定job的ID。例如,以下命令可以查看job ID为12345的job的优先级:
```
scontrol show job 12345 -d | grep Priority
```
输出中的`Priority`字段表示job的优先级,该值越高,job的优先级越高。
阅读全文