先不要直接 resume
看到节点 drain 后直接执行 scontrol update NodeName=xxx State=RESUME,有时会让节点短暂恢复,但根因没消失很快又会 drain。正确顺序是先看 reason。
sinfo -R
scontrol show node <node-name>
重点看:
ReasonStateCfgTRES与AllocTRESRealMemoryGres
常见原因
slurm.conf 中资源写得和机器不一致
例如 RealMemory 填得太满,Slurm 检测到节点实际可用内存低于配置值,就可能把节点置为不可用。CPU 数、Socket/Core/Thread 拓扑写错也会引发类似问题。
检查:
lscpu
free -m
scontrol show node <node-name>
slurmd 无法正常上报
systemctl status slurmd
journalctl -u slurmd -n 100 --no-pager
如果是控制节点:
journalctl -u slurmctld -n 100 --no-pager
GRES/GPU 配置不一致
如果配置了 GPU:
nvidia-smi -L
cat /etc/slurm/gres.conf
scontrol show node <node-name> | grep -i gres
gres.conf 中 GPU 数量、类型或设备路径与实际情况不一致,也可能导致节点状态异常。
修复后再恢复节点
修改配置后,根据情况重启服务:
systemctl restart slurmd
systemctl restart slurmctld
确认日志没有继续报错后再恢复:
scontrol update NodeName=<node-name> State=RESUME
sinfo -Nel
验收
用普通用户提交一个短作业:
srun -N1 -n1 hostname
sbatch test.sbatch
如果节点能接受作业、作业能完成、sinfo -R 不再显示同类 reason,才算处理完成。