Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Almacenamiento RDS: comparativa de costos entre GP3, GP2 e IOPS aprovisionadas

By Tom RosenfeldAug 13, 20244 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

En este artículo repasamos algunos de los puntos clave y las mejores prácticas para elegir los volúmenes SSD más rentables en RDS.

En RDS hay tres opciones de almacenamiento SSD. Amazon RDS ofrece dos tipos de SSD de propósito general: gp2 y gp3. Además, está el SSD con IOPS aprovisionadas io1. (También sigue existiendo el viejo almacenamiento magnético, demasiado lento para la mayoría de las aplicaciones. Ten en cuenta que io2, disponible en EBS, todavía no es compatible con RDS).

  • gp2— Generación anterior, las IOPS dependen del tamaño del volumen, admite ráfagas
  • gp3— Generación actual, IOPS consistentes, incluye IOPS base y permite comprar IOPS y throughput adicionales
  • io1— (También conocido como PIOPS). Rendimiento consistente, requiere comprar IOPS aprovisionadas. Es la opción más cara.

Los tres tipos de almacenamiento ofrecen latencia de un solo dígito en milisegundos.

El costo por GB es el mismo para gp2 y gp3 en RDS (a diferencia de EC2, donde gp3 es más barato). Sin embargo, gp3 entrega más IOPS base (en volúmenes de hasta 4,000 GB) sin la limitación de las ráfagas.

Hoja de cálculo con la matriz de precios

La siguiente hoja de cálculo muestra el detalle de precios e IOPS para un volumen de tamaño determinado en gp2, gp3 e io1.

Comparativa de costos de volúmenes SSD

Algunos ejemplos de lo anterior:

Si tienes un volumen de 1,000 GB, en gp3 obtendrás 12,000 IOPS sostenidas. En gp2 obtendrás esas mismas 12,000 IOPS, pero solo en ráfagas limitadas: las IOPS sostenidas se quedan en apenas 3,000. Ambas cuestan lo mismo: $115. En cambio, con io1 PIOPS configurado para esas mismas 12,000 IOPS, ¡pagarás $425!

Si necesitas un volumen de 5,000 GB, gp2 te dará 15,000 IOPS por $525. Por el mismo precio, gp3 solo te dará 12,000 IOPS (aunque podrías pagar más para conseguir más). io1 PIOPS costaría bastante más: $2,125.

Striping de discos en RDS

Todos los motores de RDS (excepto MS SQL Server) hacen striping en 4 volúmenes a partir de cierto tamaño mínimo. Esto significa que tanto gp2 como gp3 entregan más IOPS y throughput de lo que esperarías normalmente, como se muestra arriba.

Detalles del striping:

  • MariaDB, MySQL y PostgreSQL hacen striping con tamaños superiores a 400 GB
  • Oracle hace striping a partir de 200 GB
  • Aumentar el tamaño de un volumen existente y disparar una actividad de striping (por ejemplo, > 400 GB) puede provocar un incremento importante en las IOPS y la latencia durante varias horas mientras se aplica el cambio.

Consulta la documentación de AWS para más detalles sobre el tipo y tamaño de la base de datos [3].

Entonces, ¿qué tipo de almacenamiento conviene usar?

En casi todos los casos, la opción por defecto debería ser gp3. Antes, incluso para necesidades pequeñas de IOPS, AWS recomendaba io1 por su latencia consistentemente baja. Sin embargo, hoy tanto io1 como gp3 ofrecen latencia de un solo dígito en milisegundos. La única diferencia es que io1 la garantiza el 99.9% del tiempo, mientras que gp3 lo hace "solo" el 99.0% del tiempo. Considerando que gp3 llega a ser hasta un 73% más barato que io1 (asumiendo que io1 esté configurado con la misma base que gp3), la decisión es sencilla.

Cuándo conviene usar io1:

  • cuando necesitas más de 64,000 IOPS
  • cuando necesitas un rendimiento consistente más allá del 99.0% del tiempo

