Analiza tu disco y su velocidad en Linux con Fio
Anteriormente os he hablado de un conjunto de herramientas que os permitían medir el rendimiento de vuestro equipo en Linux, dicha suite se llama Sysbench y, aunque el artículo hacía especial énfasis en la Raspberry Pi y su sistema operativo Raspbian, es comúmente utilizado en muchas distribuciones desde hace tiempo.
Hoy traigo algo más especifico y que os servirá para analizar el rendimiento del disco de forma detallada, para de paso poder diagnosticar no solo velocidad del mismo, sino posibles problemas de configuración o salud que provoquen un rendimiento pobre o irregular.
Analizar velocidad de disco en Linux con Fio
Esta herramienta se llama Fio y es un software open source diseñado para verificar el hardware. Soporta gran cantidad de motores de lectura/escritura, como libaio, sync, nmap, syslet, slice y otros. Soporta múltiples distribuciones como Linux, OpenSolaris, OpenBSD, HP-UX, Android e incluso Windows. Trabaja tanto con archivos como con dispositivos.
Fio se traduce como Flexible Input / Output. Más información en el repositorio Ubuntu.
Vamos a ver a continuación como trabajar con Fio, lanzando algunas tareas de cálculo de lectura, escritura y, antes de nada, vamos a ver los pasos de instalación.
Instalación de Fio
Ubuntu
Basta con lanzar el siguiente comando, ya que Fio está disponible en el repositorio oficial de Ubuntu por defecto:
sudo apt-get install fio -y
Debian 9
Del mismo modo que ocurre con Ubuntu, Fio está disponible en el repositorio predeterminado de Debian. Basta con poner lo siguiente:
sudo apt-get install fio -y
CentOS 7
Al no estar disponible en el repositorio predeterminado de CentOS, necesitaremos instalar el repositorio EPEL en nuestro sistema antes de continuar:
sudo yum install epel-release -y
Una vez concluido el paso anterior, instalaremos la herramienta:
sudo yum install fio -y
Requisitos de sistema
- Ubuntu 16.04 o alguno de los sistemas operativos anteriormente citados
- Cuenta de usuario con permisos para hacer sudo (cambiar a super-usuario o administrador)
Benchmark de disco duro en Linux
Test de escritura aleatorio
Empezaremos por el test de escritura con el comando siguiente , que lanza escrituras de un total de 2 GB divididas en 4 tareas de 512 MB cada una (una para cada núcleo del procesador) al mismo tiempo:
sudo fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting
Deberíamos ver una salida similar a esta cuando comience el proceso:
sudo fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting sudo: unable to stat /etc/sudoers.d/README: Permission denied randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=1 ... fio-2.2.10 Starting 4 processes randwrite: Laying out IO file(s) (1 file(s) / 512MB) randwrite: Laying out IO file(s) (1 file(s) / 512MB) randwrite: Laying out IO file(s) (1 file(s) / 512MB) randwrite: Laying out IO file(s) (1 file(s) / 512MB)
A continuación tenemos los resultados del test una vez finalizado:
randwrite: (groupid=0, jobs=4): err= 0: pid=3121: Fri Aug 4 00:37:47 2017 write: io=326988KB, bw=1362.3KB/s, iops=340, runt=240038msec slat (usec): min=3, max=3022.7K, avg=11732.00, stdev=81022.61 clat (usec): min=0, max=56316, avg= 4.28, stdev=233.24 lat (usec): min=4, max=3022.7K, avg=11738.09, stdev=81023.77 clat percentiles (usec): | 1.00th=[ 1], 5.00th=[ 1], 10.00th=[ 1], 20.00th=[ 1], | 30.00th=[ 1], 40.00th=[ 1], 50.00th=[ 2], 60.00th=[ 2], | 70.00th=[ 2], 80.00th=[ 3], 90.00th=[ 3], 95.00th=[ 4], | 99.00th=[ 10], 99.50th=[ 12], 99.90th=[ 69], 99.95th=[ 111], | 99.99th=[ 6048] bw (KB /s): min= 5, max=27145, per=33.97%, avg=462.73, stdev=2353.60 lat (usec) : 2=40.72%, 4=51.82%, 10=6.43%, 20=0.69%, 50=0.18% lat (usec) : 100=0.09%, 250=0.03%, 500=0.01%, 1000=0.01% lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% lat (msec) : 100=0.01% cpu : usr=0.02%, sys=0.39%, ctx=4802, majf=0, minf=37 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued : total=r=0/w=81747/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): WRITE: io=326988KB, aggrb=1362KB/s, minb=1362KB/s, maxb=1362KB/s, mint=240038msec, maxt=240038msec Disk stats (read/write): sda: ios=2707/53905, merge=3192/23052, ticks=8832/618200, in_queue=626972, util=88.75%
Test de lectura aleatorio
De forma similar a lo anterior, lanzaremos 4 procesos de lectura de disco (cada uno con 512 MB) para un total de archivo de 2GB.
sudo fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting
Y esta es la salida que tenemos al finalizar:
root@ubuntu:~# sudo fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting sudo: unable to stat /etc/sudoers.d/README: Permission denied randread: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=16 ... fio-2.2.10 Starting 4 processes randread: Laying out IO file(s) (1 file(s) / 512MB) randread: Laying out IO file(s) (1 file(s) / 512MB) randread: Laying out IO file(s) (1 file(s) / 512MB) randread: Laying out IO file(s) (1 file(s) / 512MB) Jobs: 4 (f=4): [r(4)] [100.0% done] [3430KB/0KB/0KB /s] [857/0/0 iops] [eta 00m:00s] randread: (groupid=0, jobs=4): err= 0: pid=3400: Fri Aug 4 00:49:02 2017 read : io=824080KB, bw=3433.7KB/s, iops=858, runt=240004msec slat (usec): min=846, max=108007, avg=4636.19, stdev=1341.72 clat (usec): min=12, max=174325, avg=69880.01, stdev=5797.63 lat (msec): min=4, max=178, avg=74.52, stdev= 6.00 clat percentiles (msec): | 1.00th=[ 64], 5.00th=[ 67], 10.00th=[ 68], 20.00th=[ 69], | 30.00th=[ 69], 40.00th=[ 70], 50.00th=[ 70], 60.00th=[ 71], | 70.00th=[ 71], 80.00th=[ 72], 90.00th=[ 73], 95.00th=[ 74], | 99.00th=[ 96], 99.50th=[ 105], 99.90th=[ 147], 99.95th=[ 169], | 99.99th=[ 174] bw (KB /s): min= 574, max= 924, per=25.01%, avg=858.65, stdev=29.85 lat (usec) : 20=0.01% lat (msec) : 10=0.01%, 20=0.01%, 50=0.03%, 100=99.36%, 250=0.60% cpu : usr=0.07%, sys=5.27%, ctx=206487, majf=0, minf=94 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0% issued : total=r=206020/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=16 Run status group 0 (all jobs): READ: io=824080KB, aggrb=3433KB/s, minb=3433KB/s, maxb=3433KB/s, mint=240004msec, maxt=240004msec Disk stats (read/write): sda: ios=205962/90, merge=0/70, ticks=881032/344180, in_queue=1310388, util=92.64%
Estos son dos ejemplos básicos de uso de Fio para medir la velocidad de nuestros discos en equipos Linux, pero tiene muchas más opciones, así que o sugiero probar y leer la documentación para ver todas sus capacidades.
Aprende más – Realizar benchmark en Linux con Sysbench
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.
Hola
He llegado a esta comunidad vía g+,te comento que soy usuario básico en SO dese le secundaria q me ha lamido la
Atención los distri tía sirena operativos, he usado Mac Os9 sonata , Windows 98 hacia adelante, xubunto. Entre otros, estudie armado y configuración de Compuatdoras y diseño gráfico inconcluso.
Siempre me ha llamado la atención Linux .
Actúalmente. Tengo instalado Mint, en un descktop de escritorio con las siguiente caractwristicas: Intel penrhuim 4. 1 g en RAM .
El paquete de ofimatica no anda bien..!
Que me recomiendas.?
Saludos
Desde Chile
Sergio
Hola Sergio, gracias por venir.
Dado que tienes un problema de hardware anticuado (extremadamente diría yo) con hardware lo debes solucionar. No hay atajos ni soluciones milagrosas si quieres que te vayan bien aplicaciones actuales. Mint es bastante liviano, de los mejores para este caso, pero entiendo que el resto de programas que tienes en tu equipo y el propio sistema operativo lo dejan renqueante cuando inicias la ofimática. Intenta cerrar aplicaciones en segundo plano, deshabilita servicios de inicio y…compra nuevo hardware.
Cualquier otra cosa me cuentas.
Saludos.
Seria bueno explicar tambien cuales son los valores mas importantes de la salida de comando fio ya que da un monton arroja un monton de información pero no consigo ver los MB/s
Hola Luis,
Por ejemplo, para los valores del test de escritura deberemos fijarnos en el siguiente apartado.
write: io=326988KB, bw=1362.3KB/s, iops=340, runt=240038msec
slat (usec): min=3, max=3022.7K, avg=11732.00, stdev=81022.61
clat (usec): min=0, max=56316, avg= 4.28, stdev=233.24
lat (usec): min=4, max=3022.7K, avg=11738.09, stdev=81023.77
El valor «io» en primer término se refiere al total de bytes escritos durante la prueba.
El valor «bw» se refiere a la tasa de bytes escritos por segundo (bytes written)
El valor iops se refiere a Input/Output operations per second y es uno de los valores más importantes, representando las operaciones de entrada y salida que es capaz de manejar el disco cada segundo, un valor que será muy superior en un SSD.
El valor «runt» se refiere al tiempo transcurrido.
Los términos «lat» hacen referencia a latencias
El valor «slat» hace referencia a submit latency o el tiempo demorado en enviar los bytes a escribir al kernel para su proceso.
El valor «clat» se refiere a «completion latency» o tiempo que se tarda desde el envío al kernel hasta la finalización del procesamiento de información. Es uno de los mejores parámetros para determinar el rendimiento con aplicaciones de cada disco.
Espero haberte ayudado.
Saludos.