Los IOPS (Input/Output Operations Per Second) son el número de operaciones de lectura y escritura que el disco es capaz de hacer en un segundo. Cuantos más IOPS, más rápido funcionan las aplicaciones que acceden al disco a menudo y en porciones pequeñas de datos.
Para una web sencilla de presentación los IOPS apenas importan, pero en las bases de datos y los servicios con mucha carga suelen convertirse en el cuello de botella antes que el procesador o la memoria.
En qué influyen los IOPS
Unos IOPS altos importan sobre todo en tareas con muchos accesos pequeños al disco:
- bases de datos MySQL, PostgreSQL y MongoDB;
- servidores web y tiendas online con mucha carga;
- servidores de correo;
- sistemas de caché y de colas.
Para el vídeo en streaming, las copias de seguridad y la distribución de archivos grandes, lo que importa no son los IOPS, sino la velocidad lineal de lectura y escritura, porque los datos van en un flujo continuo.
De qué dependen los IOPS
En el resultado influyen tres factores principales.
Tipo de unidad
Los discos NVMe dan muchas veces más IOPS que los SSD SATA normales, y muchísimos más que los discos duros HDD. Los servidores de F3 Cloud usan SSD NVMe.
Tamaño de bloque
Cuanto más pequeño es el bloque, más operaciones caben en un segundo. Por eso los IOPS máximos se miden con bloques de 4 KB, que es el tamaño típico de un acceso de una base de datos.
Tipo de acceso
Los accesos aleatorios, dispersos por todo el disco, son más pesados que los secuenciales. Las bases de datos generan precisamente carga aleatoria.
Las copias de seguridad y el streaming generan carga secuencial.
Dos cifras distintas
Los IOPS y la velocidad lineal en MB/s miden cosas distintas. Un disco puede dar una velocidad enorme en lectura secuencial y bastantes menos IOPS en operaciones pequeñas aleatorias. Al elegir un servidor para una base de datos, fíjate precisamente en los IOPS aleatorios con bloques de 4 KB.
Cómo medir los IOPS en Linux
Para medirlos se usa la herramienta fio. Instálala.
apt update && apt install -y fiodnf install -y fioLa prueba crea un archivo temporal
fio escribirá en el disco un archivo del tamaño indicado, que en los ejemplos de abajo es de 2 GB. Asegúrate de que hay espacio libre en el disco y lanza la prueba en una carpeta de trabajo, por ejemplo en /root. Después de la prueba, borra el archivo fiotest.
Mide los IOPS de lectura aleatoria. Es la cifra principal para las bases de datos.
fio --name=randread --filename=fiotest --ioengine=libaio --direct=1 \
--rw=randread --bs=4k --iodepth=32 --numjobs=1 --size=2G \
--runtime=60 --time_based --group_reportingVeamos las opciones del comando:
--rw=randread– lectura aleatoria. Para la escritura usarandwrite, y para una carga mixtarandrw;--bs=4k– tamaño de bloque de 4 KB;--direct=1– leemos sin pasar por la caché, para ver el trabajo real del disco y no el de la memoria;--iodepth=32– cuántas peticiones mantenemos en cola a la vez;--runtime=60 --time_based– la prueba dura exactamente 60 segundos.
Cómo interpretar el resultado
En la salida de fio, busca la línea que empieza por read o write. El primer valor de esa línea son los IOPS.
read: IOPS=85.2k, BW=333MiB/s (349MB/s)IOPS=85.2k es precisamente el número de operaciones por segundo.BW es la velocidad lineal en ese mismo tiempo.
Más abajo, en el bloque lat, fio muestra la latencia. Cuanto menor sea, más ágil será el disco.
Qué más puedes revisar
Para hacerte una idea rápida de la carga actual del disco sin lanzar ninguna prueba, te sirve iostat del paquete sysstat.
# Lo instalamos si el paquete aún no está
apt install -y sysstat
# Actualizamos las estadísticas cada segundo, las columnas r/s y w/s son operaciones por segundo
iostat -dx 1Así verás la carga real de tus aplicaciones en las columnas r/s y w/s, y en la columna %util lo ocupado que está el disco.
Nuestros recursos
Canal de Telegram: https://t.me/f3cloud_news
Web del hosting: https://f3cloud.com