Administración del espacio de memoria de intercambio de contenedores en Amazon ECS - Amazon Elastic Container Service

Administración del espacio de memoria de intercambio de contenedores en Amazon ECS

Con Amazon ECS, es posible controlar el uso del espacio de memoria de intercambio en las instancias de Amazon EC2 basadas en Linux en el nivel de contenedor. Con la configuración de intercambio por contenedor, cada contenedor dentro de una definición de tareas puede tener el intercambio habilitado o deshabilitado. Para aquellos que lo tienen habilitado, es posible limitar la cantidad máxima de espacio de intercambio que se utiliza. Por ejemplo, los contenedores de latencia crítica pueden tener el intercambio deshabilitado. En cambio, los contenedores con una gran demanda de memoria transitoria pueden tener activado el intercambio para reducir las posibilidades de errores de memoria insuficiente cuando el contenedor opera con carga.

La configuración de intercambio de un contenedor se administra mediante los siguientes parámetros de definición de contenedor:

maxSwap

La cantidad total de memoria de intercambio (en MiB) que puede utilizar un contenedor. Este parámetro se traduce en la opción --memory-swap de docker run donde el valor es la suma de la memoria del contenedor más el valor de maxSwap.

Si se especifica un valor maxSwap para 0, el contenedor no utiliza el intercambio. Los valores aceptados son 0 o cualquier entero positivo. Si se omite el parámetro maxSwap, el contenedor utiliza la configuración de intercambio de la instancia de contenedor en la que se está ejecutando. Debe establecerse un valor de maxSwap para el parámetro swappiness.

swappiness

Puede utilizar esta opción para ajustar el comportamiento de intercambio de memoria de un contenedor. Con un valor swappiness de 0, no se produce el intercambio a menos que sea necesario. Un valor swappiness de 100 aumenta al máximo el intercambio de páginas. Los valores aceptados son números enteros comprendidos entre 0 y 100. Si no se especifica el parámetro swappiness, se utiliza el valor predeterminado de 60. Si no se especifica ningún valor para maxSwap, este parámetro se omite. Este parámetro se corresponde con la opción --memory-swappiness con docker run.

En el siguiente ejemplo, se proporciona la sintaxis JSON.

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

Consideraciones

Tenga en cuenta lo siguiente cuando utilice una configuración de intercambio por contenedor.

  • El espacio de intercambio debe estar habilitado y asignado a la instancia de Amazon EC2 que aloja las tareas para que las utilicen los contenedores. De forma predeterminada, las AMI optimizadas para Amazon ECS no tienen habilitado el intercambio. Debe habilitar el intercambio en la instancia para utilizar esta característica. Para obtener más información, consulte Volúmenes de intercambio de almacén de instancias en la Guía del usuario de Amazon EC2 o ¿Cómo asigno memoria para que funcione como espacio de intercambio en una instancia de Amazon EC2?.

  • Los parámetros de definición de contenedores de espacio de intercambio solo se admiten para las definiciones de tareas que especifican el tipo de lanzamiento de EC2. Estos parámetros no se admiten en las definiciones de tareas destinadas únicamente al uso de Amazon ECS en Fargate.

  • Esta característica solo se admite para los contenedores de Linux. Los contenedores de Windows actualmente no se admiten.

  • Si en una definición de tareas se omiten los parámetros de definición de contenedor maxSwap y swappiness, cada contenedor tiene un valor swappiness predeterminado de 60. Además, el uso total de intercambio se limita al doble de la memoria del contenedor.

  • Si utiliza tareas en Amazon Linux 2023, no se admite el parámetro swappiness.