Re: [SUGGESTION]: drop virtual merge accounting in I/O requests

From: Mikulas Patocka
Date: Sun Jul 13 2008 - 19:53:30 EST


On Sun, 13 Jul 2008, Andi Kleen wrote:

David Miller wrote:
From: Andi Kleen <andi@xxxxxxxxxxxxxx>
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/