on 20/08/2013 02:54 Jeff Roberson said the following:
> Author: jeff
> Date: Mon Aug 19 23:54:24 2013
> New Revision: 254544
> URL: http://svnweb.freebsd.org/changeset/base/254544
> 
> Log:
>    - Increase the active lru refresh interval to 10 minutes.  This has been
>      shown to negatively impact some workloads and the goal is only to
>      eliminate worst case behaviors for very long periods of paging
>      inactivity.  Eventually we should determine a more complex scaling
>      factor for this feature.
>    - Rate limit low memory callback handlers to limit thrashing.  Set the
>      default to 10 seconds.

I wonder if an impact of this rate limiting change on ZFS ARC behavior has been
evaluated...

>   Sponsored by:       EMC / Isilon Storage Division
> 
> Modified:
>   head/sys/vm/vm_pageout.c
> 
> Modified: head/sys/vm/vm_pageout.c
> ==============================================================================
> --- head/sys/vm/vm_pageout.c  Mon Aug 19 23:02:39 2013        (r254543)
> +++ head/sys/vm/vm_pageout.c  Mon Aug 19 23:54:24 2013        (r254544)
> @@ -159,6 +159,8 @@ static int vm_max_launder = 32;
>  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;
>  
>  #if defined(NO_SWAPPING)
>  static int vm_swap_enabled = 0;
> @@ -179,6 +181,9 @@ SYSCTL_INT(_vm, OID_AUTO, pageout_update
>       CTLFLAG_RW, &vm_pageout_update_period, 0,
>       "Maximum active LRU update period");
>    
> +SYSCTL_INT(_vm, OID_AUTO, lowmem_period, CTLFLAG_RW, &lowmem_period, 0,
> +     "Low memory callback period");
> +
>  #if defined(NO_SWAPPING)
>  SYSCTL_INT(_vm, VM_SWAPPING_ENABLED, swap_enabled,
>       CTLFLAG_RD, &vm_swap_enabled, 0, "Enable entire process swapout");
> @@ -901,9 +906,10 @@ vm_pageout_scan(struct vm_domain *vmd, i
>  
>       /*
>        * If we need to reclaim memory ask kernel caches to return
> -      * some.
> +      * some.  We rate limit to avoid thrashing.
>        */
> -     if (pass > 0) {
> +     if (vmd == &vm_dom[0] && pass > 0 &&
> +         lowmem_ticks + (lowmem_period * hz) < ticks) {
>               /*
>                * Decrease registered cache sizes.
>                */
> @@ -913,6 +919,7 @@ vm_pageout_scan(struct vm_domain *vmd, i
>                * drained above.
>                */
>               uma_reclaim();
> +             lowmem_ticks = ticks;
>       }
>  
>       /*
> @@ -1680,10 +1687,11 @@ vm_pageout(void)
>  
>       /*
>        * Set interval in seconds for active scan.  We want to visit each
> -      * page at least once a minute.
> +      * page at least once every ten minutes.  This is to prevent worst
> +      * case paging behaviors with stale active LRU.
>        */
>       if (vm_pageout_update_period == 0)
> -             vm_pageout_update_period = 60;
> +             vm_pageout_update_period = 600;
>  
>       /* XXX does not really belong here */
>       if (vm_page_max_wired == 0)
> 


-- 
Andriy Gapon
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to