git: kernel - Fix swapcache inefficiency related to the PQ_INACTIVE queue

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Jan 2 23:42:24 PST 2012


commit 64949baad746ba8f3a957a675ce437b2f4529a24
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Jan 2 21:25:47 2012 -0800

    kernel - Fix swapcache inefficiency related to the PQ_INACTIVE queue
    
    * The swapcache was still coded with the assumption of just one
      PQ_INACTIVE queue.  Even though it scans all 256 queues the
      end-of-queue code could trigger early and prevent later queue
      indices from being scanned, causing a large percentage of eligible
      VM pages to not get written to the swapcache.
    
      Now all queues must signal that they have reached the end before the
      code sets the end-of-queue condition and loops up to the 1/10 second
      sleep.
    
    * The full count/scount was being applied to each queue individually instead
      of to all queues uniformly, allowing more pages to be laundered than
      desired.  Divide out and add a bit of slop.

Summary of changes:
 sys/vm/vm_pageout.c   |    8 ++--
 sys/vm/vm_swapcache.c |  131 ++++++++++++++++++++++++++++++++----------------
 2 files changed, 91 insertions(+), 48 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/64949baad746ba8f3a957a675ce437b2f4529a24


-- 
DragonFly BSD source repository





More information about the Commits mailing list