Question about transfer speeds between HDs, and DMA mode

Z

ZigZag Master

I have a Maxtor 200GB (6Y200P0) and a Western Digital 250GB WD2500JB in a
AMD 2500 / Abit NF7-S - 1GB RAM. I am running Windows XP Pro.

I was wondering how long it should take to copy large files between the
drives.

I have some TV captures that are about 8-12GB. It just seems like it takes
a long time to copy from drive to drive....about 6-8 minutes. Is this
normal?

Also, do I have to do anything special to turn on DMA mode? I think I was
using Pinnacle Studio, and it popped up a window saying DMA mode was not
enabled on the Maxtor.

Thanks
 
W

Wes Newell

I have a Maxtor 200GB (6Y200P0) and a Western Digital 250GB WD2500JB in a
AMD 2500 / Abit NF7-S - 1GB RAM. I am running Windows XP Pro.

I was wondering how long it should take to copy large files between the
drives.

I have some TV captures that are about 8-12GB. It just seems like it takes
a long time to copy from drive to drive....about 6-8 minutes. Is this
normal?

Also, do I have to do anything special to turn on DMA mode? I think I was
using Pinnacle Studio, and it popped up a window saying DMA mode was not
enabled on the Maxtor.
For best performance, make sure the 2 drives are not on the same channel
(cable). If they are on the same channel, this will be a major
slowdown, as each channel can only perform 1 IO fubction at a time. So
it will have to read to ram, then write back out to the same channel.
Using 2 channels (cables), both will happen at the same time. Then make
sure you have them set to the fastest settings they support. I use hdparm
to check/set mine, but I run linux. Not sure where you set/check drive
modes in win.
 
Z

ZigZag Master

OK, I also have 1 DVD writer and 1 DVD reader, so if I understand you
correctly, I should put one HD and one DVD on each channel???

thanks
 
T

TBC OZoNE

ZigZag Master said:
OK, I also have 1 DVD writer and 1 DVD reader, so if I understand you
correctly, I should put one HD and one DVD on each channel???

thanks



in
a
For best performance, make sure the 2 drives are not on the same channel
(cable). If they are on the same channel, this will be a major
slowdown, as each channel can only perform 1 IO fubction at a time. So
it will have to read to ram, then write back out to the same channel.
Using 2 channels (cables), both will happen at the same time. Then make
sure you have them set to the fastest settings they support. I use hdparm
to check/set mine, but I run linux. Not sure where you set/check drive
modes in win.
In a Nutshell yea....
But what else you could do to increase speed is add a Raid or IDE card to
you system and have each drive run on its Own interface....
Say hard drives on Motherboard IDE channels 1 and 2 and then DVD drives on
add-on card for IDE 3-4.
I been thinkin about doin this myself....I have a Promise IDE 133 card
sitting here that I may throw my DvDPlayer and CD-RW on and split the hard
drives....but due to Case size so many cables would kill airflow for me.
OZoNE
 
R

Ron Reaugh

ZigZag Master said:
OK, I also have 1 DVD writer and 1 DVD reader, so if I understand you
correctly, I should put one HD and one DVD on each channel???

Right.
 
R

Ron Reaugh

ZigZag Master said:
I have a Maxtor 200GB (6Y200P0) and a Western Digital 250GB WD2500JB in a
AMD 2500 / Abit NF7-S - 1GB RAM. I am running Windows XP Pro.

I was wondering how long it should take to copy large files between the
drives.

I have some TV captures that are about 8-12GB. It just seems like it takes
a long time to copy from drive to drive....about 6-8 minutes. Is this
normal?

That's in the ballpark.
Also, do I have to do anything special to turn on DMA mode? I think I was
using Pinnacle Studio, and it popped up a window saying DMA mode was not
enabled on the Maxtor.

Make SURE DMA mode is enabled for ALL ATA/IDE devices.
 
W

Wes Newell

OK, I also have 1 DVD writer and 1 DVD reader, so if I understand you
correctly, I should put one HD and one DVD on each channel???
If you've only got 2 channels and 4 devices, then you want the devices you
copy to/from most on seperate channels. but you also need to consider
from which drive you copy to the DVD wiriter most and keep them seperate
as well if possible. It depsnds on how you use the sytem as to how to best
configure the drives. Someone suggested another controller card, using 1
drive per channel. That would be the best solution if that's posssible.
They're cheap as dirt (I bought a dual channel with raid for about $10),
so cost shouldn't be an issue for most people.
 
F

