kernel - Add swap block allocation iterator
authorMatthew Dillon <dillon@apollo.backplane.com>
Sun, 3 Mar 2013 01:03:17 +0000 (17:03 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 3 Mar 2013 01:03:17 +0000 (17:03 -0800)
commit7fa8d3ba49288bc90bd4d3f654520d236f8a999b
treee2bdae36de1c0466f03f1b04682804619736458b
parent1e1efe396657e3342a290f9a034b71e61ddee9e3
kernel - Add swap block allocation iterator

* Instead of allocating the first available block the swap allocator
  now has an iterator and attempts to allocate a block near the iterator.
  On failure the iterator resets to the beginning of swap (0) and it
  tries again.

* This theoretically should result in more linearized allocations of
  swap space, allowing the pageout daemon to flush memory to a
  hard-drive-based swap at much higher bandwidth.

* Greatly improves poudriere when using stressful memory parameters,
  at least in the first pass.

* There are still some obvious linearity issues that can occur once
  the iterator recycles back to 0 which need to be addressed.  However,
  this change is certainly not going to be worse and should
  prevent degenerative swap situations where performance winds up
  being permanently bad due to fragmented data laid down earlier that
  is never paged back into memory.
sys/kern/subr_blist.c
sys/sys/blist.h
sys/vm/swap_pager.c