管理 Amazon 上的容器交換記憶體空間 ECS - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管理 Amazon 上的容器交換記憶體空間 ECS

透過 Amazon ECS,您可以在容器層級控制 Linux 型 Amazon EC2執行個體上交換記憶體空間的使用。使用每個容器交換組態,任務定義內的每個容器都可以啟用或停用交換。對於已啟用交換的容器,可以限制所使用的最大交換空間量。例如,對延遲要求嚴格的容器可以停用交換。相反地,具有高暫時性記憶體需求的容器可以開啟交換,以減少容器處於負載狀態時的錯誤機率 out-of-memory。

容器的交換組態由下列容器定義參數管理:

maxSwap

容器可以使用的交換記憶體總量 (以 MiB 為單位)。此參數會轉譯為 --memory-swap選項,讓 值為容器記憶體加maxSwap值的總和。

如果將 maxSwap 值指定為 0,容器不會使用交換。接受的值為 0 或任何正整數。如果省略 maxSwap 參數,容器使用其執行所在的容器執行個體的交換組態。必須設定 maxSwap 值,才能使用 swappiness 參數。

swappiness

您可藉此調整容器的記憶體交換行為。swappiness 的值若為 0 將導致交換不會發生 (除非有需要)。為 100swappiness 值導致積極地交換頁面。接受的值為介於 0100 之間的整數。如果未指定 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 容器。

  • 如果從任務定義中省略 maxSwapswappiness 容器定義參數,每個容器都有一個為 60 的預設 swappiness 值。此外,總交換用量限制為容器記憶體的兩倍。

  • 如果您在 Amazon Linux 2023 上使用任務,則不支援 swappiness 參數。