Administración de la memoria en Instancia de contenedor - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administración de la memoria en Instancia de contenedor

Cuando el agente de contenedor de Amazon ECS registra una instancia de contenedor en un clúster, el agente debe determinar la cantidad de memoria disponible en la instancia de contenedor para reservarla para las tareas. Debido a la sobrecarga de la memoria de la plataforma y a la memoria ocupada por el kernel del sistema, este número es diferente de la cantidad de memoria instalada que se anuncia para las instancias Amazon EC2. Por ejemplo, una instancia m4.large tiene 8 GiB de memoria instalada. Sin embargo, esto no siempre significa que haya exactamente 8192 MiB de memoria disponible para las tareas cuando se registra la instancia de contenedor.

Si especifica 8192 MiB para la tarea y ninguna instancia de contenedor tiene 8192 MiB o más de memoria disponible para satisfacer este requisito, la tarea no podrá situarse en el clúster.

También debe reservar algo de memoria para el agente de contenedor de Amazon ECS y otros procesos críticos del sistema en las instancias de contenedor, de modo que los contenedores de las tareas no compitan por la misma memoria y puedan desencadenar un error del sistema. Para obtener más información, consulte Reservar memoria del sistema.

El agente de contenedor de Amazon ECS utiliza la función ReadMemInfo() de Docker para consultar la memoria total disponible en el sistema operativo. Tanto Linux como Windows cuentan con herramientas de línea de comandos para determinar la memoria total.

ejemplo - Determinar la memoria total en Linux

El comando free devuelve la memoria total reconocida por el sistema operativo.

$ free -b

Este es un ejemplo de la salida para una instancia m4.large que ejecuta la Amazon ECS-optimized Amazon Linux AMI.

total used free shared buffers cached Mem: 8373026816 348180480 8024846336 90112 25534464 205418496 -/+ buffers/cache: 117227520 8255799296

Esta instancia tiene 8 373 026 816 bytes de memoria total, lo que se traduce en 7 985 MiB disponibles para tareas.

ejemplo - Determinar la memoria total en Windows

El comando wmic devuelve la memoria total reconocida por el sistema operativo.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Este es un ejemplo de la salida para una instancia m4.large que ejecuta la Amazon ECS-optimized Windows AMI.

TotalPhysicalMemory 8589524992

Esta instancia tiene 8 589 524 992 bytes de memoria total, lo que se traduce en 8 191 MiB disponibles para tareas.

Reservar memoria del sistema

Si se ocupa toda la memoria de una instancia de contenedor con las tareas, es posible que las tareas tengan que competir por la memoria con los procesos críticos del sistema, lo que podría desencadenar un error del sistema. El agente de contenedor de Amazon ECS dispone de una variable de configuración denominada ECS_RESERVED_MEMORY que se puede utilizar para quitar un número concreto de MiB de memoria del grupo asignado a las tareas. Este es un mecanismo eficaz que permite reservar memoria para los procesos críticos del sistema.

Por ejemplo, si se especifica ECS_RESERVED_MEMORY=256 en el archivo de configuración del agente, el agente registrará la memoria total menos 256 MiB de esa instancia y las tareas de ECS no podrán asignar 256 MiB de memoria. Para obtener más información sobre las variables de configuración del agente y cómo definirlas, consulte Amazon ECSConfiguración del agente de contenedor de y Proceso de arranque de instancias de contenedor con datos de usuario de Amazon EC2.

Consultar la memoria de Instancia de contenedor

Puede ver la cantidad de memoria que registra una instancia de contenedor en la consola de Amazon ECS (o mediante la operación DescribeContainerInstances de la API). Si intenta maximizar la utilización de recursos proporcionando a las tareas la mayor cantidad de memoria posible para un determinado tipo de instancia, puede observar la memoria disponible para esa instancia de contenedor y asignar después a las tareas esa cantidad de memoria.

Para ver la memoria de un instancia de contenedor

  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. Elija el clúster donde se alojan las instancia de contenedors que desea ver.

  3. Elija ECS Instances (Instancias ECS) y, en la columna Container Instance (Instancia de contenedor), la instancia de contenedor que desee ver.

  4. En la sección Resources (Recursos), se muestra la memoria registrada y la memoria disponible para la instancia de contenedor.

    El valor de Registered (Registrada) es la memoria que la instancia de contenedor registró en Amazon ECS cuando se lanzó por primera vez, mientras que el valor de Available (Disponible) es la memoria que aún no se ha asignado a ninguna tarea.