Cómo probar la velocidad del disco y la RAM de su servidor Linux

Contenidos

instalación en rack de servidores

Si escribe o lee archivos con regularidad, la velocidad de su disco puede afectar el rendimiento de su servidor. Le mostraremos cómo medir la velocidad de su servidor y cómo comprender cómo se compara con la competencia.

¿Cómo se mide el rendimiento de IO?

Hay muchas formas diferentes de leer y escribir en discos, por lo que no existe un número único para la «velocidad» que pueda medir.

La forma más sencilla de medir el rendimiento es medir el tiempo que se tarda en leer archivos grandes o realizar copias de archivos grandes. Esto mide la velocidad secuencial de lectura y escritura, que es una buena métrica para conocer, pero rara vez verá velocidades tan altas en la práctica, especialmente en un entorno de servidor.

Una mejor métrica es la velocidad de acceso aleatorio, que mide qué tan rápido puede ingresar a los archivos almacenados en bloques aleatorios, imitando mucho más el uso del mundo real.

Lista de velocidades de lectura y escritura.

Los SSD suelen tener velocidades de acceso aleatorio rápidas en comparación con los discos duros, lo que los hace mucho más adecuados para el uso general. Los discos duros aún disponen velocidades de lectura y escritura secuenciales decentes, lo que los hace buenos para el archivo y recuperación de datos.

A pesar de esto, es factible que el rendimiento del disco no importe mucho para determinadas cargas de trabajo. Muchas aplicaciones almacenan objetos en la memoria caché (si dispones de suficiente RAM), por lo que la próxima vez que desees leer ese objeto, se leerá de la memoria (que es más rápido). A pesar de esto, para cargas de trabajo de escritura intensiva, aún se debe ingresar al disco.

La velocidad a menudo se mide en MB / s, pero algunos proveedores pueden medir en IOPS (operaciones de entrada / salida por segundo). Este es simplemente un número mayor que significa lo mismo; puede hallar qué IOPS de MB / s con esta fórmula:

IOPS = (MBps / Block Size) * 1024

A pesar de esto, es factible que algunos proveedores no hagan un buen trabajo al decirle qué punto de referencia usan para medir IOPS, por lo que es bueno que lo haga usted mismo.

Instalar fio para pruebas de lectura / escritura aleatorias

Aunque Linux tiene incorporado dd , que se puede utilizar para medir el rendimiento de escritura secuencial, no es indicativo de cómo se comportará bajo tensiones del mundo real. En su lugar, querrá probar su velocidad de lectura y escritura aleatoria.

fio es una utilidad que puede manejar esto. Instálelo desde el administrador de paquetes de su distribución:

sudo apt-get install fio

Posteriormente, ejecute una prueba básica 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

Esto ejecuta pruebas de lectura y escritura aleatorias usando 250 MB de datos, en una proporción de 80% de lecturas a 20% de escrituras. Los resultados se mostrarán en términos de IOPS y MB / s:

La prueba anterior se ejecutó en un AWS gp2 SSD, un SSD bastante medio, que muestra un rendimiento bastante medio. El rendimiento de escritura siempre será menor con cualquier tipo de E / S; muchos SSD y HDD disponen memoria caché incorporada para que la utilice el controlador de la unidad, lo que hace que muchas lecturas sean bastante rápidas. A pesar de esto, siempre que escriba, debe realizar cambios físicos en la unidad, que es más lenta.

La ejecución de la prueba en un disco duro muestra un bajo rendimiento de E / S mixtas aleatorias, que es un obstáculo común con los discos duros:

resultados de la prueba del disco duro fio

A pesar de esto, los discos duros se usan regularmente para lecturas y escrituras secuenciales grandes, por lo que una prueba de E / S aleatoria no coincide con el caso de uso aquí. Si desea cambiar el tipo de prueba, puede pasar un argumento distinto para --readwrite. fio admite muchas pruebas diferentes:

  • Lectura secuencial: seqread
  • Escritura secuencial:seqwrite
  • Lectura aleatoria: randread
  • Escritura aleatoria: randwrite
  • IO mixta aleatoria: randrw

Al mismo tiempo, puede cambiar el tamaño del bloque con el --bs argumento. Lo configuramos en 4K, que es bastante estándar para pruebas aleatorias, pero las lecturas y escrituras secuenciales pueden mostrar un rendimiento mejor o peor con tamaños de bloque más grandes. Los tamaños de 16 KB a 32 KB pueden estar más cerca de lo que encontrará bajo carga real.

Prueba del rendimiento de la memoria

fio no puede probar la velocidad de la RAM, por lo que si desea comparar la RAM de su servidor, debe instalar sysbench desde el administrador de paquetes de su distribución:

sudo apt-get install sysbench

Este paquete puede comparar muchas métricas de rendimiento, pero solo nos enfocamos en la prueba de memoria. El siguiente comando asigna 1 MB de RAM, posteriormente realiza operaciones de escritura hasta que haya escrito 10 GB de datos (no se preocupe, no necesita 10 GB de RAM para realizar este punto de referencia).

sysbench --test=memory --memory-block-size=1M --memory-total-size=10G run

Esto mostrará la velocidad de la memoria en MiB / s, así como la latencia de acceso asociada a ella.

Resultados de las pruebas de velocidad de la memoria en MiB / s, así como la latencia de acceso asociada a ella.

Esta prueba mide la velocidad de escritura, pero puede agregar --memory-oper=read para medir la velocidad de lectura, que debería ser un poco más alta la mayor parte del tiempo. Además puede probar con tamaños de bloque más bajos, lo que ejerce más presión sobre la memoria.

A pesar de esto, de manera realista, la mayoría de la RAM será lo suficientemente buena para ejecutar casi cualquier cosa, y de forma general estará más limitado por la cantidad de RAM que por la velocidad real.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.