AWS批处理始终为每个作业启动新的ec2实例

时间:2019-07-24 22:31:22

标签: amazon-web-services amazon-ec2 aws-batch

我已经使用

设置了批处理环境
  1. 托管计算环境
  2. 工作队列
  3. 职位定义

实际作业(docker容器)进行了大量的视频编码,因此占用了大部分CPU。该过程本身需要几分钟(将近5分钟才能初始化所有编码器)。理想情况下,我希望每个实例完成一项工作,以使编码器不会出现CPU短缺的情况。

我的问题是,当我同时启动多个作业或关闭足够多的作业时,AWS批处理决定在同一实例中启动两个作业,因为第一个容器仍在初始化并且尚未开始使用CPU。 在我看来,这两个工作都将创建的实例视为可用的竞争条件。

有没有一种方法可以为每个作业启动一个实例,而无需查找已经在运行的实例?或任何其他为实例指定了特定工作后将其锁定的解决方案?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您不必担心将作业分离到不同的实例上,因为作业在其中运行的容器受其可以使用的vCPU数量的限制。例如,如果您启动两个作业,每个作业需要4个vCPU,则Batch可能启动具有8个vCPU的实例,并在同一实例上运行这两个作业。每个作业只能访问4个vCPU,因此性能应与实例上没有其他作业的单独运行的作业相同。

但是,如果您仍想将作业分离到单独的实例中,则可以通过将作业的vCPU与计算环境中的实例类型进行匹配来实现。例如,如果您有一个需要4个vCPU的作业,则可以将计算环境配置为仅允许c5.xlarge实例,因此每个实例只能运行一个作业。但是,如果要运行具有更高vCPU要求的其他作业,则必须在不同的计算环境中运行它们。