Logo Espacio Linux Paypal - Acepta pagos con tarjeta en tu negocio      
Portada Taller Linux Descargas Foros Buscar Mapa del sitio Ayuda BlogEL
   Iniciar sesión | Registrarse    
 
Principal

Patrocinadores

Boletín Espacio Linux
Las novedades del sitio y el mundo Linux en tu email.


Taller Linux
 Estación de Trabajo en Audio
 HOWTO: Configuración básica de Ratpoison
 Guía de remasterización de Knoppix
 HOWTO: Nano, mi editor favorito
 HOWTO: Configuración Básica de IceWM


Sitios amigos

Acelerando el acceso a disco en Linux con hdparm


Si estás usando una distribución linux en una máquina Ix86 con discos IDE, es muy probable que el acceso a disco no esté optimizado en velocidad. No existe ningún comando mágico que permita aumentar la velocidad de tus discos con un simple click de ratón, pero haciendo pruebas con la herramienta hdparm, podemos mejorar el rendimiento (o no, si tu sistema ya estaba optimizado).

Antes de continuar, tengo que advertirte que, según la documentación de hdparm, bajo ciertas circunstancias, el uso de dicho comando puede producir daños en los datos del disco, yo lo tengo usado muchas veces, y nunca ha pasado nada, pero quedas avisado...

Como precaución especial, para hacer estas pruebas y ajustes, es necesario hacerlo como root y MUY ACONSEJABLE que sea en el modo single-user. Para los neófitos, explicaré como se entra en modo single-user:

Desde el Lilo, si estás en lilo en modo texto tendrás una línea que pone lilo, dónde puedes escribir, debes poner en ella 'linux single' (sin las comillas). Si estás en lilo en modo gráfico, pulsando escape pasas a modo texto, y sigues las anteriores instrucciones. Si ya has arrancado linux en modo normal y quieres pasar as single-user, puedes optar por cerrar todas las aplicaciones, y como root teclear 'telinit 1' (sin comillas) en una consola.

Bueno ya estamos en single-user, vamos al meollo del asunto, lo primero ver como está nuestro disco, los discos duros en linux no son C:, D:... como en windows, en un PC suele haber dos puertos IDE, en cada puerto puede haber un dispositivo maestro y uno esclavo. El disco maestro del primer puerto ide es /dev/hda, el esclavo es /dev/hdb. El disco maestro del segundo puerto es /dev/hdc y el esclavo es /dev/hdd, si hubiese más puertos ide, seguiríamos con /dev/hde, /dev/hdf, /dev/hdg, /dev/hdi... siguiendo el mismo esquema. Si no sabemos donde está nuestro disco probamos, lo peor que puede pasar si ejecutamos hdparm en un disco que no existe, es que nos diga que el dispositivo no existe. Todo lo que comento a continuación se refiere a /dev/hda que es el primer disco del primer puerto, el habitual en sistemas con un solo disco, ni que decir tiene que si tienes más de un disco, debes repetir el mismo proceso para cada uno de ellos.

Primero de todo vamos a ver como está configurado el disco, ejecutaremos:

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

Esto nos indica como está configurado actualmente el disco, luego hablaremos sobre cada parámetro. Otra cosa interesante que le podemos pedir es la identificación que se obtuvo disco en el momento del arranque, puede no funcionar en discos antiguos. Esta información nos puede dar pistas de las características del disco.

   hdparm -i /dev/hda

   /dev/hda:

    Model=FUJITSU MPC3102AT E, !FwRev=CD05, !SerialNo=41161144
    Config={ !HardSect !NotMFM !HdSw>15uSec Fixed DTR>10Mbs }
    RawCHS=16383/16/63, !TrkSize=0, !SectSize=0, ECCbytes=4
    !BuffType=unknown, !BuffSize=0kB, !MaxMultSect=16, !MultSect=off
    CurCHS=17475/15/63, !CurSects=-78446341, LBA=yes, LBAsects=19541088
    IORDY=yes, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
    PIO modes: pio0 pio1 pio2 pio3 pio4
    DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2
    AdvancedPM=no
    Drive Supports : Reserved : ATA-1 ATA-2 ATA-3

