PIPE_BUFFERS - was Re: What to expect after 0.99.8

From: Luck, Tony
Date: Thu Oct 06 2005 - 13:45:04 EST


On Tue, Oct 04, 2005 at 05:10:18PM -0700, Linus Torvalds wrote:
> Just for performance reasons, I ended up doing merging anyway, so in fact
> regardless of how you write the current pipe buffer size is up to 16
> pages.

s/git@xxxxxxxxxxxxxxx/linux-kernel@xxxxxxxxxxxxxxx/ in the Cc: list, this
isn't a GIT issue.

Should that:

#define PIPE_BUFFERS (16)

really be a function of PAGE_SIZE? Many systems have a 4K page size
so they get 64K of buffering per pipe. But ia64 defaults to 16K page
size, so pipes are suddenly 256K ... and with a 64K page size we
have 1MB per pipe.

So perhaps:

#define PIPE_BUFFERS (65536 / PAGE_SIZE)

But that would leave PIPE_BUFFERS as "1" on a 64K page size system, is
there any double-buffering benefit from having more than one page on the
pipe list? If so, then something like:

#define PIPE_BUFFERS min(2, (65536 / PAGE_SIZE))

but then gcc is unhappy using the super-type safe "min" in the
places that use PIPE_BUFFERS ... so we'd end up with:

#define PIPE_BUFFERS ((65536 / PAGE_SIZE) > 1 ? (65536 / PAGE_SIZE) : 2)

-Tony
-
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/