5 may. 2008

Optimizar el uso de disco duro con hdparm

Podemos aumentar el rendimiento de los discos duros usando la herramienta hdparm, que viene instalada de serie en Ubuntu, pero si no la teneis por lo que sea podeis teclear:

$ sudo aptitude install hdparm

Esta herramienta nos permite sacar el máximo partido de los discos duros instalados. Lo primero que vamos a hacer es una prueba de rendimiento con la orden:

$ sudo hdparm -tT /dev/sda

/dev/sda:
Timing cached reads: 912 MB in 2.00 seconds = 455.44 MB/sec
Timing buffered disk reads: 252 MB in 3.00 seconds = 83.89 MB/sec


Nota: en lugar de /dev/sda teneis que poner el dispositivo que tengais vosotros, lo podeis ver con sudo fdisk -l | grep -i linux

Ahora mostramos toda la información disponible con:

$ sudo hdparm -i /dev/sda

/dev/sda:

Model=SAMSUNG HD501LJ, FwRev=CR100-12, SerialNo=S0MUJ1FPC32705
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4
BuffType=DualPortCache, BuffSize=16384kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=no WriteCache=enabled
Drive conforms to: unknown: ATA/ATAPI-3,4,5,6,7
* signifies the current active mode


Veamos ahora algunas características útiles que se pueden activar:

  • Activar el modo "read ahead" para acelerar lecturas secuenciales: $ sudo hdparm -A1 /dev/sda
  • Activar el modo DMA: $ sudo hdparm -d1 /dev/sda
  • Activar el modo PIO: $ sudo hdparm -p4 /dev/sda
  • Activar el acceso a disco de 32bits: $ sudo hdparm -c1 /dev/sda
  • Activar la lectura de multiples sectores: $ sudo hdparm -m16 /dev/sda (aquí lo mejor es usar el valor de MaxMultSect que vemos al hacer $ sudo hdparm -i /dev/sda)
  • Establecer el modo de acceso UDMA: sudo hdparm -Xudma6 /dev/sda
Después de cada cambio os aconsejo ejecutar sudo hdparm -tT /dev/sda y comprobar si hay mejora en el rendimiento o no.

Para evitar que estos cambios se pierdan al reiniciar podeis poner una linea para hdparm en el archivo /etc/rc.local, aquí os dejo un ejemplo:

hdparm -A1 -d1 -p4 -c1 -m16 -Xudma6 /dev/sda

Más información en la página del manual de hdparm o en http://ubuntuforums.org/archive/index.php/t-16360.html

1 comentario :

enrique dijo...

Tengo un viejo Vaio PGC-Z600RE del año 1999 (128 MB SDRAM, 12 GB HD) con disco duro ATA Toshiba. Siempre usé SuSe 6.4 y para ponerlo en Ultra DMA usaba: /sbin/hdparm -d1 /dev/hda, y funcionaba.
Ahora me he pasado a Ubuntu (Intrepid Ibex Alternate). Todo funciona, aunque lento, pero el comando hdparm -d1 /dev/sda me da el error "HDIO_GET_DMA failed: Inappropiate ioctl for device". Se te ocurre alguna solución? Gracias por adelantado!