On Fri, Sep 21, 2012 at 11:46:23AM +0100, Mel Gorman wrote: > This is almost entirely based on Rik's previous patches and discussions > with him about how this might be implemented. > > Order > 0 compaction stops when enough free pages of the correct page > order have been coalesced. When doing subsequent higher order allocations, > it is possible for compaction to be invoked many times. > > However, the compaction code always starts out looking for things to compact > at the start of the zone, and for free pages to compact things to at the > end of the zone. > > This can cause quadratic behaviour, with isolate_freepages starting at > the end of the zone each time, even though previous invocations of the > compaction code already filled up all free memory on that end of the zone. > This can cause isolate_freepages to take enormous amounts of CPU with > certain workloads on larger memory systems. > > This patch caches where the migration and free scanner should start from on > subsequent compaction invocations using the pageblock-skip information. When > compaction starts it begins from the cached restart points and will > update the cached restart points until a page is isolated or a pageblock > is skipped that would have been scanned by synchronous compaction. > > Signed-off-by: Mel Gorman <mgorman@xxxxxxx> > Acked-by: Rik van Riel <riel@xxxxxxxxxx> > --- Acked-by: Rafael Aquini <aquini@xxxxxxxxxx> -- 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>