Messages in this thread |  | | | Date | Thu, 18 Apr 1996 00:53:20 +0100 (BST) | | From | "J.J. Burgess" <> | | Subject | IDE Disk speed enhancements |
| |
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 : : :: :: : : : : : : : : : : : : : ::
|  |