Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Jan 2014 12:29:21 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Jeff Roberson <jeff@FreeBSD.org>, src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org
Subject:   Re: svn commit: r254544 - head/sys/vm
Message-ID:  <52DCFA81.9070307@FreeBSD.org>
In-Reply-To: <201308192354.r7JNsPD1007503@svn.freebsd.org>
References:  <201308192354.r7JNsPD1007503@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52DCFA81.9070307>