Author: rstone
Date: Thu Sep 17 17:09:03 2015
New Revision: 287922
URL: https://svnweb.freebsd.org/changeset/base/287922

Log:
  MFC r286970:
  
    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:
  stable/10/sys/vm/vm_pageout.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/vm/vm_pageout.c
==============================================================================
--- stable/10/sys/vm/vm_pageout.c       Thu Sep 17 17:00:36 2015        
(r287921)
+++ stable/10/sys/vm/vm_pageout.c       Thu Sep 17 17:09:03 2015        
(r287922)
@@ -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>
@@ -170,7 +171,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;
@@ -932,7 +933,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.
                 */
@@ -943,7 +944,7 @@ vm_pageout_scan(struct vm_domain *vmd, i
                 * drained above.
                 */
                uma_reclaim();
-               lowmem_ticks = ticks;
+               lowmem_uptime = time_uptime;
        }
 
        /*
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to