Mejorando el rendimiento del disco duro con "hdparm" (kernel 2.2)

Manel Marin

23 de febrero de 2001

ATENCION: ¡¡¡Riesgo de corrupción del sistema de archivos!!! Si usas un kernel 2.4 parece que no es necesario optimizar el disco con hdparm

Mi ejemplo

Hay algunas placas en las que el uso de la IRQ de los discos duros no está soportada por el kernel 2.2 (como mi ASUS ATX para K6) y no puedo activar el modo DMA, pero si que puedo activar la transferencia IO de 32 bit incrementando la tasa de transferencia un 43% y el modo multisector, incrementando otro 25%, total incremento = 80% ¿No está mal, no?

1. Instalar el paquete hdparm

2. Medir (y anotar) la tasa de transferencia actual para comparar

hdparm -t /dev/hda

3. Ver información del disco duro

hdparm -I /dev/hda

Aquí veremos:

4. Mirar los ajustes actuales del disco duro

hdparm -v /dev/hda

5. Activar la transferencia IO de 32 bits (+43% mejora) Esto permite transferir 32 bits en lugar de 16 bits en las operaciones de IO

hdparm -c1 /dev/hda

6. Activar modo multisector (Modo Bloque IDE) (+%25 mejora) Esto permite transferir más de un sector por interrupción. El máximo aparece como "MaxMultSect=16" al hacer "hdparm -I /dev/hda"

hdparm -m16 /dev/hda

7. Activar el DMA (no puedo activarlo, pero me admite la opción). Esto no tiene por que mejorar la tasa de transferencia, pero descarga la CPU.

hdparm -d1 /dev/hda

8. Activar el modo UltraDMA4 (64 + modo 4 = 68), por defecto es modo 2 -A mi no me da incremento, pero puede ser porque no me funciona el DMA

hdparm -X68 /dev/hda

9. Permitir otras interrupciones durante las interrupciones del disco duro. Esto aumenta muchísimo la velocidad de respuesta del sistema, pero puede causar "Corrupción masiva del sistema de archivos" en algunos sistemas (algunas combinaciones de disco/controladora)

hdparm -u1 /dev/hda # PROBAR CON SUMO CUIDADO

10. Haz pruebas intensivas (compila un kernel ;-) para asegurarte de que los ajustes que has fijado son estables en tu sistema. Si no vienen activados por defecto en las distribuciones es por algún motivo...

11. Hacer que los ajustes se mantengan tras la secuencia de recuperación de errores del disco duro. Atención haz esto solo cuando estés seguro de que los ajustes que usas son estables, ya que los errores no reestablecerán la configuración por defecto (más segura)

hdparm -k1 /dev/hda

12. Hacer que se ejecute el comando en cada arranque. Añadir a /etc/rc.boot un script "00-hdparm" con (en mi caso):

#! /bin/sh
#       Ajustes para incrementar la tasa de transferencia del HD
#
# -c1 = IO 32 bits -m16 = Modo multisector (16 sectores) -d1 = DMA -X68
# = Modo UltraDMA (64 + modo 4 = 68) -u1 = Permitir otras interrupciones
# durante las de HD *MUCHO CUIDADO* -k1 = Mantener los ajustes tras un
# error de HD
hdparm -c1 -m16 -d1 -u1 /dev/hda # Durante unos dias
# hdparm -c1 -m16 -d1 -u1 -k1 /dev/hda # Cuando veamos que es estable

Darle permisos de ejecución al script

Otras opciones

a. Activar el buffer de escritura del drive IDE (normalmente OFF). No me gusta pues si haces esto el ejecutar un "sync" no tiene porque hacer lo que le pides, y además ya tenemos caché de escritura en el kernel ¿no?

hdparm -W1 /dev/hda # NO LO RECOMIENDO

b. Hacer que el disco sea de sólo lectura (curioso...)

hdparm -r1 /dev/hda # ---NO LO HE PROBADO---

c. "hdparm" tiene opciones de control de energía, puedes mirarlo en la página man ("man hdparm")

Agradecimientos

A TooManySecrets por su mensaje inicial a la lista de correo de aguila, que he utilizado como base y ampliado (Gracias TooMany ;-)

Más información: man hdparm




Página creada en: 2004-11-04 11:40:58 +0000
© Copyright 2001, 2002, 2003, 2004, La Espiral, debian-laespiral@lists.debian.org
Permitida la copia y distribución textual, integral, siempre y cuando se mantenga este aviso.