[RFC] small VM patch to review
Alan Cox
alan.l.cox at gmail.com
Wed Mar 27 22:32:20 UTC 2013
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)
> @@ -882,14 +882,17 @@
>
> 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"
>
More information about the freebsd-current
mailing list