Folkert Rienstra

Wes Newell said:
For best performance, make sure the 2 drives are not on the same channel
(cable). If they are on the same channel, this will be a major
slowdown,
Nope.

as each channel can only perform 1 IO fubction at a time.

Like this would be any different for SCSI or any other bus.
So it will have to read to ram, then write back out to the same channel.

So what. An IDE channel can support two drives.
 
M

Michael Brown

Folkert said:

Wrong. His drives will only be running at half their potential if they're
both on the same channel.
Like this would be any different for SCSI or any other bus.

Actually, it is. An ATA bus (current SATA implementations or parallel) can
only have one active request at a time. A SCSI bus can have requests
outstanding, so there is very little wastage of bus bandwidth (though more
complex electronics are needed).
So what. An IDE channel can support two drives.

Yes, but not at the same time. Only one request can be active at any point
in time. So your drives will run at exactly half of their potential speed if
you only use one channel. This is the reason why doing any sort of IDE RAID
pretty much requires that you have one device per channel, otherwise you
take a big performance hit.

You're wrong, again. You should actually understand the topic before you
answer with such confidence :)

[...]
 
E

Eric Gisin

Michael Brown said:
Yes, but not at the same time. Only one request can be active at any point
in time. So your drives will run at exactly half of their potential speed if
you only use one channel. This is the reason why doing any sort of IDE RAID
pretty much requires that you have one device per channel, otherwise you
take a big performance hit.
It doesn't matter if you are doing sequential copies. IDE drives implement
read ahead and write behind, so the host is transfering to/from the cache and
both drives read and write at the same time. Similar argument for ROM to
writer on the same channel. The speed of the channel is enough for two
devices.
You're wrong, again. You should actually understand the topic before you
answer with such confidence :)
You are the one who doesn't understand. You can easily do CD duplication with
both drives on one UDMA-33 channel. This was what the prior poster asked.
 
R

Ron Reaugh

Michael Brown said:
Wrong. His drives will only be running at half their potential if they're
both on the same channel.

You are wrong.
Actually, it is. An ATA bus (current SATA implementations or parallel) can
only have one active request at a time.

So, drives do read ahead and write behind caching...hmm, I wonder why?
A SCSI bus can have requests
outstanding, so there is very little wastage of bus bandwidth (though more
complex electronics are needed).


Yes, but not at the same time.
Wrong.

Only one request can be active at any point
in time.

Just like SCSI. Define "active".
So your drives will run at exactly half of their potential speed if

Wrong.
 
E

Ed Light

Defrag both drives, pick a huge file, restart the os, and copy the file
between the drives while timing it, then delete the copy. Do this a few
times. Then put one drive on the other channel and do it again. You'll then
know if it makes a difference on your machine.

I suspect that since (most?) drives can't read or write at anywhere near the
rate of the modern 133 interface, it doesn't matter at all.

But I would love to read your results.

I have 2 drives on the same channel that max out at 40 mb/s and down to 25
mb/s on the insides of the platters. They can copy a large file between them
at 30 mb/s.


--
Ed Light

Smiley :-/
MS Smiley :-\

Send spam to the FTC at
(e-mail address removed)
Thanks, robots.
 
E

Ed Light

Ed Light said:
I have 2 drives on the same channel that max out at 40 mb/s and down to 25
mb/s on the insides of the platters. They can copy a large file between them
at 30 mb/s.

That's in Win XP Home.

--
Ed Light

Smiley :-/
MS Smiley :-\

Send spam to the FTC at
(e-mail address removed)
Thanks, robots.
 
R

Ron Reaugh

Ed Light said:
I have 2 drives on the same channel that max out at 40 mb/s and down to 25
mb/s on the insides of the platters. They can copy a large file between them
at 30 mb/s.

That's a typical result for two HDs on the same cable doing big file
sequential I/O. There is no interference.

However if both drives were doing intense small record random I/O then there
would be significant interference.
 
H

- HAL9000

Yes this is my experience also. I did similar real life experiments
too.

Although I would attribute the no cable difference result to waiting
on disk access time to intermix read and writes. I think what happens
is that you (1) quickly purge the buffer on one drive, (2) wait for
another disk revolution, (3) then purge the buffer again. This
sequence intermixed between two drives.

I used winXp as Ed did. Results may be way different for other
operating systems...

Forrest

Motherboard Help By HAL web site:
http://home.comcast.net/~hal-9000/
 
M

Michael Brown

