svn commit: r286970 - head/sys/vm

Ryan Stone rstone at FreeBSD.org
Thu Aug 20 20:28:52 UTC 2015


Author: rstone
Date: Thu Aug 20 20:28:51 2015
New Revision: 286970
URL: https://svnweb.freebsd.org/changeset/base/286970

Log:
  Prevent ticks rollover from preventing vm_lowmem event
  
  Currently vm_pageout_scan() uses a ticks-based scheme to rate-limit
  the number of times that the vm_lowmem event will happen.  However
  if no events happen for long enough for ticks to roll over, this
  leaves us in a long window in which vm_lowmem events will not
  happen.
  
  Replace the use of ticks with time_t to prevent rollover from ever
  being an issue.
  
  Reviewed by:	ian
  MFC after:	3 weeks
  Sponsored by:	EMC / Isilon Storage Division
  Differential Revision:	https://reviews.freebsd.org/D3439

Modified:
  head/sys/vm/vm_pageout.c

Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c	Thu Aug 20 19:39:15 2015	(r286969)
+++ head/sys/vm/vm_pageout.c	Thu Aug 20 20:28:51 2015	(r286970)
@@ -93,6 +93,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sdt.h>
 #include <sys/signalvar.h>
 #include <sys/smp.h>
+#include <sys/time.h>
 #include <sys/vnode.h>
 #include <sys/vmmeter.h>
 #include <sys/rwlock.h>
@@ -171,7 +172,7 @@ static int vm_pageout_update_period;
 static int defer_swap_pageouts;
 static int disable_swap_pageouts;
 static int lowmem_period = 10;
-static int lowmem_ticks;
+static time_t lowmem_uptime;
 
 #if defined(NO_SWAPPING)
 static int vm_swap_enabled = 0;
@@ -1034,7 +1035,7 @@ vm_pageout_scan(struct vm_domain *vmd, i
 	 * some.  We rate limit to avoid thrashing.
 	 */
 	if (vmd == &vm_dom[0] && pass > 0 &&
-	    (ticks - lowmem_ticks) / hz >= lowmem_period) {
+	    (time_uptime - lowmem_uptime) >= lowmem_period) {
 		/*
 		 * Decrease registered cache sizes.
 		 */
@@ -1045,7 +1046,7 @@ vm_pageout_scan(struct vm_domain *vmd, i
 		 * drained above.
 		 */
 		uma_reclaim();
-		lowmem_ticks = ticks;
+		lowmem_uptime = time_uptime;
 	}
 
 	/*


More information about the svn-src-all mailing list