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

Amazon web services AWS批处理始终为每个作业启动新的ec2实例,amazon-web-services,amazon-ec2,aws-batch,Amazon Web Services,Amazon Ec2,Aws Batch,我已使用设置了批处理环境 托管计算环境 作业队列 工作定义 实际作业(docker容器)进行大量视频编码,因此占用了大部分CPU。该过程本身需要几分钟(接近5分钟才能初始化所有编码器)。理想情况下,我希望每个实例有一个作业,这样编码器就不会缺少CPU 我的问题是,当我同时启动多个作业或距离足够近时,AWS batch决定在同一实例中启动这两个作业,因为第一个容器仍在初始化,尚未开始使用CPU。 在我看来,这似乎是一种竞争条件,两个作业都认为创建的实例可用 是否有一种方法可以为每个作业启动一个实例

我已使用设置了批处理环境

  • 托管计算环境
  • 作业队列
  • 工作定义
  • 实际作业(docker容器)进行大量视频编码,因此占用了大部分CPU。该过程本身需要几分钟(接近5分钟才能初始化所有编码器)。理想情况下,我希望每个实例有一个作业,这样编码器就不会缺少CPU

    我的问题是,当我同时启动多个作业或距离足够近时,AWS batch决定在同一实例中启动这两个作业,因为第一个容器仍在初始化,尚未开始使用CPU。 在我看来,这似乎是一种竞争条件,两个作业都认为创建的实例可用

    是否有一种方法可以为每个作业启动一个实例,而不查找已在运行的实例?或者任何其他解决方案来锁定指定用于特定作业的实例


    非常感谢您的帮助。

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


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

    Aws batch和ECS在调度容器时应该不会遇到任何问题,只要您正确配置。您是否在作业定义中为您的容器保留VCPU?您将计算环境的最小/最大/所需vCPU设置为什么?您是否让aws批处理决定使用哪种实例类型?Hi@ngenator,该任务需要3种不同类型的VCPU,具体取决于编码的类型。大多数情况下,它是16个vcpu,有些需要更多。因此,我在启动作业时覆盖aws批处理的
    环境
    属性。下面是我的配置``最小vCPUs 0所需vCPUs 0最大vCPUs 256实例类型c5``好的,当您说要覆盖环境属性时,您是在作业定义的ContainerProperty中谈论的吗?你在那里设置vCPU吗?environment属性用于容器的环境变量,而不用于其他容器配置。如果查看示例作业定义,是否可以验证是否在ContainerProperty中而不是在环境中设置VCPU?