logo

Trabajemos juntos

Contanos más sobre tu proyecto, nos pondremos en contacto lo antes posible.

Email

info@genbyte.com.ar

,

Cómo optimizar precio y rendimiento en AWS con instancias EC2 T4g

  • By Mauro Marcovecchio
  • octubre 6, 2020

Si damos un vistazo rápido a los precios, notaremos rápidamente que las instancias T4g (y las generaciones anteriores T3, T3a y T2) son mucho más económicas. Sin embargo, algunos clientes encontraron cargos un poco más elevados de lo que esperaban al finalizar el mes. ¿Por qué sucede esto? ¿Las instancias T4g tienen costos ocultos? La respuesta es no, estas instancias acumulan créditos de CPU cuando operan por debajo de un umbral y los consumen al superarlo pudiendo aumentar el rendimiento. Por eso son llamadas instancias ampliables (que parece ser la mejor traducción para “Burstable”). Las instancias T4g también operan, por defecto, en modo ilimitado. Este Modo ilimitado permite garantizar el rendimiento durante los picos de uso incurriendo en costos adicionales si no hay créditos disponibles.

Imagen de portada: Technology photo created by Racool_studio – www.freepik.com

¿Qué son los créditos de CPU?

¿Por qué las instancias EC2 T4g son tan económicas? La razón es que, al igual que todas las instancias de la serie T, utiliza un esquemas de créditos de CPU que se rastrean y usan en cada recurso. Funciona así: una instancia inactiva (bajo consumo de CPU) gana créditos, mientras que una instancia ocupada (alto consumo de CPU) gasta esos créditos. Un “crédito” corresponde al valor de 1 minuto de uso completo de la CPU al 100%, pero esto se puede dividir de diferentes maneras si el uso es inferior al 100%. Cada tamaño de máquina de la serie T no solo tiene una cantidad de CPU disponibles, sino que también gana créditos a diferentes tasas. Esto último hace nuestro cálculo un poco más complicado

A modo de ejemplo, una instancia t2.micro gana 6 créditos por hora con si consume menos de 10% de CPU. Si ejecuta esa instancia al 10% de utilización durante una hora completa, gastará 6 créditos por hora (o 1 crédito cada 10 minutos). Esto significa que cualquier tiempo empleado por debajo del 10% de utilización es un aumento neto en los créditos de CPU, mientras que cualquier tiempo dedicado por encima del 10% de utilización es una disminución neta de los créditos de CPU. Por otro lado, una instancia t3.large tiene 2 CPU y gana 36 créditos por hora, lo que significa que el punto de equilibrio donde el uso de crédito neto es cero será del 30% de utilización por CPU.

Ahora, ¿Qué pasa cuando nos quedamos sin créditos o no los utilizamos?

¿Modo estándar o modo ilimitado?

Si nuestra instancias está configurada en el modo estándar, una vez que se ha quedado sin créditos para usar, la CPU se limita al valor de referencia (por ejemplo, el 10% para t2.micro) y continuará llegando al máximo en ese valor hasta que se hayan acumulado créditos. En la práctica, esto significa que en modo estándar si nuestra aplicación comienza a utilizar mucha más CPU de lo normal recibirá un recorte y se volverá lenta si la carga permanece alta.

Para resolver este problema AWS introdujo el Modo ilimitado, que es el modo por defecto en las Instancias T3, T3a y T4g. El modo ilimitado significa que, en lugar de reducir la CPU de referencia cuando la instancia se queda sin créditos, puede continuar ejecutándose con una carga de CPU alta y solo pagar por los excedentes. Este precio es de USD 0,05 por hora de CPU para Linux y USD 0,096 para Windows. En la práctica, esto significa que si nuestra instancia se queda sin créditos no recibirá un recorte en su rendimiento. Aunque en esta oportunidad va a generar cargos adicionales.

¿Cuándo utilizar las instancias ampliables?

Los cargos por excedente para el modo ilimitado de instancias ampliables significan que, si bien el precio de estas es mucho más económico que el de las instancias m4 y m5 correspondientes, debemos considerar si el patrón de utilización de su carga de trabajo tiene sentido para una familia de instancias ampliables.

No dude en ponerse en Contacto para recibir asesorameinto

Construyamos desde cero un ejemplo de uso diario:

  • Una instancia m5.large cuesta USD 0.096 por hora. Un día cuesta USD 2.34, Un mes USD 70,20
  • Una instancia T4g.large cuesta USD 0,0672 por hora. Un día cuesta USD 1,6128, un mes USD 48,384

Hasta ahora, la instancia T4g.large es por demás conveniente. Sin embargo no estamos considerando cargos extras por uso de CPU. El caso expuesto hasta ahora solo tiene aplicación real si el uso medio de CPU es inferior al 30%. Si nuestra carga de trabajo es constante sobre ese valor:

  • La performance base para la instancia T4g.large es 0,6 vCPU (2CPU x 30%)
  • El cargo adicional es de USD 0,05 por vCPU cada hora. Por día se suma USD 1,2 y en un mes USD 36.
  • En total pagaríamos USD 84,384. Es decir, gastaríamos USD 12,184 más utilizando la instancia T4g.large que a primera vista parecía mucho más económica

Acá hay un buen ejemplo de una carga de trabajo para ser migrada a una instancia T4g o T3 en la nube de AWS:

Ejemplo de mal candidato para migrar a instancias ampliables
Uso promedio por debajo de la línea base. En este caso, nuestra instancia ganará créditos para luego utilizarlos en los picos de utilización de CPU

Y en esta caso, un mal candidato par este tipo de instancias:

Ejemplo de mal candidato para migrar a instancias ampliables
Uso promedio sobre la linea base. Esto quiere decir que nuestra instancia no ganará créditos y, en modo ilimitado, generará cargos adicionales.

Conclusión

Como pudimos ver, para optimizar los costos en la nube no alcanza con elegir la opción más económica que se ajuste a los requerimientos de CPU y Memoria. Debemos considerar el tipo de carga de trabajo y como se comporta.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.