svn commit: r209651 - head/sys/vm
Alan Cox
alc at FreeBSD.org
Fri Jul 2 20:56:22 UTC 2010
Author: alc
Date: Fri Jul 2 20:56:22 2010
New Revision: 209651
URL: http://svn.freebsd.org/changeset/base/209651
Log:
Push down the acquisition of the page queues lock into
vm_pageout_page_stats(). In particular, avoid acquiring the page
queues lock unless iterating over the active queue.
Modified:
head/sys/vm/vm_pageout.c
Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c Fri Jul 2 19:59:18 2010 (r209650)
+++ head/sys/vm/vm_pageout.c Fri Jul 2 20:56:22 2010 (r209651)
@@ -1355,7 +1355,6 @@ vm_pageout_page_stats()
static int fullintervalcount = 0;
int page_shortage;
- mtx_assert(&vm_page_queue_mtx, MA_OWNED);
page_shortage =
(cnt.v_inactive_target + cnt.v_cache_max + cnt.v_free_min) -
(cnt.v_free_count + cnt.v_inactive_count + cnt.v_cache_count);
@@ -1363,6 +1362,7 @@ vm_pageout_page_stats()
if (page_shortage <= 0)
return;
+ vm_page_lock_queues();
pcount = cnt.v_active_count;
fullintervalcount += vm_pageout_stats_interval;
if (fullintervalcount < vm_pageout_full_stats_interval) {
@@ -1448,6 +1448,7 @@ vm_pageout_page_stats()
VM_OBJECT_UNLOCK(object);
m = next;
}
+ vm_page_unlock_queues();
}
/*
@@ -1569,9 +1570,7 @@ vm_pageout()
if (error && !vm_pages_needed) {
mtx_unlock(&vm_page_queue_free_mtx);
pass = 0;
- vm_page_lock_queues();
vm_pageout_page_stats();
- vm_page_unlock_queues();
continue;
}
}
More information about the svn-src-head
mailing list