# [hardware] posible problema con disco sata (solucionado)

## chaim

Hola a todos de nuevo!

Mi problema es que cuando copio ficheros de una ubicación a otra (una cantidad bastante amplia), el disco (como es normal) empieza a usarse, pero creo que es a límites muy descontrolados, pues por ejemplo en ese momento si intento arracar firefox u otro programa un poco pesado tarda más de 20 o 30 segundos, cuando normalmente lo hace en 1 o 2 s.

Compilé con genkernel y a lo mejor es problema del kernel o del mòdulo que tengo activado para el disco ( se trata de un disco SATA)

Exactamente no sé que archivos de registro pegarles para que me puedan ayudar...pero en cuanto me lo digan lo haré  :Smile: 

Se trata de un portatil Sony Vaio VGZ FE21M:

Disco duro  	 160 GB - Serial ATA-150 - 4200 rpm 

También es cierto de que se me calienta mucho más que con win usando practicamente las mismas herramientas, pero al cabo de una hora más o menos de uso normal (internet, emerger algo) se pone demasiado caliente, no sé si debido al disco duro o a los ventiladores...

```
localhost ~ # hdparm -t /dev/sda

/dev/sda:

 Timing buffered disk reads:   88 MB in  3.04 seconds =  28.97 MB/sec

localhost ~ # hdparm -T /dev/sda

/dev/sda:

 Timing cached reads:   2132 MB in  2.00 seconds = 1067.30 MB/sec

```

Espero me puedan ayudar. Gracias de antemano.Last edited by chaim on Mon Aug 11, 2008 8:01 pm; edited 1 time in total

----------

## jgascon

Para ver si tienes algún problema con los módulos de tu kernel tenemos que saber que controladora SATA tienes en la placa, p.e.:

```

seiya ~ # lspci | grep SATA

05:0a.0 RAID bus controller: Silicon Image, Inc. SiI 3114 [SATALink/SATARaid] Serial ATA Controller (rev 02)

```

Y a continuación, para ver que módulos SATA tienes compilados en el kernel que estás usando, ejecuta lo siguiente:

```

seiya ~ # zgrep -i sata /proc/config.gz

# CONFIG_BLK_DEV_IDE_SATA is not set

CONFIG_SATA_AHCI=y

CONFIG_SATA_SVW=y

# CONFIG_SATA_MV is not set

CONFIG_SATA_NV=y

# CONFIG_SATA_QSTOR is not set

# CONFIG_SATA_PROMISE is not set

# CONFIG_SATA_SX4 is not set

CONFIG_SATA_SIL=y

# CONFIG_SATA_SIL24 is not set

# CONFIG_SATA_SIS is not set

# CONFIG_SATA_ULI is not set

CONFIG_SATA_VIA=y

# CONFIG_SATA_VITESSE is not set

# CONFIG_SATA_INIC162X is not set

```

Y por si acaso mírate lo que dicen de los jumpers en este hilo.

----------

## chaim

```
localhost ~ # lspci | grep SATA 

00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)

localhost ~ # 
```

```
localhost ~ # zgrep -i sata /proc/config.gz 

# CONFIG_BLK_DEV_IDE_SATA is not set

CONFIG_SATA_AHCI=m

CONFIG_SATA_SVW=m

CONFIG_SATA_MV=m

CONFIG_SATA_NV=m

CONFIG_SATA_QSTOR=m

CONFIG_SATA_PROMISE=m

CONFIG_SATA_SX4=m

CONFIG_SATA_SIL=m

CONFIG_SATA_SIL24=m

CONFIG_SATA_SIS=m

CONFIG_SATA_ULI=m

CONFIG_SATA_VIA=m

CONFIG_SATA_VITESSE=m

CONFIG_SATA_INIC162X=m
```

 *Quote:*   

> Y por si acaso mírate lo que dicen de los jumpers en este hilo.

 

He leído el tema de los jumper y no creo que sea mi caso. Pero quizá si. Como puedes ver tengo un monton de modulos cargados que ni siquiera sé que son. Me los debe cargar porque al instalar seleccioné que usara lo que usa el LiveCD de isntalación yasí compilarlo con genkernel..pero claro, que así tarda tanto en arrancar luego, porque me carga miles de historias que creo que son innecesarias pero no lo sé a ciencia cierta.

Un saludo

----------

## chaim

hdparm -I /dev/sda

