cvs commit: src/sys/vm swap_pager.c swap_pager.h vm_glue.c vm_pageout.c vm_pageout.h

Poul-Henning Kamp phk at FreeBSD.org
Sun Aug 3 06:35:35 PDT 2003


phk         2003/08/03 06:35:31 PDT

  FreeBSD src repository

  Modified files:
    sys/vm               swap_pager.c swap_pager.h vm_glue.c 
                         vm_pageout.c vm_pageout.h 
  Log:
  Change the layout policy of the swap_pager from a hardcoded width
  striping to a per device round-robin algorithm.
  
  Because of the policy of not attempting to retain previous swap
  allocation on page-out, this means that a newly added swap device
  almost instantly takes its 1/N share of the I/O load but it takes
  somewhat longer for it to assume it's 1/N share of the pages if there
  is plenty of space on the other devices.
  
  Change the 8G total swapspace limitation to 8G per device instead
  by using a per device blist rather than one global blist.  This
  reduces the memory footprint by 75% (typically a couple hundred
  kilobytes) for the common case with one swapdevice but NSWAPDEV=4.
  
  Remove the compile time constant limit of number of swap devices,
  there is no limit now.  Instead of a fixed size array, store the
  per swapdev structure in a TAILQ.
  
  Total swap space is still addressed by a 32 bit page number and
  therefore the upper limit is now 2^42 bytes = 16TB (for i386).
  
  We still do not allocate the first page of each device in order to
  give some amount of protection to any bsdlabel at the start of the
  device.
  
  A new device is appended after the existing devices in the swap space,
  no attempt is made to fill in holes left behind by swapoff (this can
  trivially be changed should it ever become a problem).
  
  The sysctl vm.nswapdev now reflects the number of currently configured
  swap devices.
  
  Rename vm_swap_size to swap_pager_avail for consistency with other
  exported names.
  
  Change argument type for vm_proc_swapin_all() and swap_pager_isswapped()
  to be a struct swdevt pointer rather than an index.
  
  Not changed: we are still using blists to manage the free space,
  but since the swapspace is no longer fragmented by the striping
  different resource managers might fare better.
  
  Revision  Changes    Path
  1.213     +125 -149  src/sys/vm/swap_pager.c
  1.47      +3 -2      src/sys/vm/swap_pager.h
  1.181     +1 -1      src/sys/vm/vm_glue.c
  1.240     +2 -2      src/sys/vm/vm_pageout.c
  1.37      +2 -1      src/sys/vm/vm_pageout.h


More information about the cvs-src mailing list