Messages in this thread | | | Date | Thu, 20 Dec 2012 22:02:36 -0500 | From | Johannes Weiner <> | Subject | Re: [patch 2/7] mm: vmscan: save work scanning (almost) empty LRU lists |
| |
On Wed, Dec 19, 2012 at 03:59:01PM -0800, Andrew Morton wrote: > On Mon, 17 Dec 2012 13:12:32 -0500 > Johannes Weiner <hannes@cmpxchg.org> wrote: > > > In certain cases (kswapd reclaim, memcg target reclaim), a fixed > > minimum amount of pages is scanned from the LRU lists on each > > iteration, to make progress. > > > > Do not make this minimum bigger than the respective LRU list size, > > however, and save some busy work trying to isolate and reclaim pages > > that are not there. > > > > Empty LRU lists are quite common with memory cgroups in NUMA > > environments because there exists a set of LRU lists for each zone for > > each memory cgroup, while the memory of a single cgroup is expected to > > stay on just one node. The number of expected empty LRU lists is thus > > > > memcgs * (nodes - 1) * lru types > > > > Each attempt to reclaim from an empty LRU list does expensive size > > comparisons between lists, acquires the zone's lru lock etc. Avoid > > that. > > > > ... > > > > -#define SWAP_CLUSTER_MAX 32 > > +#define SWAP_CLUSTER_MAX 32UL > > You made me review the effects of this change. It looks OK. A few > cleanups are possible, please review. > > I wonder what happens in __setup_per_zone_wmarks() if we set > SWAP_CLUSTER_MAX greater than 128.
In the current clamp() implementation max overrides min, so...
BUILD_BUG_ON()? Probably unnecessary, it seems like a rather arbitrary range to begin with.
> From: Andrew Morton <akpm@linux-foundation.org> > Subject: mm/page_alloc.c:__setup_per_zone_wmarks: make min_pages unsigned long > > `int' is an inappropriate type for a number-of-pages counter. > > While we're there, use the clamp() macro. > > Cc: Johannes Weiner <hannes@cmpxchg.org> > Cc: Rik van Riel <riel@redhat.com> > Cc: Mel Gorman <mgorman@suse.de> > Cc: Michal Hocko <mhocko@suse.cz> > Cc: Hugh Dickins <hughd@google.com> > Cc: Satoru Moriya <satoru.moriya@hds.com> > Cc: Simon Jeons <simon.jeons@gmail.com> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
> From: Andrew Morton <akpm@linux-foundation.org> > Subject: mm/vmscan.c:shrink_lruvec(): switch to min() > > "mm: vmscan: save work scanning (almost) empty LRU lists" made > SWAP_CLUSTER_MAX an unsigned long. > > Cc: Johannes Weiner <hannes@cmpxchg.org> > Cc: Rik van Riel <riel@redhat.com> > Cc: Mel Gorman <mgorman@suse.de> > Cc: Michal Hocko <mhocko@suse.cz> > Cc: Hugh Dickins <hughd@google.com> > Cc: Satoru Moriya <satoru.moriya@hds.com> > Cc: Simon Jeons <simon.jeons@gmail.com> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
> From: Andrew Morton <akpm@linux-foundation.org> > Subject: mm/vmscan.c:__zone_reclaim(): replace max_t() with max() > > "mm: vmscan: save work scanning (almost) empty LRU lists" made > SWAP_CLUSTER_MAX an unsigned long. > > Cc: Johannes Weiner <hannes@cmpxchg.org> > Cc: Rik van Riel <riel@redhat.com> > Cc: Mel Gorman <mgorman@suse.de> > Cc: Michal Hocko <mhocko@suse.cz> > Cc: Hugh Dickins <hughd@google.com> > Cc: Satoru Moriya <satoru.moriya@hds.com> > Cc: Simon Jeons <simon.jeons@gmail.com> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
| |