SLURM节点重启后无法解除DRAIN状态问题求助
问题描述
在个人PC的SLURM集群中运行作业时电脑意外重启,重启后通过squeue发现之前的作业因节点neuropc进入DRAIN状态已停止,但被自动重新排队。执行scancel取消重排队作业后,无法释放该节点,尝试以下操作均无效:
- 重启
slurmctld和slurmd服务 - 执行节点解除DRAIN状态的命令(无输出但状态未变)
- 手动重启系统
执行scontrol show node neuropc得到关键输出:
[...] State=IDLE+DRAIN ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A [...] Reason=Low RealMemory [slurm@2023-02-05T22:06:33]
另外系统监视器显示8核有5%-15%的活动,但进程页仅显示TeamViewer占用不足4%,怀疑旧作业重启后仍在运行或被SLURM残留。
系统环境:Ubuntu 20.04,SLURM 19.05.5
解决方案
1. 排查并清理内存占用
SLURM标记节点为DRAIN的直接原因是Low RealMemory,先检查当前内存使用:
free -h
如果内存确实紧张,先清理缓存:
sudo sync && sudo sysctl -w vm.drop_caches=3
2. 查找并清理SLURM残留进程
即使取消了作业,可能还有残留的作业进程在后台运行,用以下命令查找SLURM相关进程:
ps aux | grep slurm ps aux | grep srun
找到可疑进程后直接杀掉:
sudo kill -9 <进程PID>
3. 强制解除节点DRAIN状态
执行强制解除命令(替换为你的节点名neuropc):
sudo scontrol update node=neuropc state=IDLE reason="Cleared Low RealMemory issue"
如果上述命令无效,尝试清除DRAIN标记:
sudo scontrol update node=neuropc state=RESUME
4. 验证节点状态
执行以下命令检查节点是否恢复正常:
scontrol show node neuropc | grep State
若输出显示State=IDLE,说明节点已恢复,可提交新作业测试。
额外排查:隐藏进程导致的CPU占用
如果CPU仍有异常占用,用htop查看更全面的进程信息:
sudo apt install htop -y htop
按F6按CPU占用排序,找到隐藏的高占用进程并终止。
内容的提问来源于stack exchange,提问作者Girardi
相关产品推荐
相关产品推荐

