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