如何让Slurm报告任务重启次数而非仅作业重启次数?
Slurm数组任务单独重启次数的获取方法
Slurm目前没有内置的环境变量可以直接提供单个数组任务的独立重启次数,SLURM_RESTART_COUNT确实是针对整个数组作业的全局重启计数,无法区分单个任务的重启情况。你可以通过以下两种方式解决:
任务本地记录重启次数
每个任务在启动时,读取以自身任务ID命名的计数文件(比如restart_count_${SLURM_ARRAY_TASK_ID}.txt,建议放在共享存储路径下),如果文件不存在则初始化为0,之后将数值递增并重新写入文件。这种方式无需依赖Slurm系统日志,任务自身就能实时获取当前重启次数,同时要注意配置好文件的读写权限,避免不同任务互相干扰。解析
sacct日志统计
利用Slurm的会计工具sacct过滤对应任务的历史状态记录,统计其失败或重排队的次数(即重启次数)。示例命令如下:sacct -j ${SLURM_JOB_ID} -t FAILED,REQUEUED -o JobID%20,State,ArrayTaskID | grep ${SLURM_ARRAY_TASK_ID} | grep -E 'FAILED|REQUEUED' | wc -l注意:这种方法依赖Slurm的会计日志配置,且日志记录可能存在一定延迟,需要确保
sacct能查询到最新的任务状态。
内容的提问来源于stack exchange,提问作者Maciek
相关产品推荐
相关产品推荐

