SLURM 集群中的错误 - 检测到 1 个 oom-kill 事件:如何改进 运行 个工作
Error in SLURM cluster - Detected 1 oom-kill event(s): how to improve running jobs
我在 SLURM 集群中工作,我同时 运行 多个进程(在多个输入文件上),并使用相同的 bash 脚本。
在作业结束时,进程被终止,这是我得到的错误。
slurmstepd: error: Detected 1 oom-kill event(s) in step 1090990.batch cgroup.
我的猜测是内存有问题。但是我怎样才能知道更多呢?
我没有提供足够的内存吗?或者作为用户,我请求的内容超出了我的访问权限?
有什么建议吗?
这里OOM代表"Out of Memory"。当 Linux 内存不足时,它将 "oom-kill" 一个进程来保持关键进程 运行。看起来 slurmstepd
检测到您的进程被 oom-killed。 Oracle有a nice explanation这种机制。
如果您请求的内存超出允许的范围,则进程不会分配给节点,计算也不会开始。看来您需要申请更多内存。
批准的答案是正确的,但更准确地说,是错误的
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
我错过了 scheduler="processes"
参数。
mean_squared_errors = dask.compute(*delayed_results, scheduler="processes")
我也在 SLURM 集群上,修复这个疏忽解决了我的问题。
我在 SLURM 集群中工作,我同时 运行 多个进程(在多个输入文件上),并使用相同的 bash 脚本。
在作业结束时,进程被终止,这是我得到的错误。
slurmstepd: error: Detected 1 oom-kill event(s) in step 1090990.batch cgroup.
我的猜测是内存有问题。但是我怎样才能知道更多呢? 我没有提供足够的内存吗?或者作为用户,我请求的内容超出了我的访问权限?
有什么建议吗?
这里OOM代表"Out of Memory"。当 Linux 内存不足时,它将 "oom-kill" 一个进程来保持关键进程 运行。看起来 slurmstepd
检测到您的进程被 oom-killed。 Oracle有a nice explanation这种机制。
如果您请求的内存超出允许的范围,则进程不会分配给节点,计算也不会开始。看来您需要申请更多内存。
批准的答案是正确的,但更准确地说,是错误的
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
我错过了 scheduler="processes"
参数。
mean_squared_errors = dask.compute(*delayed_results, scheduler="processes")
我也在 SLURM 集群上,修复这个疏忽解决了我的问题。