La velocidad del disco es una parte importante de la medición del rendimiento de un servidor. AWS tiene muchos tipos diferentes de volúmenes de EBS y utiliza un modelo de depósito de ráfagas, equivalente a las instancias T2, para establecer la velocidad general de su disco.
La mayoría de las cargas de trabajo del servidor probablemente incluyen algún tipo de almacenamiento en caché de memoria, por lo que si tiene suficiente RAM, la velocidad de su disco puede no importar mucho; una vez que se lee un archivo, puede permanecer en la memoria por un tiempo. Pero para las cargas de trabajo de escritura intensiva, la velocidad del disco comienza a convertirse en el factor limitante y puede mejorar o arruinar el rendimiento de su servidor.
Explicación del rendimiento de IOPS y SSD
AWS enumera y mide la velocidad de SSD a través de operaciones de entrada y salida por segundo (IOPS). Esto es en gran parte solo una medida de la velocidad de lectura y escritura aleatoria 4K del dispositivo.
Los SSD funcionan de manera distinto bajo diferentes cargas de trabajo, por lo que hay algunas alternativas para medir qué tan rápidos son. La primera es la velocidad de lectura y escritura secuencial, que mide qué tan rápido son para leer un archivo grande del disco. La velocidad sí importa, especialmente cuando se trabaja con datos grandes, pero este es el escenario ideal y, en el mundo real, los SSD suelen tener que extraer datos de varias ubicaciones al mismo tiempo.
RELACIONADO: Cómo probar la velocidad del disco y la RAM de su servidor Linux
Una mejor métrica es el rendimiento aleatorio. Este punto de referencia lee y escribe archivos en fragmentos del tamaño de 4096 bytes en ubicaciones aleatorias, de ahí el nombre «4K Random». Imita con mayor precisión la carga del mundo real que puede enfrentar el SSD.
Los puntos de referencia aleatorios pueden variar según la profundidad de la cola, una medida de cuánto tiene que procesar en este momento el SSD. Cuando se consulta el SSD para un montón de archivos, la profundidad de la cola será alta, lo que acelera el rendimiento. Pero el rendimiento de referencia se mide en la profundidad de la cola 1, que parece ser lo que AWS mide en sus SSD.
Las IOPS son una medida de cuántas operaciones reales se están llevando a cabo. La fórmula para hallar las IOPS a partir de MB / s es:
IOPS = (MBps / KB Per Operation) * 1024
Y como leemos 4 KB al mismo tiempo, la fórmula se convierte en:
IOPS = MBps * 256
El SSD de escritorio en la captura de pantalla anterior tendría más de 13,000 IOPS, lo cual es bastante bueno para un SSD NVME de 2 TB.
El modelo de cubo explosivo
Lo principal que complica los volúmenes de AWS EBS es el rendimiento en ráfagas. Esto funciona de manera muy equivalente a cómo funcionan las instancias T2 / T3: cuando el disco está inactivo, acumula créditos de E / S a una tasa determinada por el tamaño del volumen.
Estos créditos van a un «depósito», que los acumula hasta un máximo de 5,4 millones, lo suficiente para lograr el máximo rendimiento durante 30 minutos. El depósito comienza lleno para permitir el arranque rápido de aplicaciones y el inicio de instancias.
Los créditos se agotan del depósito para agotar el rendimiento. gp2
tiene un rendimiento máximo de 3.000 IOPS, por lo que solo puede consumir 3.000 por segundo.
Los volúmenes obtienen créditos IO a una tasa de 3 por GB por segundo. Lo que significa que si tiene un volumen superior a 1 TB, su depósito estará siempre lleno y no tendrá que preocuparse por el rendimiento en ráfagas. Cualquier valor inferior a eso y estará limitado al rendimiento de referencia en función de la cantidad de créditos que gane.
Si necesita un rendimiento más sostenido, puede alquilar un volumen mayor o usar un volumen de IOPS aprovisionadas (io1
). Aunque estos son más costosos por GB, le posibilitan comprar IOPS de forma directa. Puede comprar entre 100 y 64 000 IOPS, a una tasa de $ 0.065 por IOPS aprovisionado. Esto solo es verdaderamente rentable si desea más de 3000 IOPS. Por cualquier cosa por debajo de eso, efectivamente pagará el doble del precio por el volumen. A modo de ejemplo, si necesita un volumen de 3000 IOPS de 64 GB, simplemente puede aprovisionar un volumen de 1 TB gp2
volumen a mitad de precio. Pero, si desea la velocidad adicional, puede pagarla.
Rendimiento del disco duro (st1 y sc1)
Los volúmenes de EBS basados en discos duros de AWS además usan un modelo de depósito de ráfagas, pero los discos duros funcionan de manera un poco distinto a los SSD, por lo que no se mide en IOPS. Debido a que un disco duro utiliza un cabezal de disco giratorio, las velocidades de lectura y escritura serán fijas. Hacer lecturas y escrituras aleatorias ralentizará esto significativamente (una de las principales desventajas de los discos duros). AWS utiliza aquí velocidades de lectura secuenciales.
Para st1
, la velocidad base aumenta en 40 MiB / s por TB, comenzando en 20 para el tamaño de volumen mínimo de 500 GB.
La velocidad de ráfaga aumenta en 250 MiB / s por TB, hasta un máximo de 500 MiB / s. Para volúmenes superiores a 12 TB, puede lograr la velocidad máxima el 100% del tiempo. Cualquier cosa menos, y estará limitado por su saldo de crédito explosivo.
Para sc1
, la velocidad base aumenta en 12 MiB / s por TB, comenzando en 6 para el tamaño de volumen mínimo de 500 GB. Lo hace mucho más lento y nunca alcanzará el 100% de su capacidad de ráfaga (pero es más barato).
La velocidad de ráfaga además está limitada y aumenta en 80 MiB / s por TB, hasta un máximo de 250 MiB / s. Esto equivale a aproximadamente 8,000 IOPS, pero nuevamente, esta es probablemente la velocidad secuencial, y no verá velocidades aleatorias tan altas en ningún disco duro.
Cómo hallar la velocidad de su disco en el mundo real
Podrías utilizar una herramienta como dd
A pesar de esto, para medir la velocidad de escritura secuencial, esto no sobrecarga el disco lo suficiente como para ser útil y no es indicativo de ningún caso de uso real.
Para obtener algo mejor, debe instalar una herramienta de evaluación comparativa de disco llamada fio
desde el administrador de paquetes de su distribución:
sudo apt-get install fio
Después, ejecútelo con el siguiente comando:
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=250M --readwrite=randrw --rwmixread=80
Creará un archivo de 250 MB y realizará pruebas de lectura y escritura aleatorias en una proporción de 80% de lecturas y 20% de escrituras, lo que le brindará una visión mucho más precisa del rendimiento real de su disco.
Una prueba rápida con un archivo de 25 MB muestra las ventajas del modelo de depósito de ráfagas de AWS. El volumen de gp2 puede explotar a una velocidad rápida durante un rato para manejar la transferencia sin problemas. Con un tamaño tan pequeño, el SSD puede superar efectivamente el límite de 3000 IOPS, pero solo por un segundo.
Una prueba más larga con un archivo de 250 MB da una mejor visión de cómo funcionará el SSD bajo cargas más grandes. En esta circunstancia, la prueba tarda más de un segundo, por lo que la velocidad está limitada por la velocidad de ráfagas de IOPS, llegando a 2600 IOPS.
Desde luego, si permitiéramos que esta prueba se ejecutara durante más de 30 minutos, el volumen gp2 se quedaría sin créditos y se ralentizaría a solo 24 IOPS para un volumen de 8 GB. Pero es probable que no encuentre cargas que usen el 100% de su disco y, si lo hace, siempre puede utilizar un disco más grande con rendimiento garantizado o aprovisionar IOPS de forma directa.