【发布时间】:2019-12-03 03:33:00
【问题描述】:
我已经设置了一个批处理环境
- 托管计算环境
- 作业队列
- 工作定义
实际工作(docker 容器)会进行大量视频编码,因此会占用大部分 CPU。该过程本身需要几分钟(接近 5 分钟来初始化所有编码器)。理想情况下,我希望每个实例都有一份工作,这样编码器就不会被 CPU 饿死。
我的问题是,当我同时启动多个作业或足够接近时,AWS 批处理决定在同一个实例中启动它们,因为第一个容器仍在初始化并且尚未开始使用 CPU。 对我来说,这似乎是一种竞争条件,两个作业都将创建的实例视为可用。
有没有一种方法可以为每个作业启动一个实例,而无需查找已经在运行的实例?或者任何其他解决方案在指定用于特定作业后锁定实例?
非常感谢您的帮助。
【问题讨论】:
-
Aws 批处理和 ECS 应该不会在调度容器时遇到任何问题,只要您正确配置即可。您是否在作业定义中为您的容器保留 vcpus?您将计算环境的最小/最大/所需 vcpus 设置为什么?您是否让 aws batch 决定使用哪些实例类型?
-
嗨@ngenator,该任务需要3种不同类型的VCPU,具体取决于编码类型。大多数时候它是 16 个 vcpu,有些需要更多。所以我在启动作业时覆盖了 aws 批处理的
environment属性。下面是我的配置 ``` 最小 vCPU 0 所需 vCPU 0 最大 vCPU 256 实例类型 c5 ``` -
好的,当您说要覆盖环境属性时,您是在谈论作业定义的 containerProperties 吗?你在那里设置 vcpus 吗? environment 属性用于容器的环境变量,而不用于其他容器配置。如果您查看示例作业定义,您能否验证您是在 containerProperties 而不是在环境中设置 vcpus? docs.aws.amazon.com/batch/latest/userguide/…
标签: amazon-web-services amazon-ec2 aws-batch