cvs commit: src/lib/libc/stdlib malloc.c

Jason Evans jasone at FreeBSD.org
Tue Jan 24 20:21:23 PST 2006


jasone      2006-01-25 04:21:22 UTC

  FreeBSD src repository

  Modified files:
    lib/libc/stdlib      malloc.c 
  Log:
  If no coalesced exact-fit small regions are available, but delayed exact-
  fit regions are available, use the delayed regions in LIFO order, in order
  to increase locality of reference.  We might expect this to cause delayed
  regions to be removed from the delay ring buffer more often (since we're
  now re-using more recently buffered regions), but numerous tests indicate
  that the overall impact on memory usage tends to be good (reduced
  fragmentation).
  
  Re-work arena_frag_reg_alloc() so that when large free regions are
  exhausted, it uses small regions in a way that favors contiguous allocation
  of sequentially allocated small regions.  Use arena_frag_reg_alloc() in
  this capacity, rather than directly attempting over-fitting of small
  requests when no large regions are available.
  
  Remove the bin overfit statistic, since it is no longer relevant due to
  the arena_frag_reg_alloc() changes.
  
  Do not specify arena_frag_reg_alloc() as an inline function.  It is too
  large to benefit much from being inlined, and it is also called in two
  places, only one of which is in the critical path (the other call bloated
  arena_reg_alloc()).
  
  Call arena_coalesce() for a region before caching it with
  arena_mru_cache().
  
  Add assertions that detect the attempted caching of adjacent free regions,
  so that we notice this problem when it is first created, rather than in
  arena_coalesce(), when it's too late to know how the problem arose.
  
  Reported by:    Hans Blancke
  
  Revision  Changes    Path
  1.104     +184 -171  src/lib/libc/stdlib/malloc.c


More information about the cvs-all mailing list