En este artículo analizaremos cómo comprobar el rendimiento de un disco o una matriz de almacenamiento en Linux. IOPS (operaciones de entrada / salida por segundo) es la cantidad de operaciones de entrada-salida que realiza un sistema de almacenamiento de datos por segundo (puede ser un solo disco, una matriz RAID o un LUN en un dispositivo de almacenamiento externo). En general, IOPS se refiere a la cantidad de bloques que se pueden leer o escribir en un medio.

La mayoría de los fabricantes de discos especifican valores de IOPS nominales, pero de hecho no están garantizados. Para comprender el rendimiento de su subsistema de almacenamiento antes de comenzar un proyecto, vale la pena obtener los valores máximos de IOPS que su almacenamiento puede manejar.

Uso de la herramienta FIO (E / S flexible) para la evaluación comparativa del almacenamiento

Para medir el rendimiento de IOPS de disco en Linux, puede utilizar el fio (la herramienta está disponible para CentOS / RHEL en el repositorio EPEL). Entonces, para instalar fio en RHEL o CentOS, use el administrador de paquetes yum (dnf):

# yum install epel-release -y
# yum install fio -y

O apt-get en Debian o Ubuntu:

# apt-get install fio

Luego debes identificar los discos a probar. La prueba se realiza realizando operaciones de lectura / escritura en el directorio en el que está montado su disco o LUN.

Hagamos varios tipos de pruebas de rendimiento de IOPS de disco en varios escenarios de carga de disco (un modo de prueba que selecciona según la lógica de una aplicación alojada y la infraestructura general de un proyecto).

Prueba de funcionamiento de lectura / escritura aleatoria

Al ejecutar la prueba, se creará un archivo de 8 GB. Entonces fio leerá / escribirá un 4 KB bloque (un tamaño de bloque estándar) con el 75/25% por el número de operaciones de lectura y escritura y medir el rendimiento. El comando es el siguiente:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75

Ejecuté mi primera prueba en una matriz que constaba de dos SSDsy obtuve buenos resultados:

  • Leer: 3280MiB / s, IOPS promedio 83000
  • Escribir: 110MiB / s, IOPS promedio 28000

Dado que hemos realizado una prueba combinada de lectura / escritura, los valores de las pruebas independientes serán más altos.

En comparación, medí el rendimiento en un SATA manejar:

iops para sata drive

  • Leer: IOPS = 430, BW = 1,7 MiB / s
  • Escribir: IOPS = 143, BW = 0,6 MiB / s

Por supuesto, los resultados del HDD son peores que los del SSD.

Prueba de operación de lectura aleatoria

Para medir el rendimiento del disco solo para operaciones de lectura aleatorias, ejecute el siguiente comando:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randread

La parte final del comando se cambió a —readwrite=randread.

Cómo medir el rendimiento del disco con fio para operaciones de lectura aleatorias

Como dije anteriormente, el rendimiento de lectura / escritura será mayor si se mide por separado:

READ: IOPS=150k, BW=584MiB/s (612MB/s)

Prueba de operación de escritura aleatoria

Para medir el rendimiento del disco para operaciones de escritura aleatorias, ejecute este comando:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=fiotest --bs=4k --iodepth=64 --size=8G --readwrite=randwrite

WRITE: IOPS=84.7k, BW=331MiB/s (347MB/s)

El rendimiento de la operación de escritura en buenos SSD también es muy alto. Al igual que en la prueba de operación de lectura, la diferencia en comparación con una prueba mixta alcanza 200-250 MiB / sy 50000 IOPS.

Si consulta la documentación oficial del fabricante (se trata de SSD Intel), es seguro decir que los valores son verdaderos.

Ejemplos de archivos de configuración de Fio

Fio permite verificar el rendimiento del disco mediante comandos interactivos y con archivos de configuración preparados de antemano para la prueba. Para usar esta opción, cree un archivo:

# nano read.fio

Y agregue el siguiente contenido en él:

[global]
rw=randread
size=8G
filename=/tmp/testfio
ioengine=libaio
iodepth=4
invalidate=1
direct=1
[bgread]
rw=randread
iodepth=64

Entonces comienza la prueba:

# fio read.fio

La prueba medirá el rendimiento de lectura de un disco. Para probar el rendimiento de escritura, use el siguiente archivo de configuración:

[global]
rw=randwrite
size=8G
filename=/tmp/testfio
ioengine=libaio
iodepth=4
invalidate=1
direct=1
[bgwrite]
rw=randwrite
iodepth=64

Medición de la latencia del disco mediante Ioping

Además de IOPS, hay otro parámetro importante que caracteriza la calidad de su almacenamiento: es la latencia. Latencia es un retardo de solicitud de entrada / salida que determina el tiempo de acceso a un almacenamiento (medido en milisegundos). Cuanto mayor sea la latencia, más tendrá que esperar su aplicación hasta que obtenga datos de su disco. Los valores de latencia más de 20 ms porque los sistemas típicos de almacenamiento de datos se consideran deficientes.

Para comprobar la latencia del disco en Linux, el ioping se utiliza la herramienta:

# yum install ioping -y

# apt-get install ioping

Ejecute la prueba de latencia para su disco (se ejecutan 20 solicitudes):

# ioping -c 20 /tmp/

4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=1 time=1.55 ms (warmup)
......................
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=19 time=176.3 us (fast)
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=20 time=356.9 us
--- /tmp/ (ext4 /dev/md126p5) ioping statistics ---
19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s
generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s
min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us

El valor medio es 298,7 nosotros (microsegundos), por lo que la latencia promedio en nuestro caso es 0,3 ms, Eso es excelente.

El valor de latencia se puede especificar en nosotros (microsegundos) o Sra (milisegundos). Para obtener un valor en ms de uno estadounidense, divídalo por 1,000.

Por lo tanto, puede realizar una prueba de carga de almacenamiento en su servidor antes de lanzar un proyecto y verificar los valores de rendimiento más altos. Sin embargo, la prueba no garantiza que su matriz de discos o disco muestre el mismo rendimiento constantemente, pero vale la pena realizar la prueba en la etapa inicial de un proyecto. Aprenda a probar IOPS en Windows en este artículo.

Recomendado para ti