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: