如何为 Slurm 作业设置最大优先级?

Bub*_*nja 6 slurm

作为管理员,我需要为给定的工作赋予最大的优先级。

我发现提交选项如下:--priority=<value>--nice[=adjustment]可能很有用,但我不知道我应该为它们分配哪些值以便为作业提供最高优先级。

另一种方法可能是默认为所有作业设置低优先级,并为特殊作业增加优先级。

知道我如何执行它吗?

编辑:我正在使用sched/backfill策略和默认作业优先级策略 (FIFO)。

谢谢你。

Fel*_*der 21

我找到了一个无需使用即可工作的解决方案PriorityType=priority/multifactor(如Bub Espinja 建议):

$ scontrol update job=<job-id> Priority=<any-integer>
Run Code Online (Sandbox Code Playgroud)

上述命令将更新作业的优先级并相应地更新队列。

通过检查下一个待处理作业的优先级并向其添加 1,可以找到成为队列中下一个作业所需的最低优先级。您可以使用以下方法找到作业的优先级:

$ scontrol show job=<job-id>
Run Code Online (Sandbox Code Playgroud)

scontrol update可用于更改工作的许多方面,例如时间限制等。)

编辑:

我刚刚了解到一个人可以做

$ scontrol top <job-id>
Run Code Online (Sandbox Code Playgroud)

把一份工作放在他们队列的最前面。


Bub*_*nja 8

我所做的是使用优先级插件 multifactor,使用默认配置,将此行添加到slurm.conf

PriorityType=priority/multifactor

然后,由于所有作业的优先级都为 0,我必须更新目标作业优先级,在我的例子中使用 API:

job_desc_msg_t job_update;
slurm_init_job_desc_msg(&job_update);
job_update.job_id = target_job_id;
job_update.priority = 4294967295;
slurm_update_job(&job_update);
Run Code Online (Sandbox Code Playgroud)

编辑:

来自Slurm 常见问题解答

作业的优先级是一个介于 0 到 4294967295 之间的整数。数字越大,作业在队列中的位置就越高,作业就越早被调度。