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