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-all
mailing list