Re: [PATCH v2 07/10] mm, compaction: restrict async compaction to pageblocks of same migratetype
From: Mel Gorman <hidden>
Date: 2017-02-13 10:57:00
Also in:
lkml
On Fri, Feb 10, 2017 at 06:23:40PM +0100, Vlastimil Babka wrote:
The migrate scanner in async compaction is currently limited to MIGRATE_MOVABLE pageblocks. This is a heuristic intended to reduce latency, based on the assumption that non-MOVABLE pageblocks are unlikely to contain movable pages. However, with the exception of THP's, most high-order allocations are not movable. Should the async compaction succeed, this increases the chance that the non-MOVABLE allocations will fallback to a MOVABLE pageblock, making the long-term fragmentation worse. This patch attempts to help the situation by changing async direct compaction so that the migrate scanner only scans the pageblocks of the requested migratetype. If it's a non-MOVABLE type and there are such pageblocks that do contain movable pages, chances are that the allocation can succeed within one of such pageblocks, removing the need for a fallback. If that fails, the subsequent sync attempt will ignore this restriction. Signed-off-by: Vlastimil Babka <redacted>
Ok, I really like this idea. The thinking of async originally was to reduce latency but that was also at the time when THP allocations were stalling for long periods of time. Now that the default has changed, this idea makes a lot of sense. A few months ago I would have thought that this will increase the changes that a high-order allocation for the stack may have a higher chance of failing but with VMAP_STACK, this is much less of a concern. It would be very nice to know for this patch if the number of times the extfrag tracepoint is triggered is reduced or increased by this patch. Do you have that data? -- Mel Gorman SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>