Slurm云调度系统中POWER_UP失败节点的处理方案咨询
解决方案:处理Slurm云节点POWER_UP失败后资源闲置的问题
核心解决思路
针对云节点按需创建的特性,核心目标是让Slurm在POWER_UP失败时,不保留无效的DOWN节点记录,从而自动触发新节点的调度。以下是几种可落地的方案:
方案1:修改POWER_UP脚本规避节点标记为DOWN
Slurm标记节点为DOWN的触发条件是POWER_UP脚本返回非0退出码,可调整脚本逻辑绕过这一机制:
- 当实例创建失败时,脚本不返回非0值,而是直接删除Slurm中该节点的记录
- 示例脚本片段:
这样Slurm不会生成DOWN状态的节点记录,后续调度会直接尝试创建新的云实例。# 假设实例创建命令执行失败后进入该分支 if [ $? -ne 0 ]; then # 删除Slurm中的无效节点记录 scontrol delete node=$SLURM_NODE_NAME exit 0 fi
方案2:配置ResumeFailedProgram实现自动清理
虽然需要编写脚本,但逻辑极简,仅需完成无效节点的删除:
- 在
slurm.conf中添加配置:ResumeFailedProgram=/usr/local/sbin/clean_failed_nodes.sh - 编写
clean_failed_nodes.sh脚本(记得赋予执行权限):
当POWER_UP失败时,Slurm会自动调用该脚本清理节点记录,后续调度即可正常创建新实例。#!/bin/bash NODE_NAME=$1 # 删除标记为DOWN的无效云节点 scontrol delete node=$NODE_NAME
方案3:配置动态节点增强生命周期灵活性
将云节点配置为动态节点,让Slurm更灵活地处理节点的创建与销毁:
NodeName=cloud-node[1-200] State=CLOUD Dynamic=1 CPUs=8 ... PartitionName=cloud Nodes=cloud-node[1-200] Default=YES ...
动态节点在启动失败时,Slurm不会长期保留DOWN状态,会更快触发新节点的调度请求。
原尝试方案无效的原因说明
ReturnToService:仅适用于节点主动恢复(如自行启动、手动重启)的场景,不覆盖POWER_UP失败的情况idle_on_node_suspend:仅控制节点闲置时的挂起行为,与启动失败的节点处理逻辑无关
内容的提问来源于stack exchange,提问作者Xaver
相关产品推荐
相关产品推荐

