AWS批处理总是为每个作业启动新的ec2实例。

问题描述 投票:1回答:1

我已经设置了一个批处理环境,其中包括

  1. 管理型计算环境
  2. 工作队列
  3. 工作定义

实际的工作(docker容器)需要进行大量的视频编码,因此占用了大部分的CPU。这个过程本身需要几分钟的时间(接近5分钟的时间来初始化所有的编码器)。理想情况下,我希望每个实例只有一个作业,这样编码器就不会耗费CPU。

我的问题是,当我同时或足够接近地启动多个作业时,AWS批处理决定在同一个实例中启动这两个作业,因为第一个容器仍在初始化,还没有开始使用CPU。对我来说,这似乎是一个竞赛条件,两个作业都认为创建的实例是可用的。

有什么方法可以让我为每个作业启动一个实例,而不用寻找已经在运行的实例?或者有什么其他的方法可以在实例被指定给某个作业后锁定它?

非常感谢你的帮助。

amazon-web-services amazon-ec2 aws-batch
1个回答
1
投票

你不应该担心将作业分离到不同的实例上,因为作业运行的容器在它们可以使用的vCPU数量上是有限的。例如,如果你启动两个作业,每个作业都需要4个vCPU,Batch可能会旋转一个拥有8个vCPU的实例,并在同一个实例上运行两个作业。每个作业只能访问其中的4个vCPU,因此性能应该与在实例上没有其他作业的情况下单独运行的作业相同。

然而,如果你仍然想把作业分开到不同的实例上,你可以通过将作业的vCPU与计算环境中的实例类型相匹配来实现。例如,如果你有一个需要4个vCPU的作业,你可以将计算环境配置为只允许c5.xlarge实例,这样每个实例只能运行一个作业。然而,如果你想运行其他对vCPU要求更高的作业,你就必须在不同的计算环境中运行它们。

© www.soinside.com 2019 - 2024. All rights reserved.