Messages in this thread | | | Date | Thu, 13 Dec 2007 13:48:18 -0500 | From | Mark Lord <> | Subject | Re: QUEUE_FLAG_CLUSTER: not working in 2.6.24 ? |
| |
Mark Lord wrote: > (resending with corrected email address for Jens) > > Jens, > > I'm experimenting here with trying to generate large I/O through libata, > and not having much luck. > > The limit seems to be the number of hardware PRD (SG) entries permitted > by the driver (libata:ata_piix), which is 128 by default. > > The problem is, the block layer *never* sends an SG entry larger than > 8192 bytes, > and even that size is exceptionally rare. Nearly all I/O segments are > 4096 bytes, > so I never see a single I/O larger than 512KB (128 * 4096). > > If I patch various parts of block and SCSI, this limit doesn't budge, > but when I change the hardware PRD limit in libata, it scales by exactly > whatever I set the new value to. This tells me that adjacent I/O segments > are not being combined. > > I thought that QUEUE_FLAG_CLUSTER (aka. SCSI host .use_clustering=1) should > result in adjacent single pages being combined into larger physical > segments? > > This is x86-32 with latest 2.6.24-rc*. > I'll re-test on older kernels next. ...
Problem confirmed. 2.6.23.8 regularly generates segments up to 64KB for libata, but 2.6.24 uses only 4KB segments and a *few* 8KB segments.
???
| |