Thread (104 messages) 104 messages, 20 authors, 2004-04-03

Re: [PATCH] speed up SATA

From: Jeff Garzik <hidden>
Date: 2004-03-27 23:36:35
Also in: lkml

Bartlomiej Zolnierkiewicz wrote:
On Sunday 28 of March 2004 00:04, Stefan Smietanowski wrote:
quoted
Hi Jeff.

quoted
The "lba48" feature in ATA allows for addressing of sectors > 137GB, and
also allows for transfers of up to 64K sector, instead of the
traditional 256 sectors in older ATA.

libata simply limited all transfers to a 200 sectors (just under the 256
sector limit).  This was mainly being careful, and making sure I had a
solution that worked everywhere.  I also wanted to see how the iommu S/G
stuff would shake out.

Things seem to be looking pretty good, so it's now time to turn on
lba48-sized transfers.  Most SATA disks will be lba48 anyway, even the
ones smaller than 137GB, for this and other reasons.

With this simple patch, the max request size goes from 128K to 32MB...
so you can imagine this will definitely help performance.  Throughput
goes up.  Interrupts go down.  Fun for the whole family.

What about latency?

What about recently discussed PRD table "limit" of 256 entries?

AFAIR these are the reasons why IDE driver is currently
limiting max request size to 1024K on LBA48 disks.
That's the main limitation on request size right now...  libata limits 
S/G table entries to 128[1], so a perfectly aligned, fully merged 
transfer will top out at 8MB.  You don't see that unless you're on a 
totally quiet machine with tons of free, contiguous pages.  So in 
practice it winds up being much smaller, the more loaded the system gets 
(and pagecache gets fragmented).

Latency definitely changes for the default case, but remember that a lot 
of that is writeback, or streaming writes.  Latency-sensitive 
applications already know how to send small or no-wait I/Os, because 
standard pagecache writeback latency is highly variable at best :)

	Jeff


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help