mm: improve migration heuristic

Some users were still seeing extreme unmovable page block migration over
time due to unmovable allocations stealing mostly free movable
blocks. Reduce the likelihood of this by only allowing unmovable
allocations to aggressively steal reclaimable pageblocks.

bug 26916944

Change-Id: I87fe0b0963ea967e4edf1ef60ae3fd297bf6978c
This commit is contained in:
Tim Murray 2016-03-24 11:19:20 -07:00 committed by syphyr
parent 6c39793bbe
commit 7afbc50a96
1 changed files with 5 additions and 1 deletions

View File

@ -1121,7 +1121,11 @@ static void try_to_steal_freepages(struct zone *zone, struct page *page,
return;
}
if (current_order >= pageblock_order / 2 ||
/* don't let unmovable allocations cause migrations simply because of free pages */
if ((start_type != MIGRATE_UNMOVABLE && current_order >= pageblock_order / 2) ||
/* only steal reclaimable page blocks for unmovable allocations */
(start_type == MIGRATE_UNMOVABLE && fallback_type != MIGRATE_MOVABLE && current_order >= pageblock_order / 2) ||
/* reclaimable can steal aggressively */
start_type == MIGRATE_RECLAIMABLE ||
// allow unmovable allocs up to 64K without migrating blocks
(start_type == MIGRATE_UNMOVABLE && start_order >= 5) ||