Eric said:
It doesn't matter if you are doing sequential copies. IDE drives
implement read ahead and write behind, so the host is transfering
to/from the cache and both drives read and write at the same time.
Similar argument for ROM to writer on the same channel. The speed of
the channel is enough for two devices.

The cache and write buffers have (almost) no effect on the situation we're
talking about here: multi-gigabyte file moves between hard disks. The write
buffer on the drive will be 100% full all the time, and the read cache will
never have a chance to get ahead of the interface (as the interface is 2-3
times faster than the off-the-platter speed of the drive). The write request
will be sent to the drive, but the interface will stall until there is a
free block in the (write) cache. Likewise for reading. The request will come
in for a number of sectors. From the start of this request to the time when
the drive has finished sending the data, the interface is in use.

A timeline might help. The following assumptions are made:
1) Zero seek time
2) 50mbytes/sec sustained reading and writing (HDD manufacturer mbytes,
1mbyte = 1000000 bytes)
3) Sufficient data hasa been transferred already to fill up the write buffer
on the destination drive (~12mb or so)
4) The drive can transmit as it's read off the platters (ie: doesn't cache
then send)
5) Requests don't take any time to send.
6) Interface is ATA133

If 1, 3, 4 or 5 don't hold, it makes the analysis somewhat more complex, and
decreases the throughput on the bus. So I'm assuming best-case conditions
here. Times are in ms to 3sf.

One channel:
t = 0.000: 64kb (treating kb = 1024 bytes here) read request to drive 1. Bus
becomes allocated to drive 1.
t = 0.010: Drive 1 finishes reading sector 1 off the platters, and has sent
it.
t = 0.020: Drive 1 finishes reading sector 2 off the platters, and has sent
it.
t = 1.311: Drive 1 finishes reading sector 128 off the platters, and has
sent it. The bus is now free.
t = 1.311: 64kb write request to drive 2. Bus becomes allocated to drive 2.
Read request queued in HDD driver for drive 1.
t = 1.315: Drive 2 finishes receiving sector 1 from the interface. Begins
writing to platters. Begins reading sector 2 from interface.
t = 1.325: Drive 2 finishes writing sector 1 to platters.
t = 2.625: Drive 2 finishes writing sector 128 to the platters. The bus is
now free.
So, it has taken 2.625ms to transfer 64kb, giving drive-to-drive copy speed
of very slightly under 25 mbytes/sec. Actually, it's not usually quite this
bad, since some of the time the firmware is successful in reading ahead in
the right way. I was curious about this about a year ago, and wrote a small
assembler/FreePascal program to do the tests (bootdisk somewhat like
memtest86). In a benchmark between two Seagate 80gb drives (2mb cache) I
measured it to copy about 35 mbytes/sec. Two-channel copying was measured at
~50 mbytes sec (this was all done at the start of the drive IIRC). It's
quite possible that Seagate's firmware is just hopeless at reading ahead,
but since I'm not rich enough to have a whole lot of unused hard disks
floating around, I never got around to testing any others. You can probably
do much the same thing in linux doing a dd from /dev/hda to /dev/hdb or
similar (I always choose the hard way to do things :) ). I can probably whip
up a quick linux bootdisk (or try to find my original program) if you want
to test it yourself.

Two channels:
t = 0.000: 64kb (treating kb = 1024 bytes here) read request to drive 1 on
bus 1. Bus 1 becomes allocated to drive 1.
t = 0.010: Drive 1 finishes reading sector 1 off the platters, and has sent
it.
t = 0.020: Drive 1 finishes reading sector 2 off the platters, and has sent
it.
t = 1.311: Drive 1 finishes reading sector 128 off the platters, and has
sent it. Bus 1 is now free.
t = 1.311: 64kb write request to drive 2 on second channel. Bus 2 becomes
allocated to drive 2.
t = 1.311: 64kb read request to drive 1 on bus 1. Bus 1 becomes allocated to
drive 1.
t = 1.315: Drive 2 finishes receiving sector 1 from the interface. Begins
writing to platters. Begins reading sector 2 from interface.
t = 1.321: Drive 1 finishes reading sector 129 off the platters, and has
sent it.
t = 1.325: Drive 2 finishes writing sector 1 to platters.
t = 2.621: Drive 1 finishes reading sector 256 off the platters, and has
sent it. Bus 1 is now free.
t = 2.625: Drive 2 finishes writing sector 128 to the platters. Bus 2 is now
free.

So, now it's only taking 1.315ms to transfer 64kb, giving a drive-to-drive
copy speed of just under 50 mbytes/sec.

