本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 Amazon 上的容器交換記憶體空間 ECS
透過 Amazon ECS,您可以在容器層級控制 Linux 型 Amazon EC2執行個體上交換記憶體空間的使用。使用每個容器交換組態,任務定義內的每個容器都可以啟用或停用交換。對於已啟用交換的容器,可以限制所使用的最大交換空間量。例如,對延遲要求嚴格的容器可以停用交換。相反地,具有高暫時性記憶體需求的容器可以開啟交換,以減少容器處於負載狀態時的錯誤機率 out-of-memory。
容器的交換組態由下列容器定義參數管理:
maxSwap
-
容器可以使用的交換記憶體總量 (以 MiB 為單位)。此參數會轉譯為
--memory-swap
選項,讓 值為容器記憶體加maxSwap
值的總和。如果將
maxSwap
值指定為0
,容器不會使用交換。接受的值為0
或任何正整數。如果省略maxSwap
參數,容器使用其執行所在的容器執行個體的交換組態。必須設定maxSwap
值,才能使用swappiness
參數。 swappiness
-
您可藉此調整容器的記憶體交換行為。
swappiness
的值若為0
將導致交換不會發生 (除非有需要)。為100
的swappiness
值導致積極地交換頁面。接受的值為介於0
與100
之間的整數。如果未指定swappiness
參數,則會使用預設值60
。如果未對maxSwap
指定值,則會忽略此參數。此參數會映射至--memory-swappiness
選項,以執行 Docker。
在下列範例中,會提供 JSON語法。
"containerDefinitions": [{
...
"linuxParameters": {
"maxSwap": integer
,
"swappiness": integer
},
...
}]
考量事項
當您使用每個容器交換組態時,請考量下列事項。
-
必須在託管任務的 Amazon EC2執行個體上啟用和配置交換空間,以供容器使用。根據預設,Amazon ECS最佳化AMIs不會啟用交換。您必須在執行個體上啟用交換,才能使用此功能。如需詳細資訊,請參閱 Amazon EC2使用者指南中的執行個體存放區交換磁碟區,或如何使用交換檔案將記憶體配置為 Amazon EC2執行個體中的交換空間?
-
只有指定EC2啟動類型的任務定義才支援交換空間容器定義參數。這些參數不支援僅用於 Fargate ECS上的 Amazon 的任務定義。
-
只有 Linux 容器才支援此功能。目前不支援 Windows 容器。
-
如果從任務定義中省略
maxSwap
和swappiness
容器定義參數,每個容器都有一個為60
的預設swappiness
值。此外,總交換用量限制為容器記憶體的兩倍。 -
如果您在 Amazon Linux 2023 上使用任務,則不支援
swappiness
參數。