amazon-web-services amazon-ec2 aws-sdk

amazon web services - ¿Qué significa el parámetro ''cpu'' en el servicio de contenedor aws?



amazon-web-services amazon-ec2 (1)

"El número de unidades de CPU que se reservan para el contenedor. Una instancia de contenedor tiene 1.024 unidades de cpu para cada núcleo de CPU. Este parámetro especifica la cantidad mínima de CPU para reservar para un contenedor, y los contenedores comparten unidades de CPU sin asignar con otros contenedores en la instancia con la misma proporción que su cantidad asignada. Este parámetro se asigna a CpuShares en la sección Crear un contenedor de la API de Docker Remote y la opción --cpu-shares para ejecutar la ventana acoplable ".

Un t2.medium tiene 2 vCPU, por lo que tiene 2,048 unidades de CPU disponibles para programar. Si desea que solo se ejecute un solo contenedor en el host, puede presupuestar las 2.048 unidades de CPU, pero ningún otro contenedor se colocará en ese host.

Los contenedores siempre tienen la garantía de obtener al menos su CPU presupuestada cuando la necesitan . Además, lo mejor de las unidades de CPU es que un contenedor puede explotar por encima de sus unidades asignadas si ningún otro contenedor está ocupando el recurso. Por ejemplo, si tiene dos tareas ejecutándose en un t2.medium, cada una con 1,024 unidades de CPU presupuestadas, cada tarea podría aumentar individualmente hasta 2,048, dado que la otra tarea estaba completamente inactiva. Cuando comienza a compartir hosts de esta manera, puede realmente reducir los ahorros en costos utilizando ECS.

Además, si todas las unidades de CPU no están presupuestadas, ECS dividirá automáticamente las unidades de CPU restantes para cada contenedor en la proporción de sus unidades de CPU presupuestadas. Entonces, si tiene dos tareas ejecutándose en un t2.medium cada una con 0 unidades de CPU, cada contenedor obtendrá efectivamente 1,024 unidades de CPU, ya que ningún otro contenedor las ha reservado.

Una cosa a tener en cuenta aquí es que la memoria funciona de manera un poco diferente; es un limite duro Si el contenedor alguna vez intenta asignar más memoria de la que está presupuestada, la tarea / contenedor se cerrará. Puede subestimar las unidades de CPU y, por lo general, salirse con la suya (porque los contenedores pueden explotar por encima de su provisión), pero debe asegurarse de mantenerse dentro de sus límites de memoria.

Ejemplo: si lo configura en 0, tomará una cantidad proporcional de la CPU no reservada. Supongamos que estos escenarios están en t2.mediums con 2,048 unidades de CPU:

Tareas # 1 - 0 unidades de CPU, Tareas # 2 - 0 unidades de CPU: En esta situación, tanto la Tarea # 1 como la Tarea # 2 recibirán 1,024 unidades de CPU, ya que hay 2,048 unidades no reservadas. Dado que las tareas son 1: 1 para las reservas de unidades de CPU, ambas obtendrán una parte igual de las unidades de CPU disponibles.

Tarea # 1 - 0 unidades de CPU, Tarea # 2 - 1,024 unidades de CPU: La tarea # 2 recibirá 2,048 unidades de CPU y la Tarea # 1 tendrá 0, ya que está tratando de dividir 1,024 unidades de CPU no utilizadas en una proporción de 0: 1,024.

Tareas 1: 0 - unidades de CPU: si solo hay una tarea en la máquina, se le entregarán todas las 2,048 unidades de CPU, ya que todas las unidades no están en uso, se dividen entre los contenedores en una proporción de su reserva.

Voy a registrar una nueva tarea en el servicio de contenedores para t2.medium. Vi ejemplos en los que el parámetro cpu es igual a 0. Estoy tratando de averiguar qué es y cuántos necesito poner aquí para una tarea.

Todo lo que pude encontrar de acuerdo con esta pregunta: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html?shortFooter=true http://docs.aws.amazon.com/AmazonECS/latest/developerguide/example_task_definitions.html