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. > > [aarcange@xxxxxxxxxx: This patch replaces a revert from Andrea] > Signed-off-by: Mel Gorman <mgorman@xxxxxxx> > Reviewed-by: Rik van Riel <riel@xxxxxxxxxx> > Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx> > Cc: Minchan Kim <minchan.kim@xxxxxxxxx> > Cc: Dave Jones <davej@xxxxxxxxxx> > Cc: Jan Kara <jack@xxxxxxx> > Cc: Andy Isaacson <adi@xxxxxxxxxxxxx> > Cc: Nai Xia <nai.xia@xxxxxxxxx> > Cc: Johannes Weiner <jweiner@xxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Mel Gorman <mgorman@xxxxxxx> > --- > 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, 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>