Coalescing pipe allocation

Robert Watson rwatson at freebsd.org
Tue Feb 3 11:13:16 PST 2004


On Tue, 3 Feb 2004, Matthew Dillon wrote:

> :...
> :Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
> :robert at fledge.watson.org      Senior Research Scientist, McAfee Research
> 
>     It seems to me that realizing the lion's share of the benefit requires 
>     only that you cache the KVM reservation for a pipe buffer, and that
>     you perhaps separately cache pipe meta data structures.  I think
>     you would only get a smidgen more performance by caching the entire
>     pipe pair, so it seems a bit overkill to do that.  By my quick read
> it
>     looks like it would be trivial to create a small per-cpu (UMA based
> for
>     you guys, globaldata based for me) cache.  A hysteresis of 4 ought
> to
>     be sufficient. 

Sounds like we agree (see earlier e-mails).  However, I wanted to get the
structural change to combine pipes into a single object done first, and
settled.  However, the current pipe model allows for a small number of
"big pipes" and a larger number of "small pipes", with a fall-back from
big to small pipes when you run out of big pipes (pretty quickly if you
have a parallel build going on).  Deferring the buffer allocation until
it's needed helps conserve big pipes for where they are actually used,
which will give you a benefit beyond amortizing the cost of buffer
allocation. 

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert at fledge.watson.org      Senior Research Scientist, McAfee Research




More information about the freebsd-current mailing list