如何防止Slurm作业信息被删除?作业ID176查询失败求助
解决Slurm作业信息被自动删除的问题
你遇到的情况完全是Slurm默认的作业记录清理机制导致的——当集群作业量较大时(比如你提到的12小时新增200个作业),旧作业的内存缓存会被slurmctld快速移除,而会计数据库的记录也可能因默认保留时限到期被清理。下面分场景给你具体解决方案:
普通用户可操作的临时保留方法
- 标记特定作业为永久保留:在作业完成后(甚至运行中也可以),执行以下命令标记作业不被自动清理:
这个命令会让Slurm把该作业的记录永久保存在会计数据库中,后续用scontrol update job=176 keep=yessacct -j 176就能一直查到它的信息。 - 本地备份作业信息:作业完成后立即导出信息到本地文件,彻底摆脱集群存储的限制:
你可以根据需求调整sacct -j 176 --format=JobID,JobName,State,Elapsed,Nodes,CPUs,ExitCode > job_176_details.txt--format后的字段,比如加上MaxRSS(最大内存使用)、Partition(分区)等。
需要管理员配置的全局保留策略
如果需要长期保留所有作业的记录,得联系集群管理员调整Slurm的配置文件:
- 修改会计数据库的保留时长:在
slurmdbd.conf中设置AccountingStorageJobMaxLife参数,比如设置为保留1年:
这个参数定义了作业记录在数据库中保留的天数(默认通常是30天或更短)。AccountingStorageJobMaxLife=365 - 确保会计功能已启用:管理员需要在
slurm.conf中开启会计存储,设置:
如果没开启这个,sacct根本不会记录作业历史信息,自然查不到旧作业。AccountingStorageType=accounting_storage/slurmdbd
补充小提示
scontrol show job <jobid>只能查询slurmctld内存中缓存的作业,作业完成一段时间后会被移出内存,所以后续查询报错是正常的——查历史作业一定要用sacct。- 你之前用
sacct --name jobName.sh没结果,也可能是作业名匹配问题:Slurm的作业名默认是脚本的basename(即jobName而不是jobName.sh),可以试试sacct --name jobName再查。
内容的提问来源于stack exchange,提问作者alper
相关产品推荐
相关产品推荐

