先不要直接 resume

看到节点 drain 后直接执行 scontrol update NodeName=xxx State=RESUME,有时会让节点短暂恢复,但根因没消失很快又会 drain。正确顺序是先看 reason。

sinfo -R
scontrol show node <node-name>

重点看:

  • Reason
  • State
  • CfgTRESAllocTRES
  • RealMemory
  • Gres

常见原因

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,才算处理完成。