Messages in this thread | | | Date | Thu, 10 Nov 2011 14:22:03 +0000 | From | Mel Gorman <> | Subject | Re: [PATCH] mm: Do not stall in synchronous compaction for THP allocations |
| |
On Thu, Nov 10, 2011 at 10:06:16AM +0000, Mel Gorman wrote: > than stall. It was suggested that __GFP_NORETRY be used instead of > __GFP_NO_KSWAPD. This would look less like a special case but would > still cause compaction to run at least once with sync compaction. >
This comment is bogus - __GFP_NORETRY would have caught THP allocations and would not call sync compaction. The issue was that it would also have caught any hypothetical high-order GFP_THISNODE allocations that end up calling compaction here
/* * High-order allocations do not necessarily loop after * direct reclaim and reclaim/compaction depends on * compaction being called after reclaim so call directly if * necessary */ page = __alloc_pages_direct_compact(gfp_mask, order, zonelist, high_zoneidx, nodemask, alloc_flags, preferred_zone, migratetype, &did_some_progress, sync_migration);
__GFP_NORETRY is used in a bunch of places and while the most of them are not high-order, some of them potentially are like in sound/core/memalloc.c. Using __GFP_NO_KSWAPD as the flag allows these callers to continue using sync compaction. It could be argued that they would prefer __GFP_NORETRY but the potential side-effects should be taken should be taken into account and the comment updated if that happens.
-- Mel Gorman SUSE Labs
| |