AWS Batch作业卡在可运行状态

时间:2020-05-29 23:01:57

标签: amazon-web-services

当我将计算环境设置为仅使用m4.xlargem5.xlarge实例时,我正在尝试运行一个100节点的AWS Batch作业,一切正常,我的作业被拾取并运行。 / p>

但是,当我开始在计算环境中包含其他实例类型(例如m5.2xlarge)时,作业将无限期地处于runnable状态。我在这些更新中更改的唯一变量是计算环境中的实例类型。

当我在计算环境中包含其他实例类型时,我不确定是什么原因导致无法执行此作业。在Compute Environment Parameters的文档中,唯一的注释是:

创建计算环境时,为计算环境选择的实例类型必须共享相同的体系结构。例如,您不能在同一计算环境中混合使用x86和ARM实例。

JobDefinition是多节点:

  • 节点0
    • vCPU:1
    • 内存:15360 MiB
  • 节点1:
    • vCPU:2
    • 内存:15360 MiB

我的计算环境将最大vCPU设置为10,000,始终处于VALID状态,并且始终为ENABLED。另外,我的EC2 vCPU限制为6,000。 CloudWatch不提供日志,因为作业尚未开始,我不确定在此还可以尝试什么。我也没有为实例类型使用optimal设置,因为我遇到了没有足够实例的问题。

1 个答案:

答案 0 :(得分:4)

我刚刚解决了这个问题,问题出在批次中的BEST_FIT策略上。我要提交的作业距离实例类型不够近,因此它们永远都不会被拾取。

我通过修改作业定义以使用8 vCPU and 30GB内存来解决了这一问题,并且作业以m5.2xlarge实例开始。

我将使用BEST_FIT_PROGRESSIVE策略来解决此问题并进行报告,尽管我对此会怀疑。

-

更新:我已经与AWS Support进行了交谈,并获得了更多见解。 BEST_FIT_PROGRESSIVE分配策略具有针对过度扩展的内置保护,因此客户不会意外启动数千个实例。尽管这会产生我所经历的副作用,导致工作无法启动。

支持工程师的建议是在计算环境和BEST_FIT分配策略中使用单一实例类型。由于我的作业具有不同的实例要求,因此我能够成功创建针对不同实例类型(c5.large, c5.xlarge, m4.xlarge)的三个单独的ComputeEnvironments,提交作业并使它们在适当的Compute Environment中运行。