hpc - 如果在作业运行期间我需要的资源不够,会发生什么?
问题描述
在slurm中,如果我需要的资源在作业运行过程中不够用会怎样?例如,#SBATCH --memory=10G; #SBATCH --cpus-per-task=2; python mytrain.py
在myscript.sh
. 在我运行sbatch myscript.sh
作业后,成功分配了所需的 cpu (2) 和内存 (10 G)。但是在作业的运行过程中,程序需要超过 10 Gb 的内存(比如加载一个大的视频数据集),我发现作业不会被杀死。该工作仍将正常工作。所以我的问题是:当我低估我需要的资源时,有什么副作用吗?(内存好像还可以,但是如果要求的cpu个数不够也可以吗?)
解决方案
Slurm 可以配置为将作业限制在其资源请求中(最常见的设置),在您使用的集群中似乎并非如此。
如果是这种情况,当您尝试使用比请求更多的内存时,您的作业将被终止,并且它将仅限于您请求的物理 CPU。
在您的情况下,使用比请求更多的内存可能会导致您的作业正在运行的节点上的内存耗尽,可能会导致您的进程(但也可能是同一节点上的其他作业的进程!)被OOM杀手杀死。使用比请求更多的 CPU 意味着您的作业启动的进程将与其他作业的进程竞争相同的物理 CPU,导致节点上的所有作业由于大量上下文切换而普遍变慢。然后,被减慢的作业可能会超过其最大时间并被杀死。
因此,低估资源可能会导致失业。如果节点在作业之间共享,也可能导致其他用户的作业丢失。
推荐阅读
- javascript - 在html中以毫秒显示当前日期时间
- angular - 拉动刷新 VS 实时 VS 可观察/订阅模式
- java - 如何调试使用 Docker Compose 运行的 Glassfish 应用程序
- mysql - 包含 NULL 作为值的列未在审计表中得到审计。我正在使用更新后触发器
- php - 如何从 PHP 数组中删除/过滤非英文值?
- linux - LKM - 无法编译模块 - 缺少头文件但已安装头包
- swift - UICollectionViewController 没有获得父属性
- python-2.7 - Boto3 Upload_file - TypeError:预期的字符串或缓冲区
- gwt - GWT 编辑器 - MaterialComboBox 可分配给原始编辑器类型,但需要类型参数化
- vbscript - 如何为自定义表单启用 VBScript?