AWS 批处理作业停滞在可运行状态



我正在尝试运行 100 节点的 AWS Batch 作业,当我将计算环境设置为仅使用m4.xlargem5.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(的独立计算环境,提交作业并让它们在适当的计算环境中运行。

最新更新