On Mon, Jul 23, 2012 at 02:38:38PM +0100, Mel Gorman wrote: > commit 0cee34fd72c582b4f8ad8ce00645b75fb4168199 upstream. > > Stable note: Not tracked on Bugzilla. THP and compaction was found to > aggressively reclaim pages and stall systems under different > situations that was addressed piecemeal over time. > > If compaction can proceed for a given zone, shrink_zones() does not > reclaim any more pages from it. After commit [e0c2327: vmscan: abort > reclaim/compaction if compaction can proceed], do_try_to_free_pages() > tries to finish as soon as possible once one zone can compact. > > This was intended to prevent slabs being shrunk unnecessarily but > there are side-effects. One is that a small zone that is ready for > compaction will abort reclaim even if the chances of successfully > allocating a THP from that zone is small. It also means that reclaim > can return too early even though sc->nr_to_reclaim pages were not > reclaimed. > > This partially reverts the commit until it is proven that slabs are > really being shrunk unnecessarily but preserves the check to return > 1 to avoid OOM if reclaim was aborted prematurely. > > [[email protected]: This patch replaces a revert from Andrea] > Signed-off-by: Mel Gorman <[email protected]> > Reviewed-by: Rik van Riel <[email protected]> > Cc: Andrea Arcangeli <[email protected]> > Cc: Minchan Kim <[email protected]> > Cc: Dave Jones <[email protected]> > Cc: Jan Kara <[email protected]> > Cc: Andy Isaacson <[email protected]> > Cc: Nai Xia <[email protected]> > Cc: Johannes Weiner <[email protected]> > Signed-off-by: Andrew Morton <[email protected]> > Signed-off-by: Linus Torvalds <[email protected]> > Signed-off-by: Mel Gorman <[email protected]> > --- > mm/vmscan.c | 19 +++++++++---------- > 1 file changed, 9 insertions(+), 10 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index f109f2d..bc31f32 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2129,7 +2129,8 @@ static inline bool compaction_ready(struct zone *zone, > struct scan_control *sc) > * > * This function returns true if a zone is being reclaimed for a costly > * allocation and compaction is ready to begin. This indicates to the caller > - * that it should retry the allocation or fail. > + * that it should consider retrying the allocation instead of > + * further reclaim. > */ > static bool shrink_zones(int priority, struct zonelist *zonelist, > struct scan_control *sc)
This hunk didn't apply (the original commit from Linus's tree also didn't apply due to some context changes in the rest of the patch.) So I took the original comment changes from Linus's tree, and the context changes from this one and applied that. Franken-patches, the story of my life... greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

