You are here: Home » Blog » Verificando la “E/S || I/O” de los discos duros.

Verificando la “E/S || I/O” de los discos duros.

 

El día de hoy quiero presentar esta útil herramienta llamada “iotop”.

Iotop esta escrito en Python y nos permite monitor izar de forma interactiva la lectura y la escritura en el disco duro; permite entre otras cosas verificar la velocidad con la que se ejecutan las tareas sobre el dispositivo físico.

se puede descargar desde el sitio oficial http://bit.ly/pGGk5m ;  aunque la mayoría de distribuciones Linux permiten la descarga desde los repositorios, solo es cuestión de buscarlos con el administrador de paquetes.

– Debian

# apt-cache search iotop

-CentOS

# yum search iotop

– Gentoo

# equo search iotop

o

# emerge –search iotop

– Slackware

# slackpkg search iotop

Pero antes de la instalación vamos a verificar si nuestro kernel soporta “tareas estadisticas” o “taskstats” ; en una terminal como root se ejecuta :

<em><strong># cat /usr/src/linux-`uname --kernel-release`/.config \</strong></em>
<em><strong> |grep TASKSTATS</strong></em>

Se debería obtener la siguiente salida

CONFIG_TASKSTATS=y

ahora buscamos la otra opción que también debe estar habilitada en el kernel.

<em><strong># cat /usr/src/linux-`uname --kernel-release`/.config \</strong></em>
<em><strong> |grep TASK_IO_ACCOUNTING</strong></em>

y esta debería ser la salida

<em><strong>CONFIG_TASK_IO_ACCOUNTING=y</strong></em>

El archivo de configuración del kernel también se suele encontrar  en /boot/config-`uname –kernel-release`  pero en mi particular caso se encuentra en /usr/src/`uname –kernel-release`/.config  que fue donde se compilaron las fuentes de mi kernel.

Bien la mayoría de las distribuciones Linux  por defecto tienen estos dos parametros en “y“.

Y que hacer si estos parámetros no están habilitados; sencillo es cuestión de habilitarlos en el kernel y re compilar,  no voy a explicar como se compila un kernel Linux,  pues google tiene muchos “how to” para este tema;  pero voy a indicar como habilitar los parametros para “taskstats”.

+----------------------------------------------------------------------------+
| General Setup --&gt; |
| [*] Export task/process statistics through netlink |
| [ ] Enable per-task delay accounting |
| [*] Enable extended accounting over taskstats |
| [*] Enable per-task storage I/O accounting |
+----------------------------------------------------------------------------+

Muy claro, se ingresa a la opción  “General Setup” y se habilitan las  opciones que se muestran arriba. Compilar  – instalar – actualizar Grub o lilo si es el caso – reiniciar y arrancar con el nuevo kernel.

Ahora si a instalar

En mi caso uso gentoo.

0x2e ~ # emerge  iotop

Otra opción es descargarlo e instalarlo; para eso realizamos el siguiente proceso como usuario root:

# cd /usr/src/  

# git clone git://repo.or.cz/iotop.git iotop

# cd iotop

# ./setup.py

También es posible ejecutar iotop sin realizar la instalación ; es cuestión de ingresar a la carpeta donde se descargo y ejecutar:

# ./iotop.py

 

Ahora probemos la instalación , como usuario root ejecutemos iotop desde la consola.

# iotop

y seguidamente en otra terminal vamos a volcar la salida de /dev/zero a un archivo temporal, usaremos la herramienta dd para realizar esta acción.

# dd if=/dev/zero of=/tmp/testIotop  bs=1M count=500

explicación:

if=/dev/zero : definimos el archivo de entrada “input file” en este caso /dev/zero.

of=/tmp/testIotop : definimos el archivo de salida “output file” que se guardara en /tmp/testIotop.

bs=1M : definimos el tamaños de los bloques que copiara dd  “block size” se definió 1 Mega para el tamaño de los bloques.

count=500 : se define que dd se debe detener cuando halla completado 500 bloques .

luego de ejecutar este comando se debe producir una salida similar a la siguiente

<em><strong>500+0 registros leídos</strong></em>
<em><strong>500+0 registros escritos</strong></em>
<em><strong>524288000 bytes (524 MB) copiados, 6,14337 s, 85,3 MB/s</strong></em>

“por si las dudas 1 mega logica = 1024 bytes multiplicado por cantidad de bloques a copiar osea 500 y el resultado convertido a bytes es decir multiplicado por 1024  es igual a 524288000 Bytes o 524  Megas  para copiar exactamente 500 Megas count=477 que es igual a 477  *  1024 * 1024  ,  aqui mas ayuda http://bit.ly/qTygRF  o man dd “

Iotop debio haber mostrado algo similar a la siguiente imagen


 

En la segunda linea se observa el proceso que estábamos ejecutando.  La columna  “DISK WRITE”  muestra que la velocidad de copiado era de 69.56  M/s .

Esto es todo por ahora , recomiendo usar “man iotop”  la sintaxis es super clara y fácil de usar.

Saludos.