Bueno, ya sabemos que disco tenemos, y como está configurado, vamos a probar su velocidad:

   hdparm -Tt /dev/hda

   /dev/hda:
    Timing buffer-cache reads:   128 MB in  1.34 seconds =95.52 MB/sec
    Timing buffered disk reads:  64 MB in 17.86 seconds = 3.58 MB/sec

La 'T' hace que se haga un test del caché y la 't' hace una prueba de acceso a disco y nos devuelve los resultados, es conveniente repetir la spruebas 2 o 3 veces, para obtener un resultado correcto.

Los números de arriba pueden variar, pero en nuestro caso, 3,58Mb/segundo es una velocidad penosa para un disco UltraDMA?-66, pero ¿como puedo mejorarlo?. Solo nos queda ir probando parámetors y activando opciones que están desactivadas, y volver a repetir las pruebas a ver si mejoramos. ¿Que opciones tocar?:

multcount
Esto establece cuantos sectores se leen en cada operación de
entrada/salida, Todos los discos modernos soportan esto, los valores usuales para esta opción son las potencias de 2: 0,2,4,8,16,32 ver cual es el máximo que soporta nuestro disco haciendo un hdparm -i y viendo si dice algo de !MaxMultSect. Para establecer un valor a esta opción usar el parámetro -m de hdparm, por ejemplo

   parm -m8 /dev/hda

   /dev/hda:
    setting multcount to 8
    multcount    =  8 (on)

I/O Support: Salvo que tengamos una placa muy muy vieja (una de un 386), o un disco muy muy viejo, no debemos usar la opción 0, acceso a 16 bits. El valor aconsejable es 3 acceso 32-bits sincrono, que es acceso a 32-bits asincrono, pero menos aconsejable, por ser menos seguro aunque quizá pueda ser ligeramente más rápido que el modo 3. Para cambiarlo usamos el parámetro -c

unmaskirq
Activando esta opción permitimos que linux enmascare otras interrupciones mientras accede a datos del disco, segun la configuración de nustro hardware puede ser peligroso. Para cambiarlo usar -u

using_dma
Usar el acceso directo a memoria para las transferencias de disco puede acelerar nuestro disco, pero trastear mucho con esta opción puede colgar el sistema, combinarlo con -X34 o -X66 o similar (ver man hdparm) si nuestro disco soporta ultradma/66 o la ultradma/100. Se cambia con -d y los valores posibles son 0 o 1

readahead
Esto es el tamaño del bloque de datos que el kernel lee en cada operación, normalmente está a 8, aumentando el valor ganamos velocidad al leer ficheros grandes, pero podemos perder en ficheros pequeños, y si lo disminuímos ocurre al revés, yo creo que a 8 está bien para un sistema típico.

PioMode?
Usar con mucha precaución acepta valores de 0 a 5, y se cambia con el parámetro -p si no estás seguro de lo que haces no lo toques, puede dañar el disco.

Bueno, si has ido haciendo pruebas, ya sabes cuales son las opciones que aceleran tu disco, ahora solo tienes que establecerlas cada vez que arranque el sistema.

Suponiendo que nuestro disco funciona de forma óptima con los siguientes parámetros

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

Solo tenemos que añadir esa órden en los ficheros de arranque, por ejemplo en /etc/rc.d/rc.local para que se ejecute cada vez que arrancamos.

En distribuciones como Mandrake hay un fichero llamado /etc/sysconfig/harddisks en donde se pueden establecer todos estos parámetros de una manera más limpia, luego un script del arranque se encarga de llamar a hdparm con los parámetros establecidos en este fichero.


(C) 2002 Redy Rodriguez. Se permite su uso, modificación, distribución y publicación mientras se mantenga este mensaje de copyright.






Fecha: 2003-07-01
(5282 Lecturas)



Copyright © 2003 por Espacio Linux


[ Volver Atrás ]
Content ©
 



Copyright | Términos de uso | Política de privacidad | Publicidad | Contáctanos | Blog