Modificar el tipo de volumen en una base de datos en producción

  • En general, no hay tiempo de inactividad al cambiar entre io1, gp2 o gp3 [2]
  • Sin embargo, no se puede aplicar más de un cambio cada 6 horas

Detalles a tener en cuenta

  • Pasar de los 400 GB inicia el striping y consume una cantidad importante de IOPS durante el proceso, lo que puede afectar seriamente la latencia. Por eso, si esperas crecer pronto, lo mejor es arrancar directamente en 400 GB. Oracle hace striping a 200 GB, mientras que MS SQL Server nunca lo hace.
  • El autoescalado de almacenamiento en RDS puede dar más de una sorpresa. Asegúrate de entender todas sus limitaciones [1]. Por ejemplo, podría iniciar el striping de forma inesperada.
  • Puede que AWS te esté entregando más IOPS de las que pagas en tu volumen gp2 actual (algo bastante frecuente en workloads con varios años de antigüedad). Por eso, si migras a gp3, podrías perder esas IOPS gratuitas y obtener peor rendimiento. (Puedes verificarlo en Cloudwatch para ver si estás recibiendo más IOPS de las esperadas).
  • Limitaciones de IOPS por tipo de instancia: todas las instancias RDS tienen un tope de ancho de banda y de IOPS. Incluso si pagas por PIOPS, la instancia te limitará si no es lo bastante grande. Las limitaciones por tipo de instancia se pueden consultar en la documentación de AWS EC2 [4].

Por ejemplo:

c6g.4xlarge limitada a 20,000 IOPS c7g.4xlarge limitada a 20,000 IOPS, pero puede llegar en ráfaga a 40,000

En resumen

Selecciona con cuidado el tipo de almacenamiento para tus instancias RDS. Por lo general, puedes ahorrar bastante eligiendo gp3 en lugar de io1 sin sacrificar rendimiento.

Referencias:

[1] Managing capacity automatically with Amazon RDS storage autoscaling [2] Modifying an Amazon RDS DB instance

[3] Amazon RDS DB instance storage — Amazon R DS

[4] Amazon EBS–optimized instances — Amazon Elastic Compute Cloud

Frequently asked
questions

¿Me conviene usar io1 + PIOPS?
  • Solo si necesitas entre 64,000 y 256,000 IOPS (o más de 4,000 Mbps de throughput)
  • Si necesitas una consistencia de I/O del 99.9% frente al 99% de gp2 o gp3
  • Te costará un 270% más que gp2/gp3
  • Aunque la consola de AWS muestra io1 como predeterminado (en algunas plantillas de configuración), puedes cambiarlo a gp3 (u otra opción).
¿Tiene sentido crear una nueva base de datos RDS con gp2?
  • Sí, si el volumen que necesitas supera los 4,000 GB. En ese caso, las IOPS de gp2 serán mayores que las IOPS base que te daría gp3 (ver la hoja anterior). Si necesitas más IOPS que la base de gp2, te saldrá más barato usar gp3 y comprar las IOPS adicionales.
¿Conviene migrar de io1 a gp3 (o gp2)?
  • ¡Sí! Si necesitas menos de 64,000 IOPS, deberías migrar para ahorrar hasta un 73% (ver hoja).
¿Conviene migrar de gp2 a gp3?

Depende:

  • Si funciona bien, no lo toques. No hay ahorro de costos y el rendimiento podría empeorar; revisa los Detalles a tener en cuenta más abajo.
  • Si el volumen supera los 4,000 GB, gp3 entregará menos IOPS (a menos que pagues por más).
  • Si tu workload necesita más IOPS de las que obtienes con gp2, migra a gp3 y paga por las IOPS adicionales que necesites.
  • Importante: como con cualquier modificación de una base de datos, la mejor práctica es clonarla primero y luego probar la conversión. Verifica que gp3 te esté entregando las IOPS y el throughput esperados.