当我将计算环境设置为仅使用m4.xlarge
和m5.xlarge
实例时,我正在尝试运行一个100节点的AWS Batch作业,一切正常,我的作业被拾取并运行。 / p>
但是,当我开始在计算环境中包含其他实例类型(例如m5.2xlarge
)时,作业将无限期地处于runnable
状态。我在这些更新中更改的唯一变量是计算环境中的实例类型。
当我在计算环境中包含其他实例类型时,我不确定是什么原因导致无法执行此作业。在Compute Environment Parameters的文档中,唯一的注释是:
创建计算环境时,为计算环境选择的实例类型必须共享相同的体系结构。例如,您不能在同一计算环境中混合使用x86和ARM实例。
JobDefinition
是多节点:
我的计算环境将最大vCPU设置为10,000
,始终处于VALID
状态,并且始终为ENABLED
。另外,我的EC2 vCPU限制为6,000
。 CloudWatch不提供日志,因为作业尚未开始,我不确定在此还可以尝试什么。我也没有为实例类型使用optimal
设置,因为我遇到了没有足够实例的问题。
答案 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中运行。