```
/dev/sda:

ATA device, with non-removable media

   Model Number:       FUJITSU MHV2160BT                       

   Serial Number:      NU06T6628L81

   Firmware Revision:  00000013

Standards:

   Used: ATA/ATAPI-7 T13 1532D revision 4a 

   Supported: 7 6 5 4 & some of 8

Configuration:

   Logical      max   current

   cylinders   16383   16383

   heads      16   16

   sectors/track   63   63

   --

   CHS current addressable sectors:   16514064

   LBA    user addressable sectors:  268435455

   LBA48  user addressable sectors:  312581808

   device size with M = 1024*1024:      152627 MBytes

   device size with M = 1000*1000:      160041 MBytes (160 GB)

Capabilities:

   LBA, IORDY(can be disabled)

   Queue depth: 32

   Standby timer values: spec'd by Standard, no device specific minimum

   R/W multiple sector transfer: Max = 16   Current = 16

   Advanced power management level: 128

   Recommended acoustic management value: 254, current value: 254

   DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 

        Cycle time: min=120ns recommended=120ns

   PIO: pio0 pio1 pio2 pio3 pio4 

        Cycle time: no flow control=240ns  IORDY flow control=120ns

Commands/features:

   Enabled   Supported:

      *   SMART feature set

          Security Mode feature set

      *   Power Management feature set

      *   Write cache

      *   Look-ahead

      *   Host Protected Area feature set

      *   WRITE_BUFFER command

      *   READ_BUFFER command

      *   DOWNLOAD_MICROCODE

      *   Advanced Power Management feature set

      *   SET_MAX security extension

      *   Automatic Acoustic Management feature set

      *   48-bit Address feature set

      *   Device Configuration Overlay feature set

      *   Mandatory FLUSH_CACHE

      *   FLUSH_CACHE_EXT

      *   SMART error logging

      *   SMART self-test

      *   General Purpose Logging feature set

      *   WRITE_{DMA|MULTIPLE}_FUA_EXT

      *   IDLE_IMMEDIATE with UNLOAD

          Disable Data Transfer After Error Detection

      *   SATA-I signaling speed (1.5Gb/s)

      *   Native Command Queueing (NCQ)

      *   Host-initiated interface power management

      *   Phy event counters

          DMA Setup Auto-Activate optimization

          Device-initiated interface power management

      *   Software settings preservation

      *   SMART Command Transport (SCT) feature set

      *   SCT LBA Segment Access (AC2)

      *   SCT Error Recovery Control (AC3)

      *   SCT Features Control (AC4)

      *   SCT Data Tables (AC5)

Security: 

   Master password revision code = 65534

      supported

   not   enabled

   not   locked

   not   frozen

   not   expired: security count

   not   supported: enhanced erase

   160min for SECURITY ERASE UNIT. 

Checksum: correct

```

----------

## jgascon

 *chaim wrote:*   

> Como puedes ver tengo un monton de modulos cargados que ni siquiera sé que son. Me los debe cargar porque al instalar seleccioné que usara lo que usa el LiveCD de isntalación yasí compilarlo con genkernel..pero claro, que así tarda tanto en arrancar luego, porque me carga miles de historias que creo que son innecesarias pero no lo sé a ciencia cierta.
> 
> 

 

Los módulos que ves con el zgrep que te he puesto antes no son los que tienes cargados, son los que se han compilado al compilar el kernel...

```

localhost ~ # lspci | grep SATA

00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02) 

```

El módulo para tu controladora SATA se llama ATA_PIIX. No ha salido con el zgrep porque se llama ATA y no SATA   :Embarassed: 

 ¡OJO! Antes de hacer nada, guarda una copia de la configuración actual de tu kernel (/usr/src/linux/.config) por si tienes porblemas para arrancar con este kernel.

Yo de ti compilaría este módulo directamente en el kernel y no compilaría ninguno más. En la parte de SATA del kernel (con make menuconfig) debería quedarte algo así:

```

   Device Drivers

   <*> Serial ATA (prod) and Parallel ATA (experimental) drivers

        <*>   Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support 

```

No compiles estos módulos como módulos <M> sino directamente en el kernel <*> ya que es necesario que estén disponibles al arrancar el kernel y antes de que éste acceda al disco.

Si no has compilado nunca el kernel "a mano" mírate este howto.

----------

## chaim

Ya hize lo que me dijiste! De fábula! Ahora me carga menos módulos al iniciar, antes debería estar funcionando con el ATA_generic, ahora ya está con su correspondiente módulo 'built in'  :Smile:  La velocidad no es que haya mejorado mucho al anterior (incluso puede que nada) pero aún así ya me siento mejor. cada cosa con su cosa  :Smile: 

```
localhost ~ # hdparm -Tt /dev/sda

/dev/sda:

 Timing cached reads:   2352 MB in  2.00 seconds = 1177.43 MB/sec

 Timing buffered disk reads:   92 MB in  3.00 seconds =  30.66 MB/sec
```

Gracias, ahora a ver si consigo activar el DMA.

----------

## chaim

