首页 > 解决方案 > 如果在作业运行期间我需要的资源不够,会发生什么?

问题描述

在slurm中,如果我需要的资源在作业运行过程中不够用会怎样?例如,#SBATCH --memory=10G; #SBATCH --cpus-per-task=2; python mytrain.pymyscript.sh. 在我运行sbatch myscript.sh作业后,成功分配了所需的 cpu (2) 和内存 (10 G)。但是在作业的运行过程中,程序需要超过 10 Gb 的内存(比如加载一个大的视频数据集),我发现作业不会被杀死。该工作仍将正常工作。所以我的问题是:当我低估我需要的资源时,有什么副作用吗?(内存好像还可以,但是如果要求的cpu个数不够也可以吗?)

标签: hpcslurm

解决方案


Slurm 可以配置为将作业限制在其资源请求中(最常见的设置),在您使用的集群中似乎并非如此。

如果是这种情况,当您尝试使用比请求更多的内存时,您的作业将被终止,并且它将仅限于您请求的物理 CPU。

在您的情况下,使用比请求更多的内存可能会导致您的作业正在运行的节点上的内存耗尽,可能会导致您的进程(但也可能是同一节点上的其他作业的进程!)被OOM杀手杀死。使用比请求更多的 CPU 意味着您的作业启动的进程将与其他作业的进程竞争相同的物理 CPU,导致节点上的所有作业由于大量上下文切换而普遍变慢。然后,被减慢的作业可能会超过其最大时间并被杀死。

因此,低估资源可能会导致失业。如果节点在作业之间共享,也可能导致其他用户的作业丢失。


推荐阅读