cvs commit: src/sys/vm vm_phys.c vm_phys.h

Alan Cox alc at FreeBSD.org
Sun Jun 10 00:49:17 UTC 2007


alc         2007-06-10 00:49:16 UTC

  FreeBSD src repository

  Added files:
    sys/vm               vm_phys.c vm_phys.h 
  Log:
  Add a new physical memory allocator.  However, do not yet connect it
  to the build.
  
  This allocator uses a binary buddy system with a twist.  First and
  foremost, this allocator is required to support the implementation of
  superpages.  As a side effect, it enables a more robust implementation
  of contigmalloc(9).  Moreover, this reimplementation of
  contigmalloc(9) eliminates the acquisition of Giant by
  contigmalloc(..., M_NOWAIT, ...).
  
  The twist is that this allocator tries to reduce the number of TLB
  misses incurred by accesses through a direct map to small, UMA-managed
  objects and page table pages.  Roughly speaking, the physical pages
  that are allocated for such purposes are clustered together in the
  physical address space.  The performance benefits vary.  In the most
  extreme case, a uniprocessor kernel running on an Opteron, I measured
  an 18% reduction in system time during a buildworld.
  
  This allocator does not implement page coloring.  The reason is that
  superpages have much the same effect.  The contiguous physical memory
  allocation necessary for a superpage is inherently colored.
  
  Finally, the one caveat is that this allocator does not effectively
  support prezeroed pages.  I hope this is temporary.  On i386, this is
  a slight pessimization.  However, on amd64, the beneficial effects of
  the direct-map optimization outweigh the ill effects.  I speculate
  that this is true in general of machines with a direct map.
  
  Approved by:    re
  
  Revision  Changes    Path
  1.1       +689 -0    src/sys/vm/vm_phys.c (new)
  1.1       +52 -0     src/sys/vm/vm_phys.h (new)


More information about the cvs-all mailing list