Lo que no consigo ahora es activar el DMA en el disco /dev/sda

```
localhost ~ # hdparm -d1 /dev/sda

/dev/sda:

 setting using_dma to 1 (on)

 HDIO_SET_DMA failed: Inappropriate ioctl for device

 HDIO_GET_DMA failed: Inappropriate ioctl for device
```

```
localhost ~ # zgrep -i HDIO_GET_DMA /proc/config.gz 

localhost ~ # zgrep -i DMA /proc/config.gz 

CONFIG_ZONE_DMA=y

CONFIG_GENERIC_ISA_DMA=y

# CONFIG_ZONE_DMA32 is not set

CONFIG_ZONE_DMA_FLAG=1

CONFIG_ISA_DMA_API=y

CONFIG_BLK_DEV_IDEDMA_SFF=y

CONFIG_BLK_DEV_IDEDMA_PCI=y

CONFIG_BLK_DEV_IDEDMA=y

CONFIG_SCSI_DMA=y

CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1

# CONFIG_PDC_ADMA is not set

# CONFIG_PATA_OPTIDMA is not set

# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set

# CONFIG_CARDMAN_4000 is not set

# CONFIG_CARDMAN_4040 is not set

CONFIG_DMADEVICES=y

# DMA Devices

CONFIG_INTEL_IOATDMA=y

CONFIG_DMA_ENGINE=y

# DMA Clients

CONFIG_NET_DMA=y

CONFIG_SUNRPC_XPRT_RDMA=m

# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set

CONFIG_HAS_DMA=y

```

----------

## jgascon

Los disco SATA no tienen DMA y hdparm no está pensado para trabajar con discos SATA. En su lugar deberías usar sdparm...

----------

## chaim

Anda...que menudo noob que soy jeje. Gracias por las respuestas jgascon.

----------

## jgascon

Una cosa que te quería comentar que parece que no ha quedado muy clara. El archivo /proc/config.gz es un archivo que está en memoria y contiene la configuración del kernel que está cargado en memoria y sirve por ejemplo para ver que opciones han sido compiladas como módulos, que opciones han sido compiladas directamente en el kernel o que opciones del kernel no se usan. Para ver que módulos del kernel se están usando en un momento dado se debe usar la orden lsmod.

----------

## piponazo

 *jgascon wrote:*   

> Los disco SATA no tienen DMA y hdparm no está pensado para trabajar con discos SATA. En su lugar deberías usar sdparm...

 

Hola! Solo quería hacer una aclaración, los discos SATA claro que tienen DMA como casi cualquier componente o periférico en el que se trasmiten datos con la CPU . En cuanto a lo del hdparm si que tienes razón, no está pensado para trabajar con SATA, por lo que solo podrás ver las características del disco y comprobar los tiempos de lectura, pero sin poder activar/desactivar/configurar ningún cambio de configuración.

Saluditos!  :Wink: 

----------

## Inodoro_Pereyra

Creo que jgascon se refería a que no es configurable la posibilidad de activar o desactivar DMA para un disco Serial ATA.

Salud!

----------

## piponazo

 *Inodoro_Pereyra wrote:*   

> Creo que jgascon se refería a que no es configurable la posibilidad de activar o desactivar DMA para un disco Serial ATA.
> 
> Salud!

 

Estoy convencido de que jgascon se refería a lo que comentas, pero el mensaje que escribió podía llevar a confusión a gente que no sabe lo que es el DMA de forma exacta. No pretendo crear ningún tipo de discusión, solo dejar claro ese concepto para el resto de lectores de este post ya que por suerte o desgracia yo lo he tenido que estudiar en profundidad en asignaturas de la universidad xD. Bueno, lo importante es que chaim solucionó su problema   :Very Happy: 

Saludos!

----------

## chaim

Si, gracias a todos, pueden cerrar el hilo si quieren

----------

## jgascon

 *piponazo wrote:*   

> 
> 
> Estoy convencido de que jgascon se refería a lo que comentas, pero el mensaje que escribió podía llevar a confusión a gente que no sabe lo que es el DMA de forma exacta. 

 

Pozí, a eso me refería pero tienes razón en que lo que decía era incorrecto... gracias por la corrección y gracias Don Inodoro por la aclaración  :Wink: 

----------

## Inodoro_Pereyra

 *chaim wrote:*   

> Si, gracias a todos, pueden cerrar el hilo si quieren

 

El hilo lo cerrás vos mismo cuando consideres resuelto el asunto para que le resulte mas facil encontrar soluciones a alguien mas el día de mañana.

A la hora de buscar soluciones, ayuda mucho y ahorra tiempo eso de encontrar la palabra "solucionado" al lado del título.

Salud!

----------

