Docker

對於在 EC2 ECS 上執行的任務,memory 和 memoryReservation 如何工作?

  • December 10, 2021

EC2 ECS 允許您為 ECS 任務和在這些任務中執行的容器指定memory和。memoryReservation我了解容器設置映射memorymemoryReservation底層Docker 記憶體設置

但是,我不確定在 EC2 ECS 下具有和設置的*任務意味著什麼。*這僅用於ECS的任務調度,還是有一些執行時影響?memory``memoryReservation

假設我已經在容器上設置了記憶體限制,那麼在任務上設置額外的記憶體限制是什麼意思?

簡短的回答是它確實有影響。這是一種兩級機制,其中第一級(任務)可選地提供外部邊界,第二級(容器)在第一級內提供內部邊界(如果您未指定任務級邊界,則整個主機被視為第一級邊界)。

長答案包含在這篇博文中

明確配置了任務大小的容器資源配置

在這個特定場景中,任務本身成為圍繞可以在該任務內執行的容器的堅實邊界。

**在這種情況下,在此任務配置中執行的容器只能使用由任務大小定義的容量,這意味著它們將任務視為其邊界。**正確地說,容器仍然可以看到總容量,因為它們可以讀取 /proc,但總容量對它們不可用。

從記憶體管理的角度來看,重要的區別在於容器不需要配置任何類型的記憶體限制。在這種情況下,它們都在任務級別競爭可用的記憶體量。

$$ … $$ 如果在容器級別配置限制,則在此特定任務中執行的所有容器的記憶體軟限制總和不能超過任務的記憶體大小。

$$ … $$

引用自:https://serverfault.com/questions/1085786