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 -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>