Skip to content

Commit 9933a0c

Browse files
JoonsooKimtorvalds
authored andcommitted
mm/migrate: clear __GFP_RECLAIM to make the migration callback consistent with regular THP allocations
new_page_nodemask is a migration callback and it tries to use a common gfp flags for the target page allocation whether it is a base page or a THP. The later only adds GFP_TRANSHUGE to the given mask. This results in the allocation being slightly more aggressive than necessary because the resulting gfp mask will contain also __GFP_RECLAIM_KSWAPD. THP allocations usually exclude this flag to reduce over eager background reclaim during a high THP allocation load which has been seen during large mmaps initialization. There is no indication that this is a problem for migration as well but theoretically the same might happen when migrating large mappings to a different node. Make the migration callback consistent with regular THP allocations. [[email protected]: fix comment typo, per Vlastimil] Signed-off-by: Joonsoo Kim <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Acked-by: Michal Hocko <[email protected]> Acked-by: Vlastimil Babka <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Mike Kravetz <[email protected]> Cc: Naoya Horiguchi <[email protected]> Cc: Roman Gushchin <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Linus Torvalds <[email protected]>
1 parent d92bbc2 commit 9933a0c

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

mm/migrate.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,6 +1554,11 @@ struct page *new_page_nodemask(struct page *page,
15541554
}
15551555

15561556
if (PageTransHuge(page)) {
1557+
/*
1558+
* clear __GFP_RECLAIM to make the migration callback
1559+
* consistent with regular THP allocations.
1560+
*/
1561+
gfp_mask &= ~__GFP_RECLAIM;
15571562
gfp_mask |= GFP_TRANSHUGE;
15581563
order = HPAGE_PMD_ORDER;
15591564
}

0 commit comments

Comments
 (0)