git: kernel - Add swap block allocation iterator

Matthew Dillon dillon at
Sat Mar 2 17:17:03 PST 2013

commit 7fa8d3ba49288bc90bd4d3f654520d236f8a999b
Author: Matthew Dillon <dillon at>
Date:   Sat Mar 2 17:03:17 2013 -0800

    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.

Summary of changes:
 sys/kern/subr_blist.c | 53 +++++++++++++++++++++++++++++++++++++++------------
 sys/sys/blist.h       |  1 +
 sys/vm/swap_pager.c   | 11 ++++++++++-
 3 files changed, 52 insertions(+), 13 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list