如何在Slurm的scontrol中查看用户提交的作业原始优先级值?
解决Slurm作业原始优先级查看问题
问题原因
你看到的4294901751是Slurm的综合优先级值,用户通过--priority指定的原始优先级是这个综合值的组成部分。默认Slurm使用priority/multifactor优先级类型,会将用户指定优先级、队列优先级、用户公平份额等多个因素组合成一个32位的综合数值,用户指定的优先级通常被编码在低16位,所以直接看综合值看不到原始输入的10,但调度逻辑会正确识别并使用这个原始值。
查看原始优先级的方法
1. 使用sacct直接查看用户指定优先级
运行以下命令,UserPriority字段会直接显示你提交时指定的原始优先级:
sacct -j 18 --format=JobID,UserPriority
输出示例:
JobID UserPriority ------------ ------------ 18 10
2. 通过位运算解析综合优先级值
用户指定的优先级默认存储在综合优先级的低16位,你可以通过位与运算提取:
echo $((4294901751 & 65535))
计算结果就是10,和你提交时指定的优先级一致。
3. 修改Slurm配置简化优先级显示(可选)
如果希望scontrol show job直接显示用户指定的优先级,可以修改slurm.conf中的PriorityType为:
PriorityType=priority/basic
这种模式下,综合优先级等于用户指定的优先级,但会关闭Slurm的多因素优先级调度功能(比如公平份额、队列优先级等),仅适合简单调度场景。修改后需要重启Slurm服务生效。
内容的提问来源于stack exchange,提问作者wonder
相关产品推荐
相关产品推荐

