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