Re: [RFC] small VM patch to review

From: Alan Cox <alan.l.cox_at_gmail.com>
Date: Wed, 27 Mar 2013 17:32:12 -0500
On Wed, Mar 20, 2013 at 12:24 PM, Maksim Yevmenkin <emax_at_freebsd.org> wrote:

> hello,
>
> would anyone object to the following small patch?
>
>

Yes, I don't think that we should entirely disable vm_lowmem events or
uma_reclaim() on pass == 0 calls to vm_pageout_scan().  However, I do
think it's reasonable to significantly reduce the frequency at which we do
both.

My recollection is that UMA only releases idle pages from zones when
uma_reclaim() is called.  In other words, there is no mechanism like a
high water mark on the number of idle pages in a zone that triggers the
return of some of these idle pages to the VM system.

Given this, turning off vm_lowmem events or uma_reclaim() calls
on pass == 0 is fine for machines under a steady-state workload.  But,
if there are changes in the workload then we won't adapt our overall
memory allocation to the new workload.  Specifically, the loser would be
the file cache/inactive queue, because even under moderate memory
pressure we typically meet our goals on pass 0 by reclaiming file
cache/inactive queue pages.  So, instead of repurposing unused pages
from UMA to the file cache/inactive queue, we would leave them lingering
in UMA.

(Also note I've not said anything about the ZFS ARC, because I'm not
exactly sure how it uses the vm_lowmem events.  This may or may not
be a problem.  I don't know.)



> ==
>
> Index: vm_pageout.c
> ===================================================================
> --- vm_pageout.c        (revision 248560)
> +++ vm_pageout.c        (working copy)
> _at__at_ -882,14 +882,17 _at__at_
>
>         vm_pageout_init_marker(&marker, PQ_INACTIVE);
>
> -       /*
> -        * Decrease registered cache sizes.
> -        */
> -       EVENTHANDLER_INVOKE(vm_lowmem, 0);
> -       /*
> -        * We do this explicitly after the caches have been drained above.
> -        */
> -       uma_reclaim();
> +       if (pass) {
> +               /*
> +                * Decrease registered cache sizes.
> +                */
> +               EVENTHANDLER_INVOKE(vm_lowmem, 0);
> +               /*
> +                * We do this explicitly after the caches have
> +                * been drained above.
> +                */
> +               uma_reclaim();
> +       }
>
>         /*
>          * The addl_page_shortage is the number of temporarily
>
> ==
>
> the idea is to not invoke lowmem handler etc. on first pass in
> vm_pageout_scan(). it saves a few CPU cycles on a relatively busy
> webserver with moderate amount of RAM serving large-ish files.
>
> thanks,
> max
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>
Received on Wed Mar 27 2013 - 21:32:20 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:36 UTC