home ec2 east aws amazon-web-services memory cluster-computing amazon-ecs

amazon web services - ec2 - Memoria de tareas de AWS ECS Límites de hardware y software



ec2 request limit (1)

Si espera ejecutar una carga de trabajo de cómputo que está principalmente vinculada a la memoria en lugar de a la CPU, debe usar solo el límite rígido, no el límite flexible. De los documentos:

Debe especificar un número entero que no sea cero para una o ambas de memoria o memoriaReservación en definiciones de contenedor. Si especifica ambos, la memoria debe ser mayor que memoryReservation. Si especifica memoryReservation, ese valor se resta de los recursos de memoria disponibles para la instancia de contenedor en la que se coloca el contenedor; de lo contrario, se utiliza el valor de la memoria.

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

Al especificar solo un límite de memoria para sus tareas, evita quedarse sin memoria porque ECS deja de colocar tareas en la instancia y la ventana acoplable elimina los contenedores que intentan sobrepasar el límite.

La función de límite de memoria flexible está diseñada para aplicaciones vinculadas a la CPU donde desea reservar un mínimo de memoria (el límite flexible), pero permitir ráfagas ocasionales hasta el límite duro. En este tipo de carga de trabajo pesada de la CPU, realmente no le importa el valor específico del uso de memoria para los contenedores, ya que los contenedores se quedarán sin CPU mucho antes de que agoten la memoria de la instancia, por lo que puede colocar tareas basadas en Reserva de CPU y límite de memoria blanda. En esta configuración, el límite duro es solo una prueba de fallos en caso de que algo se salga de control o haya una pérdida de memoria.

Entonces, en resumen, debe evaluar su carga de trabajo utilizando pruebas de carga y ver si tiende a quedarse sin CPU primero o sin memoria. Si está enlazado a la CPU, puede utilizar el límite de la memoria flexible con un límite fijo opcional como una prueba de fallas. Si está enlazado a la memoria, deberá usar solo el límite rígido sin límite blando.

Estoy confundido acerca del propósito de tener límites de memoria tanto de hardware como de software para las definiciones de tareas de ECS.

IIRC el límite flexible es la cantidad de memoria que el programador reserva en una instancia para que se ejecute la tarea, y el límite estricto es la cantidad de memoria que un contenedor puede usar antes de ser asesinado.

Mi problema es que si el programador de ECS asigna tareas a instancias basadas en el límite flexible, podría tener una situación en la que una tarea que utiliza la memoria por encima del límite flexible pero por debajo del límite difícil podría hacer que la instancia supere su memoria máxima (suponiendo que todas las demás tareas están utilizando la memoria ligeramente por debajo o igual a su límite suave).

¿Es esto correcto?

Gracias