Big physically contiguous mbuf clusters

John-Mark Gurney jmg at funkthat.com
Wed Jan 29 22:27:19 UTC 2014


Adrian Chadd wrote this message on Wed, Jan 29, 2014 at 14:21 -0800:
> On 29 January 2014 10:54, Garrett Wollman <wollman at csail.mit.edu> wrote:
> > Resolved: that mbuf clusters longer than one page ought not be
> > supported.  There is too much physical-memory fragmentation for them
> > to be of use on a moderately active server.  9k mbufs are especially
> > bad, since in the fragmented case they waste 3k per allocation.
> 
> I've been wondering whether it'd be feasible to teach the physical
> memory allocator about >page sized allocations and to create zones of
> slightly more physically contiguous memory.
> 
> For servers with lots of memory we could then keep these around and
> only dip into them for temporary allocations (eg not VM pages that may
> be held for some unknown amount of time.)
> 
> Question is - can we enforce that kind of behaviour?

It shouldn't be too hard to do...  Since everything pretty much goes
through uma we can adopt a scheme similar to what Solaris does (read
Magazines and Vmem: Extending the Slab Allocator to Many CPUs and
Arbitrary Resources)...  Instead of dealing w/ page size allocations,
everything is larger, say 16KB, and broken down from there...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-net mailing list