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 demaxSwap
.Si se especifica un valor
maxSwap
para0
, el contenedor no utiliza el intercambio. Los valores aceptados son0
o cualquier entero positivo. Si se omite el parámetromaxSwap
, el contenedor utiliza la configuración de intercambio de la instancia de contenedor en la que se está ejecutando. Debe establecerse un valor demaxSwap
para el parámetroswappiness
. swappiness
-
Puede utilizar esta opción para ajustar el comportamiento de intercambio de memoria de un contenedor. Con un valor
swappiness
de0
, no se produce el intercambio a menos que sea necesario. Un valorswappiness
de100
aumenta al máximo el intercambio de páginas. Los valores aceptados son números enteros comprendidos entre0
y100
. Si no se especifica el parámetroswappiness
, se utiliza el valor predeterminado de60
. Si no se especifica ningún valor paramaxSwap
, 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
yswappiness
, cada contenedor tiene un valorswappiness
predeterminado de60
. 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
.