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@xxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxx> > 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@xxxxxxxxxxx> > Cc: Rik van Riel <riel@xxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxx> > Cc: Hugh Dickins <hughd@xxxxxxxxxx> > Cc: Satoru Moriya <satoru.moriya@xxxxxxx> > Cc: Simon Jeons <simon.jeons@xxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> > From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > 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@xxxxxxxxxxx> > Cc: Rik van Riel <riel@xxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxx> > Cc: Hugh Dickins <hughd@xxxxxxxxxx> > Cc: Satoru Moriya <satoru.moriya@xxxxxxx> > Cc: Simon Jeons <simon.jeons@xxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> > From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > 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@xxxxxxxxxxx> > Cc: Rik van Riel <riel@xxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxx> > Cc: Hugh Dickins <hughd@xxxxxxxxxx> > Cc: Satoru Moriya <satoru.moriya@xxxxxxx> > Cc: Simon Jeons <simon.jeons@xxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>