commit 64949baad746ba8f3a957a675ce437b2f4529a24
Author: Matthew Dillon <dillon@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