On Thu, May 18, 2000 at 01:23:16AM +0100, Alan Cox wrote:
> > attached to a QLogic 2200 Fibre Channel controller.  I have applied
> > the SGI Raw I/O patch to the 2.2.14 kernel running on a Compaq ES40
> 
> Dunno much at the SGI one, but Stephen Tweedie did stuff to do raw I/O
> from userspace - DMAing from user pages.
> 
> > with Linux using a 1MB block size is around 60MB/s.  This is about
> > 
> > The number of requests serviced increases by two.  If I increase the
> > block size to 1024KB, the requests serviced increases by four.  It is
> > obvious the block is getting split up into 256KB chunks.  My question
> > is, where does the request get split?
> 
> Probably buy the scsi layer. The kernel gets a list of pages to write to the
> controller and the PC lacks an IOMMU. Thus we send a scatter gather list
> down to the controller. That sglist needless to say is often limited in
> length by the hardware. In this case the limit seems to be 892 (with the
> qlogicfc driver on a 32bit box). That would imply you can do more than 
> 256K segments so Im puzzled where the limit you hit is
> 

This actually turned out to be where it was.  In the QLogic driver (a
modified driver by Compaq which originated from QLogic, not the one in
the kernel) there was a constant for the maximum number of sg entries
and this was set to 32.  I'm assuming the 256KB came from 8192*32
since the page size on Alpha is 8KB.  So, I increased that to 512 and
tried it again.  Now I'm able to get >= 90MB/s using dd on the raw
device.  Cool deal!  I'll have to try the same tests with the Steven
Tweedie Raw I/O patch instead of the SGI stuff to see if there is a
difference.


BAPper

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]

Reply via email to