运行SLURM+DMTCP任务后无输出文件的排查求助
Slurm提交DMTCP任务无输出文件排查步骤
一、先核对脚本里的输出配置
- 打开
dmtcp-slurm.job,检查#SBATCH --output=dmtcp.out和#SBATCH --error这两行:- 要是写的相对路径,Slurm只会在你提交任务时的工作目录生成文件,不是计算节点上的目录,别找错地方
- 检查路径拼写,比如有没有把目录名写错,或者目标目录根本不存在
- 测下权限:用
ls -ld <输出目录>看你有没有读写权限,再用touch <输出目录>/test.txt试能不能创建文件,权限不够直接改就行
二、检查slurm.conf里的关键配置
- 找
SlurmdSpoolDir参数:Slurm会先把输出写到这个临时目录,任务跑完才转去你指定的路径。要是这个目录满了或者权限不对,文件就出不来 - 看
JobAcctGatherType相关配置:要是开了记账功能,会不会把输出拦截了 - 确认
SaveJobs是不是开着,关了的话可能留不住任务输出
三、去计算节点找临时输出文件
- 先拿
squeue -j <你的任务ID> -O NODE查到任务跑在哪个节点 - 登录那个节点,去
SlurmdSpoolDir对应的目录(一般是/var/spool/slurmd/<任务ID>)看看有没有临时的输出/错误文件 - 要是临时文件有但没转到指定路径,基本就是目标目录权限有问题,或者Slurm的转移机制出故障了
四、验证DMTCP本身的输出逻辑
- 看DMTCP的命令行有没有自己加输出重定向,比如
>/dev/null或者2>&1,这会直接覆盖Slurm的输出配置 - 直接在计算节点上手动跑一遍DMTCP命令,看能不能正常生成输出,排除任务本身的问题
五、查Slurm日志找报错
- 去控制节点看
/var/log/slurm/slurmctld.log,计算节点看/var/log/slurm/slurmd.log,搜你的任务ID,找有没有“权限拒绝”“文件写入失败”这类报错
内容的提问来源于stack exchange,提问作者Raphael Santos
相关产品推荐
相关产品推荐

