SLURM群集中的错误-检测到1个oom-kill事件:如何改善正在运行的作业

时间:2018-09-20 08:48:51

标签: memory cluster-computing slurm

我正在SLURM集群中工作,并且同时(使用多个输入文件)并使用相同的bash脚本同时运行多个进程。

在工作结束时,进程被杀死,这是我所获得的错误。

slurmstepd: error: Detected 1 oom-kill event(s) in step 1090990.batch cgroup.

我的猜测是内存存在问题。但是我怎么能知道更多呢? 我没有提供足够的内存吗?还是作为用户我要求的权限超出了我的权限?

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

批准的答案是正确的,但更准确地说是错误的

slurmstepd: error: Detected 1 oom-kill event(s) in step 1090990.batch cgroup.

表示您的Linux的 CPU RAM内存不足

例如,如果您在GPU上运行一些计算,而请求的GPU内存超出可用内存,则会导致类似这样的错误(例如PyTorch):

RuntimeError: CUDA out of memory. Tried to allocate 8.94 GiB (GPU 0; 15.90 GiB total capacity; 8.94 GiB already allocated; 6.34 GiB free; 0 bytes cached)

请查看此article中的说明以获取更多详细信息。

解决方案: 增加或添加脚本参数--mem-per-cpu

1)如果您使用 sbatch sbatch your_script.sh运行脚本,请在以下行中添加脚本:

#SBATCH --mem-per-cpu=<value bigger than you've requested before>

2)如果您使用的是 sran sran python3 your_script.py像这样添加此参数:

sran --mem-per-cpu=<value bigger than you've requested before> python3 your_script.py

答案 1 :(得分:2)

此处OOM表示“内存不足”。当Linux的内存不足时,它将“杀死”进程以保持关键进程的运行。似乎slurmstepd检测到您的进程被杀死了。 Oracle具有a nice explanation这种机制。

如果您请求的内存超出了您的允许范围,则该进程将不会分配给节点,并且计算也不会开始。看来您需要请求更多的内存。