Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

管理容器交换空间

Amazon ECS 使您可以在容器级别控制 Linux 容器实例上的交换内存空间使用量。使用每容器交换配置,任务定义中的每个容器都可以启用或禁用交换,对于启用交换的容器,可以对所用的最大交换空间量进行限制。例如,延迟关键型容器可以禁用交换,而具有高暂时内存需求的容器可以打开交换,以减少容器负载时出现内存不足错误的机率。

容器的交换配置由以下容器定义参数管理:

maxSwap

容器可以使用的交换内存总量(以 MiB 为单位)。此参数将被转换为 docker run--memory-swap 选项,其中该值将为容器内存加上 maxSwap 值的总和。

如果指定 maxSwap 值为 0,则该容器将不使用交换。接受的值为 0 或任何正整数。如果省略 maxSwap 参数,该容器将为其运行所在的容器实例使用交换配置。必须为要使用的 swappiness 参数设置 maxSwap 值。

swappiness

使用此参数,您可以调整容器的内存 swappiness 行为。除非绝对必要,否则 swappiness 值为 0 将导致交换不会发生。swappiness 值为 100 将导致页面被非常积极地交换。接受的值为 0100 之间的整数。如果未指定 swappiness 参数,则使用默认值 60。如果未指定 maxSwap 的值,则此参数将被忽略。此参数会将 --memory-swappiness 选项映射到 docker run

以下示例展示了 JSON 语法:

"containerDefinitions": [{ ... "linuxParameters": { "maxSwap": integer, "swappiness": integer }, ... }]

容器交换注意事项

使用每容器交换配置时,请考虑以下事项。

  • 必须在容器实例上启用并分配交换空间才能供容器使用。

    注意

    经 Amazon ECS 优化的 AMI 默认情况下未启用交换。您必须在实例上启用交换才能使用此功能。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的实例存储交换卷如何使用交换文件分配内存充当 Amazon EC2 实例中的交换空间?

  • 仅使用 EC2 启动类型的任务定义支持交换空间容器定义参数。

  • 仅 Linux 容器支持此功能。

  • 如果从任务定义中省略了 maxSwapswappiness 容器定义参数,则每个容器的默认 swappiness 值为 60,并且总交换使用量将限制为容器内存预留的两倍。

本页内容: