IDE Disk speed enhancements

J.J. Burgess (92jjb@eng.cam.ac.uk)
Thu, 18 Apr 1996 00:53:20 +0100 (BST)


My question is do 2 simultaneous 256k IDE requests to ide0 & ide1 get any
chance of any parallelism, or does each request continue until completion?

Is it possible to issue 2 simultaneous disk transfers, especially on 2
channel Triton DMA controllers? If so shouldn't the low level disk code
aggresively try to execute transfers on drives simultaneously to get a
speed improvement. This may not help speed small requests, which hopefully
get fulfilled by drive read-ahead buffers, but could it help when large
requests are being done e.g. 128k transfers which almost definately have
to block as the drive gets more data. SCSI manages this with its
disconnect protocol quite well, i.e. a drive (I think) can disconnect half
way through a large transfer to allow its caches to fill up again so that
it can burst the data across the bus.

In this case (i'm particularly thinking about things like iozone/hdparm
benchmark on raid-0 md devices) Would it be better to split the requests
down to blocks which are more manageable by the drive e.g. 32k/64k, so
that transfers my occur simultaneously then on the 2 drive channels.
(assuming there is another equally large request for the other drive, in
the disk queue at the time)

Perhaps this is too much of a special case to be of any real importance,
although if md becomes more popular, it will become more common. It is
this aparent single tasking of access which slows the performance of
md-raid0 with a large chunk size of 64k+. Although it is quite possible
that the buffer cache / read-ahead etc. in fact only issue a single
command to a single md device at one time, with smaller chunk sizes the
disk access does indeed seem to be improved well with both drives
transfering data together.

Thinking about it, this could be a direct consequence of the limit imposed
be ll_rw_blk.c of 240-something blocks in any one transfer in a single
request. Hence 128k is the biggest amount of data any of the lower layers
have to work with hence md only issues commands which go to a single
drive. (I know 128k+ stripes are a little silly, but the way things change
with computers, this may also change)

This may also change with the new md035 code which drastically changes
the kernel-md request interface.

Thanks.

.. . . . . . . . . . . . . . ..
:: : : Jon Burgess 01223-461907 : : ::
:: : jjb1003@cam.ac.uk : : ::
:: : : : : : : : : : : : : : ::