如何配置Slurm分区QoS?配置完成后不生效该如何排查解决?
Slurm分区绑定QoS不生效故障排查与修复方案
故障根因
根据你提供的配置信息,故障大概率由以下几个原因导致:
- QoS名称不匹配:
sacctmgr默认会截断超过10个字符的QoS名称,返回结果中的batchdisa+无法确认和分区绑定的batchdisable是同一QoS,存在拼写、大小写不一致的可能。 - 记账强制规则未启用:Slurm默认只做QoS数据记账,不会强制执行QoS的限制规则,必须在
slurm.conf中开启AccountingStorageEnforce参数包含qos、limits选项,QoS的作业数、时长等限制才会生效。 - 分区未强制关联QoS:你当前分区配置的
QoS=batchdisable仅为分区默认QoS,搭配AllowQos=ALL的配置时,用户提交作业时可手动指定其他QoS绕过限制,规则无法强制覆盖所有作业。 - 配置未重载或测试作业为规则生效前提交:修改QoS、分区配置后未重载slurmctld配置会导致规则不生效;且你当前正在运行的测试作业如果是配置修改前提交的,在未开启抢占的场景下不会被自动终止,会继续运行。
修复步骤
- 第一步:确认QoS名称匹配
执行非截断的QoS名称查询命令,确认QoS全称正确:
如名称不匹配,可执行命令修改QoS名称:sacctmgr show qos format=name%30sacctmgr modify qos <实际QoS名称> set name=batchdisable - 第二步:开启记账强制规则
编辑所有控制节点、计算节点的slurm.conf文件,添加/修改如下配置:
配置同步完成后执行重载命令生效:AccountingStorageEnforce=limits,qos
如重载不生效可重启slurmctld、slurmd服务。scontrol reconfigure - 第三步:配置分区强制应用QoS
执行命令修改分区配置,限制该分区仅允许使用batchdisableQoS,避免用户绕过限制:
如需强制该分区所有作业叠加该QoS规则,可执行命令:scontrol update partitionname=sample01 allowqos=batchdisablescontrol update partitionname=sample01 qos=+batchdisable - 第四步:验证规则生效
先终止之前提交的测试作业:
重新提交测试作业,正常会被拒绝或进入Pending状态,原因为scancel 67109044 67109045QOSMaxJobsPerUserLimit即代表规则生效。 - 第五步:日志排查
如规则仍未生效,可查看slurmctld日志(默认路径/var/log/slurm/slurmctld.log),根据QoS校验相关的报错信息定位问题。
内容的提问来源于stack exchange,提问作者masataka.n
相关产品推荐
相关产品推荐

