svn commit: r303627 - head/sys/vm

Alan Cox alc at FreeBSD.org
Mon Aug 1 17:25:09 UTC 2016


Author: alc
Date: Mon Aug  1 17:25:07 2016
New Revision: 303627
URL: https://svnweb.freebsd.org/changeset/base/303627

Log:
  Restore the historical behavior of "sysctl vm.swap_idle_enabled=1".  Prior
  to r254304, we had separate functions for reclamation and laundering
  (vm_pageout_scan) versus updating usage information, i.e., "reference
  bits", on active pages (vm_pageout_page_stats), and we only performed
  vm_req_vmdaemon(VM_SWAP_IDLE) if vm_pages_needed was true.  However, since
  r254303, if vm_swap_idle_enabled was "1", we have performed
  vm_req_vmdaemon(VM_SWAP_IDLE) regardless of whether we are short of free
  pages.  This was unintended and too aggressive, so I suspect no one uses
  this feature.  With this change, we restore the historical behavior and
  only perform vm_req_vmdaemon(VM_SWAP_IDLE) when we are short of free
  pages.
  
  Reviewed by:	kib, markj

Modified:
  head/sys/vm/vm_pageout.c

Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c	Mon Aug  1 17:02:21 2016	(r303626)
+++ head/sys/vm/vm_pageout.c	Mon Aug  1 17:25:07 2016	(r303627)
@@ -1289,9 +1289,10 @@ relock_queue:
 	vm_pagequeue_unlock(pq);
 #if !defined(NO_SWAPPING)
 	/*
-	 * Idle process swapout -- run once per second.
+	 * Idle process swapout -- run once per second when we are reclaiming
+	 * pages.
 	 */
-	if (vm_swap_idle_enabled) {
+	if (vm_swap_idle_enabled && pass > 0) {
 		static long lsec;
 		if (time_second != lsec) {
 			vm_req_vmdaemon(VM_SWAP_IDLE);


More information about the svn-src-head mailing list