我正在SLURM集群中工作,并且同时(使用多个输入文件)并使用相同的bash脚本同时运行多个进程。
在工作结束时,进程被杀死,这是我所获得的错误。
slurmstepd: error: Detected 1 oom-kill event(s) in step 1090990.batch cgroup.
我的猜测是内存存在问题。但是我怎么能知道更多呢? 我没有提供足够的内存吗?还是作为用户我要求的权限超出了我的权限?
有什么建议吗?
答案 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这种机制。
如果您请求的内存超出了您的允许范围,则该进程将不会分配给节点,并且计算也不会开始。看来您需要请求更多的内存。