Messages in this thread | | | Date | Sat, 23 May 2009 21:54:05 +0200 | From | Jens Axboe <> | Subject | Re: PIPE_SIZE aspects |
| |
On Fri, May 22 2009, Ad van den Broek wrote: > I searched the net regarding PIPE_SIZE aspects. > This is what I found: > > * The constant PIPE_SIZE > establishes the number of bytes allocated for a pipe > (the size of the pipe buffer) > > * The default of PIPE_SIZE (in Linux 2.4) is PAGE_SIZE. > * The default of PIPE_SIZE (in Linux 2.6) is 64K. > > * PAGE_SIZE (in Linux 2.4) is CPU/hw depending, > may not be changed and is 4K for x86. > * PAGE_SIZE (in Linux 2.6) is 64K.
No changes for PAGE_SIZE, it's still hw dependent (and, one some archs, dependent on kernel config).
> * PIPE_SIZE can be changed in Linux 2.4, > but it should be NOT larger than PAGE_SIZE > or a patch should be implemented > > I found a patch (I believe the author is Julian Bradfield) at > http://lse.sourceforge.net/pipe/2.4.9-pipe.patch > and this patch is modified by Manfred Spraul which version can be found at > http://linuxperf.sourceforge.net/patches/2.4.13-largepipe.patch > It is tested with PIPE_SIZE from 1 upto 2,4,8 pages. > and the result is at http://lse.sourceforge.net/pipe/pipe-report.txt > > > My questions: > Is the above info correct ? > Is the large pipe patch still correct for last 2.4.x versions ? > Is such a patch also required/possible in Linux 2.6 > to allow PIPE_SIZE > PAGE_SIZE or is that different in 2.6 ?
2.6 uses an array of pages for the pipe. So while the x86 page size is still 4kb, a pipe is by default 64kb because the array holds 16 pages.
I wrote a patch to set/get the pipe size for 2.6 if you are interested. Find it here:
http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=24547ac4d97bebb58caf9ce58bd507a95c812a3f
-- Jens Axboe
| |