diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 578236089ec1..18cee0d4c8a2 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -2639,14 +2639,6 @@ rebalance: | |||
2639 | goto got_pg; | 2639 | goto got_pg; |
2640 | 2640 | ||
2641 | /* | 2641 | /* |
2642 | * It can become very expensive to allocate transparent hugepages at | ||
2643 | * fault, so use asynchronous memory compaction for THP unless it is | ||
2644 | * khugepaged trying to collapse. | ||
2645 | */ | ||
2646 | if (!(gfp_mask & __GFP_NO_KSWAPD) || (current->flags & PF_KTHREAD)) | ||
2647 | migration_mode = MIGRATE_SYNC_LIGHT; | ||
2648 | |||
2649 | /* | ||
2650 | * If compaction is deferred for high-order allocations, it is because | 2642 | * If compaction is deferred for high-order allocations, it is because |
2651 | * sync compaction recently failed. In this is the case and the caller | 2643 | * sync compaction recently failed. In this is the case and the caller |
2652 | * requested a movable allocation that does not heavily disrupt the | 2644 | * requested a movable allocation that does not heavily disrupt the |
@@ -2656,6 +2648,15 @@ rebalance: | |||
2656 | (gfp_mask & __GFP_NO_KSWAPD)) | 2648 | (gfp_mask & __GFP_NO_KSWAPD)) |
2657 | goto nopage; | 2649 | goto nopage; |
2658 | 2650 | ||
2651 | /* | ||
2652 | * It can become very expensive to allocate transparent hugepages at | ||
2653 | * fault, so use asynchronous memory compaction for THP unless it is | ||
2654 | * khugepaged trying to collapse. | ||
2655 | */ | ||
2656 | if ((gfp_mask & GFP_TRANSHUGE) != GFP_TRANSHUGE || | ||
2657 | (current->flags & PF_KTHREAD)) | ||
2658 | migration_mode = MIGRATE_SYNC_LIGHT; | ||
2659 | |||
2659 | /* Try direct reclaim and then allocating */ | 2660 | /* Try direct reclaim and then allocating */ |
2660 | page = __alloc_pages_direct_reclaim(gfp_mask, order, | 2661 | page = __alloc_pages_direct_reclaim(gfp_mask, order, |
2661 | zonelist, high_zoneidx, | 2662 | zonelist, high_zoneidx, |