cvs commit: src/sys/kern subr_param.c sys_pipe.c src/sys/sys pipe.h

Alan Cox alc at cs.rice.edu
Sat Mar 27 12:22:16 PST 2004


On Sat, Mar 27, 2004 at 11:50:23AM -0800, Alan Cox wrote:
> alc         2004/03/27 11:50:23 PST
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/kern             subr_param.c sys_pipe.c 
>     sys/sys              pipe.h 
>   Log:
>   Revise the direct or optimized case to use uiomove_fromphys() by the reader
>   instead of ephemeral mappings using pmap_qenter() by the writer.  The
>   writer is still, however, responsible for wiring the pages, just not
>   mapping them.  Consequently, the allocation of KVA for the direct case is
>   unnecessary.  Remove it and the sysctls limiting it, i.e.,
>   kern.ipc.maxpipekvawired and kern.ipc.amountpipekvawired.  The number
>   of temporarily wired pages is still, however, limited by
>   kern.ipc.maxpipekva.
>   
>   Note: On platforms lacking a direct virtual-to-physical mapping,
>   uiomove_fromphys() uses sf_bufs to cache ephemeral mappings.  Thus,
>   the number of available sf_bufs can influence the performance of pipes
>   on platforms such i386.  Surprisingly, I saw the greatest gain from this
>   change on such a machine: lmbench's pipe bandwidth result increased from
>   ~1050MB/s to ~1850MB/s on my 2.4GHz, 400MHz FSB P4 Xeon.
>   
>   Revision  Changes    Path
>   1.62      +1 -6      src/sys/kern/subr_param.c
>   1.171     +18 -60    src/sys/kern/sys_pipe.c
>   1.27      +0 -2      src/sys/sys/pipe.h

I would appreciate receiving before and after lmbench bw_pipe results
from others.  Obviously, I have P4 results.  I also have amd64 results.

Thanks,
Alan


More information about the cvs-src mailing list