[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

hdparm and DMA



Sorry for starting a new thread, but I was getting lost in the other
about hdparm since it started out as about KDE.

On Thu, Nov 14, 2002 at 07:03:16PM +0530, Sandip P Deshmukh wrote:
> # hdparm /dev/hda
> 
> /dev/hda:
>  multcount    = 16 (on)
>  I/O support  =  1 (32-bit)
>  unmaskirq    =  1 (on)
>  using_dma    =  1 (on)
>  keepsettings =  1 (on)
>  nowerr       =  0 (off)
>  readonly     =  0 (off)
>  readahead    =  8 (on)
>  geometry     = 9729/255/63, sectors = 156301488, start = 0
>  busstate     =  1 (on)
> 
> A lot of it will depend on the drive and the controller.  For instance on my
> older workstation (K7 650Mhz), I get the following:
> 
> # hdparm -Tt /dev/hda
> 
> /dev/hda:
>  Timing buffer-cache reads:   128 MB in  0.92 seconds =139.13 MB/sec
>  Timing buffered disk reads:  64 MB in  2.81 seconds = 22.78 MB/sec
> 
> with an indentical configuration.  However, turning off DMA on both of them
> gives:
> 
> K7 1Ghz
>  Timing buffered disk reads:  64 MB in 27.80 seconds =  2.30 MB/sec
> K7 650Mhz
>  Timing buffered disk reads:  64 MB in  7.28 seconds =  8.79 MB/sec
> 
> I normally use "hdparm -c1 -d1 -k1 /dev/hda", of course you'll want to change
> the /dev/hda to whatever drive you're working with.
>
Now the kernel I am using I compiled myself and I selected to use DMA
when available.  Here is part of the kernel config:
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_IDEDMA_PCI_AUTO=y
CONFIG_BLK_DEV_IDEDMA=y

Now when I check with hdparm I get:
# hdparm /dev/hda

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

So it seems it is not on?
Here are the speeds I get before any changes:
/dev/hda:
 Timing buffer-cache reads:   128 MB in  0.46 seconds =278.26 MB/sec
 Timing buffered disk reads:  64 MB in 16.07 seconds =  3.98 MB/sec 

Anyway, now turning on DMA and 32 bit IO support:
hdparm -c1 -d1
/dev/hda:
 setting 32-bit I/O support flag to 1
 setting using_dma to 1 (on)
 I/O support  =  1 (32-bit)
 using_dma    =  1 (on)

But rechecking to see if changes have worked:
hdparm /dev/hda
give exactly the same output as above.  Rechecking the speeds and these
are the same too.

I guess it is turned on already and the drives won't tell hdparm, or it
can't be turned on anyway.

The drive is a Western Digital 400JB-00ENA0 (40GB 7200RPM ATA133)  The
mobo is a ASUS A7V8X using the ATA133 connector.

Does anyone know what is happening here?  Should I be able to improve
the performance somehow or is this as good as it gets?

Cheers.
Mark.



Reply to: