我正在尝试运行 100 节点的 AWS Batch 作业,当我将计算环境设置为仅使用m4.xlarge
和m5.xlarge
实例时,一切正常,并且我的作业已拾取并运行。
但是,当我开始在我的计算环境中包括其他实例类型(例如m5.2xlarge
(时,作业将无限期地停滞在runnable
状态。我在这些更新中更改的唯一变量是计算环境中的实例类型。
我不确定当我在计算环境中包括其他实例类型时,是什么原因导致此作业无法选取。在计算环境参数的文档中,唯一的注释是:
创建计算环境时,您为计算环境选择的实例类型必须共享相同的架构。例如,不能在同一计算环境中混合使用 x86 和 ARM 实例。
JobDefinition
是多节点的:
- 节点 0
- 虚拟处理器:1
- 内存: 15360 MiB
- 节点 1:
- 虚拟处理器:2 个
- 内存: 15360 MiB
我的计算环境最大vCPU设置为10,000
,始终处于VALID
状态并且始终ENABLED
。此外,我的EC2 vCPU限制是6,000
。CloudWatch 不提供日志,因为作业尚未启动,我不确定这里还能尝试什么。我也没有对实例类型使用optimal
设置,因为我遇到了无法获得足够实例的问题。
我刚刚解决了这个问题,问题出在 Batch 中的BEST_FIT
策略上。我提交的作业与实例类型不够接近,因此永远不会被拾取。
我通过修改作业定义以使用内存8 vCPU and 30GB
来解决这个问题,并且作业从m5.2xlarge
实例开始。
我将看看使用BEST_FIT_PROGRESSIVE
策略是否会解决此问题并报告,尽管我怀疑它会。
--
更新:我已经与 AWS Support 进行了交谈,并获得了更多见解。BEST_FIT_PROGRESSIVE
分配策略具有针对过度扩展的内置保护,因此客户不会意外启动数千个实例。尽管这具有我正在经历的副作用,导致工作无法开始。
支持工程师的建议是在计算环境和BEST_FIT
分配策略中使用单个实例类型。由于我的作业具有不同的实例要求,因此我能够成功创建三个针对不同实例类型(c5.large, c5.xlarge, m4.xlarge
(的独立计算环境,提交作业并让它们在适当的计算环境中运行。