AWS ECS - 单个实例上的多个容器性能问题

时间:2018-06-04 08:20:39

标签: amazon-web-services docker multiprocessing amazon-ecs

我在AWS Elastic Container Service(ECS)上使用 16 CPU实例。我想在这里运行 8个容器所有保留2个CPU

我在这个设置中获得的性能明显慢于(大约两倍),而不是在每个2个CPU的8个实例上运行 8个容器

目前,似乎CPU分配不是“硬”,因为调度程序可以随时为容器提供2个以上的CPU。

有没有办法将CPU“硬分配”到容器?我的最终目标是使CPU尽可能专门用于单个任务,以便性能更好,即更接近我在不同实例上运行容器时获得的性能。如果我还有其他步骤,我也会很感激指点。

请注意,容器运行的任务完全独立。

1 个答案:

答案 0 :(得分:1)

所以有几点意见:

  1. " CPU" ECS配置的参数将"保留"给定容器的CPU。 CPU始终能够以最小的延迟使用那么多的CPU。但是 - 这不是最大CPU(并且无法在ECS中设置最大CPU);允许容器根据需要使用未分配的CPU。因此,如果你有一个运行2048个预留CPU单元的容器,它仍然可以使用所有16​​个CPU,直到其它需要它们为止。

  2. 您看到的性能下降可能是由于CPU崩溃导致容器需要的CPU多于您提供的CPU所导致的,因此他们会从其他容器中抓取它使用它。然后当其他容器需要它时,他们需要从更多地使用它的容器中抓取,导致其失去性能。您可能需要调整容器的大小。

  3. 在这两点之后,我不得不问:运行8个带有8个容器的小型服务器将解决此问题,因为您注意到(8个容器之间不再有资源共享)并且更便宜。为什么一个大服务器而不是8个更小?