Amazon web services AWS批处理的调度策略

Amazon web services AWS批处理的调度策略,amazon-web-services,fifo,aws-batch,Amazon Web Services,Fifo,Aws Batch,我想知道AWS批处理背后的调度策略是什么样子的。关于此主题的官方文档没有提供太多细节: AWS批处理调度器评估何时、何地以及如何运行已提交到作业队列的作业。只要满足了对其他作业的所有依赖关系,作业就大致按照提交顺序运行 () “大约”先进先出是相当无趣的。特别是我在测试AWS批处理时观察到的执行顺序看起来不像fifo。 我错过什么了吗?是否有可能更改调度策略,或将批处理配置为按照提交作业的确切顺序执行作业?我使用批处理已经有一段时间了,它似乎总是以大致FIFO的方式运行。首先提交的作业通常会首先

我想知道AWS批处理背后的调度策略是什么样子的。关于此主题的官方文档没有提供太多细节:

AWS批处理调度器评估何时、何地以及如何运行已提交到作业队列的作业。只要满足了对其他作业的所有依赖关系,作业就大致按照提交顺序运行

()

“大约”先进先出是相当无趣的。特别是我在测试AWS批处理时观察到的执行顺序看起来不像fifo。
我错过什么了吗?是否有可能更改调度策略,或将批处理配置为按照提交作业的确切顺序执行作业?

我使用批处理已经有一段时间了,它似乎总是以大致FIFO的方式运行。首先提交的作业通常会首先启动,但由于分布式系统的限制,此一般规则无法完美执行。具有依赖项的作业将保持挂起状态,直到其依赖项完成,然后进入可运行状态。根据我的经验,每当Batch准备从RUNNABLE状态运行更多作业时,它都会选择提交时间最早的作业

然而,有一些警告。首先,如果作业A首先提交但需要8个核,而作业B稍后提交但只需要4个核,则如果批处理只有4个可用核,则可能首先选择作业B。其次,在作业离开可运行状态后,它进入启动状态,同时批处理下载Docker映像并使容器准备好运行。根据许多因素,在开始状态下,同时提交的作业可能需要更长或更短的时间。最后,如果作业失败并重试,它将返回到挂起状态并提交其原始时间。当Batch决定选择更多要运行的作业时,它通常会选择提交日期最早的作业,即失败的作业。如果在第一个作业失败之前已启动其他作业,则第一个作业将在其他作业之后开始第二次运行

无法将批处理配置为完美的FIFO,因为它是一个分布式系统,但通常情况下,如果您提交的作业具有相同的计算要求,间隔几秒钟,它们将按照您提交的相同顺序执行