Acelerando accesos a discos (parte 2)

Imagen de Epe

Muchos, muchísimos, seguimos teniendo y seguiremos usando discos IDE para manejar nuestros servidores y máquinas de desktop.

En este artículo veremos cómo hacer para optimizar un poco los accesos a nuestro disco duro.

Simple, las distribuciones de linux vienen por defecto sin hacer mucho esfuerzo en optimizar los accesos a disco. Y la razón es muy lógica.. los discos son muy variados, y es virtualmente imposible una receta mágica para que todos los discos den lo mejor de sí.

En este artículo, veremos unos simples parámetros que podemos cambiar usando la utilería hdparm.

Advertencia: Estos cambios pueden hacer que el disco duro deje de funcionar. Es más, estos cambios pueden eventualmente echar a perder la información y hasta dañar personalmente el disco.

Aunque nunca he tenido ningun problema más que el de reiniciar la máquina porque el disco deje de responder, nunca está de más advertir que cualquier cambio que haga, lo debe hacer bajo su total responsabilidad

1- Verifiquemos que tenemos la ultilería hdparm, para los que usan una distribución basada en rpm:

rpm -q hdparm



Suponiendo que nuestro disco esté en /dev/hda:

2- verifiquemos los parámetros actuales del disco:

hdparm /dev/hda

/dev/hda:
multcount = 16 (on)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 39704/16/63, sectors = 40021632, start = 0

Segundo, miremos y anotemos los parámetros de performance de nuestro disco antes de hacer cuqlquier cambio:

hdparm -tT /dev/hda



aqui están los resultados de mi disco antes de optimizarlo:


Timing buffer-cache reads: 128 MB in 0.36 seconds =357.54 MB/sec
Timing buffered disk reads: 64 MB in 14.33 seconds = 4.47 MB/sec

Estos son los resultados después de optimizado:


Timing buffer-cache reads: 128 MB in 0.33 seconds =390.24 MB/sec
Timing buffered disk reads: 64 MB in 4.63 seconds = 13.82 MB/sec

Si ven, los parámetros que el hdparm mide, se han incrementado, en algunos caso unas 3 veces. (buffered disks reads)

-----------------

Yo siempre me centro en varios parámetros de estos, por ejemplo el IO support está en el valor por defecto de 16 bits.. cuando los discos mayormente soportan 32bits, PIOs, etc. Esto hay que cambiarlo.

unmaskirq está desactivado, sin embargo permite enmascaras las IRQ para que cualquier otro programa que esté usando la misma IRQ que el disco le dé posibilidad al disco a usarla también. Sino, el disco como que se traba. Esto debemos activarlo.

using DMA, direct memory access. Si compramos discos con soporte para DMA cómo no activarlo?

multicount: cuántos sectores se leen con un acceso del cabezal, normalmente aumenta el performance en un 30%-50%

Ahora comencemos poquito a poco, si el disco deja de responder, lamentablemente hay que apretar ese botoncito que dice reset:



hdparm -c3 -m16 /dev/hda

Aquí hemos activado 32bits así como multicount a 16.. el multicount lo podemos llevar hasta 32 a veces.

Procedamos a probar de nuvo nuestro disco:


hdparm -tT /dev/hda

Supongo que hayan anotado previamente los datos del -tT anterior. Comparen y vean si ha aumentado o no, si no ha aumentado, es que algún parámetro en vez de ayudar al disco de ustedes, lo afectó.

En mi caso, esto casi dobló los accesos a discos.

Sigamos:


hdparm -X34 -d1 -u1 /dev/hda

/dev/hda:
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
setting xfermode to 34 (multiword DMA mode2)
unmaskirq = 1 (on)
using_dma = 0 (off)

En mi caso, no pude activar el DMA, posiblemente porque no lo tengo activado en el BIOS, es de asegurarse que lo esté, el DMA sí ayuda muchísimo en los accesos. En mi caso no puedo reiniciar la máquina pues es en la que todos compilamos los paquetes pero por lo demás, activé unmaskirq y el modo de transferencia lo puse a multiword DMA modo 2.

A mí personalmente no me mejoró, pero supongo que haya sido porque no pude activar el DMA, pero si a ustedes le trabaja, mejor, mode2 es PIO2, si el disco de ustedes es PIOotracosa entonces busquen el parámetro adecuado para mejorar los accesos.

A propósito, posiblemente los discos de muchos hayan dejado de funcionar, porque no soporta X34 , prueben con:


hdparm -X66 -d1 -u1 -m16 -c3 /dev/hda

Al final de las pruebas, ya muchos tendrán idea de qué parámetros les sirven y cuáles no, los que les sirvan, los pueden unir en una sola llamada al hdparm y ponerlo en /etc/rc.d/rc.local para que se ejecute cada vez que linux comience.

Espero les ayude a mejorar un poquito los accesos a discos. Recuerden, el mayor cuello de botella ahora, son los accesos por el bus de datos a los dispositivos mecánicos, discos por ejemplo, por lo tanto no hacemos nada con tener una super máquina con 5Ghz de velocidad, 10 procesadores y un disco mal optimizado

saludos

epe