EC2 ECS 允许您为 ECS 任务和在这些任务中运行的容器指定memory
和。我理解容器设置上的和映射到底层memoryReservation
memory
memoryReservation
Docker 内存设置。
然而,我不确定这对于任务在 EC2 ECS 下有一个memory
和memoryReservation
设置。这是否仅用于 ECS 的任务调度,还是对运行时有影响?
假设我已经对容器设置了内存限制,那么对任务设置额外的内存限制意味着什么?
答案1
简而言之,它确实有影响。它是一种两级机制,其中第一级(任务)可选地提供外部边界,第二级(容器)在第一级内提供内部边界(如果您未指定任务级别边界,则整个主机将被视为第一级边界)。
详细答案包含在这篇博文
明确配置任务大小的容器资源配置
在这种特定场景中,任务本身成为可在该任务内部运行的容器的实体边界。
在这种情况下,在该任务配置中运行的容器只能使用任务大小定义的容量,这意味着它们将任务视为其边界。正确的是,容器仍然可以看到总容量,因为它们可以读取 /proc,但该总容量对它们来说是不可用的。
从内存管理的角度来看,重要的区别在于容器不需要配置任何类型的内存限制。在这种情况下,它们都在任务级别争夺可用的内存量。[...]
如果在容器级别配置限制,则在此特定任务内运行的所有容器的内存软限制总和不能超过该任务的内存大小。[...]