In SCSI, however, data is separated from request packets (as I understand
it, I haven't looked into it as much as ATA, mainly for financial reasons
:) ). Without going into a whole lot of timing detail, the transfer looks
more like:
Send read to drive 1. Bus is freed immediately after transfer. The drive
begins reading data into an internal buffer.
Drive 1 sends a read acknowledge back to the controller, along with the data
(at full bus speed, from the buffer).
Send read to drive 1. Bus is freed immediately after transfer. The drive
begins reading data into an internal buffer.
Send write to drive 2, along with data. Data is buffered into internal
buffer, and the bus is freed immediately after the transfer of the request.
The drive begins writing data onto the platters.
Drive 1 sends a read acknowledge back to the controller, along with the data
(at full bus speed, from the buffer).
Drive 2 sends a write acknowledge back to the controller.
etc etc

With a bit of sensible programming, the writes are buffered on the CPU side
until the drive reports that the request has been completed. Only then is
the next write request sent out, which is transferred at full bus speed into
the write buffer of the hard disk. In other words, all transfers are done at
full bus speed, with no stalling, and the bus is freed immediately after the
request has been sent (unlike ATA). This is the main advantage of SCSI, and
the reason why you can hang a stupid number of devices off a single channel
without having any performance issues.

Finally, I'm not sure exactly how the various command queuing techniques
that are hopefully going to become part of SATA work. I hope that they
operate along similar lines to what I described for the SCSI, as this would
get rid of one of the disadvantages of ATA.

The whole analysis changes, of course, when you add in significant seek
times. The buffers play a much larger role in saving performance (otherwise
the bus is stalled for ~10ms, OUCH!) here. But this wasn't what the OP was
asking about, so wasn't what I was answering about either.
You are the one who doesn't understand. You can easily do CD
duplication with both drives on one UDMA-33 channel. This was what
the prior poster asked.

Actually, the prior poster was asking about copying multi-gigabyte files
between hard disks. CD writers top out at about 9 mbytes/sec, so even mode 4
PIO is nearly fast enough for CD duplication.
 
M

Michael Brown

Michael Brown wrote:
[...]

Sorry about this post. I missed the x-post to the
comp.sys.ibm.pc.hardware.storage (I "live" in a.c.h.o), and seeing the
unfamiliar name and the non-backed-up responses, I posted with rather more
of snippy attitude than should have. However, I still believe my responses
are still mostly correct (except the one about operating at exactly half
speed, dunno why I said that ...): see my response to Eric Gisin.
 
M

Michael Brown

A few corrections on reading through it again ...

Michael said:
The cache and write buffers have (almost) no effect on the situation
we're talking about here: multi-gigabyte file moves between hard
disks. The write buffer on the drive will be 100% full all the time,

I should have probably mentioned that this was assuming that the hard drive
was typical, not ideal (as below). "Typical" hard drives have slightly lower
write speeds than read speeds, so the write buffer generally gets to 100%
full during "streaming" disk writes. There's a whole great big mess at the
start with buffering and read-ahead on a single-channel setup, but that
usually gets sorted out after a few hundred meg.
and the read cache will never have a chance to get ahead of the
interface (as the interface is 2-3 times faster than the
off-the-platter speed of the drive).

Again, I was talking about typical drives, not theoretical drives. A
theoretical drive would be able to get 2mb (or whatever the buffer size is)
ahead of the actual read point by reading in the data while the write drive
is stalling (either due to being on the same channel or because writing is
marginally slower than reading). However, my tests seem to indicate that
this does not happen, or at least it does not happen as well as it should
(eg: the drive might not automatically seek ahead to the next track,
creating a bursty dataflow).

[...]
 
F

Folkert Rienstra

Michael Brown said:
Wrong. His drives will only be running at half their potential if they're
both on the same channel.


Actually, it is. An ATA bus (current SATA implementations or parallel) can
only have one active request at a time. A SCSI bus can have requests
outstanding, so there is very little wastage of bus bandwidth (though more
complex electronics are needed).


Yes, but not at the same time. Only one request can be active at any point
in time. So your drives will run at exactly half of their potential speed if
you only use one channel. This is the reason why doing any sort of IDE RAID
pretty much requires that you have one device per channel, otherwise you
take a big performance hit.


You're wrong, again.
You should actually understand the topic before you
answer with such confidence :)

LOL, what can I say, one has it or one doesn't.

Guess again in what camp you are.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top