Messages in this thread | | | Date | Sun, 13 Jul 2008 19:53:01 -0400 (EDT) | From | Mikulas Patocka <> | Subject | Re: [SUGGESTION]: drop virtual merge accounting in I/O requests |
| |
On Sun, 13 Jul 2008, Andi Kleen wrote:
> David Miller wrote: >> From: Andi Kleen <andi@firstfloor.org> >> Date: Sun, 13 Jul 2008 15:50:55 +0200 >> >>> Still I would expect that modern IO controllers are typically fast >>> enough at processing SG lists that it shouldn't matter much. >> >> I know it matters a lot on sparc64 ESP scsi controllers. >> >> You can only have one address/len pair DMA'ing at a time and you have >> to service an interrupt to load in the the next DMA sg elements into >> the chips registers. >> >> Merging is essentially a must for performance on those cards. > > Well right now your setup breaks all controllers with "weird requirements" > like 64k DMA or similar. You'll need to find some way to turn off BIO > merge for those at least. > > Perhaps this needs to be really a block queue attribute instead of a global? > > -Andi
There is no need to turn BIO merge off --- the problem is caused by accounting of BIO merging in block layer, not by BIO merging itself.
Just do #define BIO_VMERGE_BOUNDARY 0, and that disables the accounting, but leaves merging as it is.
Mikulas
| |