svn commit: r254544 - head/sys/vm

Andriy Gapon avg at FreeBSD.org
Mon Jan 20 10:30:22 UTC 2014


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


More information about the svn-src-head mailing list