Si escribe o lee archivos con regularidad, la velocidad del 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 enfrenta a la competencia.
¿Cómo se mide el desempeño 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 se pueda medir.
La forma más sencilla de medir el rendimiento es calcular el tiempo que lleva leer archivos grandes o hacer copias de archivos grandes. Esto mide velocidades secuenciales de lectura y escritura, que es una buena métrica para conocer, pero rara vez verá velocidades tan rápidas en la práctica, especialmente en un entorno de servidor.
Una mejor métrica es la velocidad de acceso aleatorio, que mide la rapidez con la que puede acceder a los archivos almacenados en fragmentos aleatorios, imitando mucho más el uso del mundo real.
Los SSD suelen tener velocidades de acceso aleatorio más rápidas que los discos duros, lo que los hace mucho más adecuados para uso general. Los discos duros aún tienen velocidades de lectura y escritura secuenciales decentes, lo que los hace excelentes para el archivo y la recuperación de datos.
Sin embargo, es posible que el rendimiento del disco no sea muy importante para determinadas cargas de trabajo. Muchas aplicaciones almacenan objetos en la memoria caché (si tiene suficiente RAM), por lo que la próxima vez que desee leer ese objeto, se leerá de la memoria (que es más rápido). Sin embargo, para cargas de trabajo de escritura intensiva, aún se requiere acceso al disco.
La velocidad a menudo se mide en MB / s, pero algunos proveedores pueden medir en IOPS (operaciones de E / S por segundo). Este es simplemente un número mayor que significa lo mismo; puede encontrar qué MB / s IOPS con esta fórmula:
IOPS = (MBps / Block Size) * 1024
Sin embargo, es posible que algunos proveedores no hagan un buen trabajo al decirle qué punto de referencia usan para medir IOPS, por lo que es bueno hacer las pruebas usted mismo.
Instale fio para una prueba de lectura / escritura aleatoria
Aunque Linux tiene la dd
El comando, que se puede utilizar para medir el rendimiento de escritura secuencial, no indica cómo funcionará en condiciones de estrés del mundo real. En su lugar, le recomendamos que pruebe su velocidad de lectura y escritura aleatoria.
fio
es una utilidad que puede manejarlo. Instálelo desde el administrador de paquetes de su distribución:
sudo apt-get install fio
Luego, 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 realiza pruebas de lectura y escritura aleatorias utilizando 250 MB de datos, con una proporción de 80% de lecturas a 20% de escrituras. Los resultados se mostrarán en términos de IOPS y en MB / s:
La prueba anterior se realizó 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 tienen una memoria caché incorporada para que la utilice el controlador de la unidad, lo que hace que muchas lecturas sean bastante rápidas. Sin embargo, cada vez que escribe, 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 problema común con los discos duros:
Sin embargo, los discos duros se utilizan normalmente 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 diferente para --readwrite
. fio
admite muchas pruebas diferentes:
- Lectura secuencial:
seqread
- Escritura secuencial:
seqwrite
- Lectura aleatoria:
randread
- Escritura aleatoria:
randwrite
- E / S mixtas aleatorias:
randrw
Además, puede cambiar el tamaño del bloque con la extensión --bs
discusión. Lo configuramos en 4K, que es lo suficientemente estándar para pruebas aleatorias, pero las lecturas y escrituras secuenciales pueden mostrar un rendimiento mejor o peor con bloques más grandes. Los tamaños de 16 KB a 32 KB pueden ser más parecidos a los que encontrará bajo carga real.
Verificar el rendimiento de la memoria
fio
La velocidad de la RAM no se puede probar, por lo que si desea comparar la RAM de su servidor, debe instalarla 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 centramos en las pruebas de memoria. El siguiente comando asigna 1 MB de RAM y luego escribe hasta que haya escrito 10 GB de datos (no se preocupe, no necesita 10 GB de RAM para ejecutar 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.
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. También puede probar con bloques más pequeños, lo que ejerce más presión sobre la memoria.
Sin embargo, de manera realista, la mayor parte de la RAM será lo suficientemente buena para ejecutar prácticamente cualquier cosa, y por lo general estará más limitado por la cantidad de RAM que por su rendimiento.
Deja una respuesta