在我负责的部门集群第一次硬关闭时,我遇到了以下问题。系统正在运行 SLURM 17.11 并使用 MariaDB/SQL 存储会计数据。
为了执行内存升级,我不得不关闭集群的控制和数据库服务器,该服务器使用 SLURM 作为调度程序。重新启动后,控制守护进程拒绝启动,因为显然状态保存文件/var/spool
不再具有正确的权限。因此,我/var/spool/slurm_state
为 slurm 状态文件创建了一个专用文件夹,并将所有权更改为slurm:slurm
。修改sulrm.conf
以设置正确后StateSaveLocation
,控制守护进程启动,我可以提交测试作业。
然而,我没有抄袭老的状态文件移至新位置。因此,新作业再次从 JobID 1 开始。意识到这一点后,我迅速终止slurmctld
并改回StateSaveLocation
(/var/spool
使用适当的组和权限更改)。
现在,当控制守护进程关闭时,正在运行的一个测试作业将停留在数据库中,状态设置为RUNNING
systemverwalter 2 240 9-21:40:55 100.0 RUNNING allgather_latency_240_mpich
仅累积帐户的运行时间。
我曾尝试以scancel
用户身份以及以的身份终止该作业root
,但无济于事。使用暂停该作业的尝试也未scontrol
取得预期结果。
我的问题是:我应该怎么做才能终止这项工作?我是否必须手动修改数据库条目,还是有更简单的解决方案?
答案1
以下命令将列出失控的作业并提供删除它们的方法:
sacctmgr show runawayjobs
答案2
好的。我已经找到了一个非常简单的方法来解决这个问题,尽管我不认为这个方法总是有效的。
要消除此类僵尸进程,请按以下步骤操作:
- 以具有帐户(或)
sacctmgr
的用户身份启动 SLURM 帐户管理器。Operator
root
list runawayjobs
通过发出提示来搜索失控的作业sacctmgr
。- 如果系统识别出一个或多个没有结束日期的作业,即孤立(失控)作业,系统将询问您是否要修复它。使用 确认
Y
。
在报告中出现失控作业sacct
9 天后,这些步骤解决了我的问题。