mirror of https://gitee.com/openkylin/linux.git
thp: transhuge isolate_migratepages()
It's not worth migrating transparent hugepages during compaction. Those hugepages don't create fragmentation. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5d6892407c
commit
bc835011af
|
@ -295,10 +295,25 @@ static unsigned long isolate_migratepages(struct zone *zone,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!PageLRU(page))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PageLRU is set, and lru_lock excludes isolation,
|
||||||
|
* splitting and collapsing (collapsing has already
|
||||||
|
* happened if PageLRU is set).
|
||||||
|
*/
|
||||||
|
if (PageTransHuge(page)) {
|
||||||
|
low_pfn += (1 << compound_order(page)) - 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* Try isolate the page */
|
/* Try isolate the page */
|
||||||
if (__isolate_lru_page(page, ISOLATE_BOTH, 0) != 0)
|
if (__isolate_lru_page(page, ISOLATE_BOTH, 0) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
VM_BUG_ON(PageTransCompound(page));
|
||||||
|
|
||||||
/* Successfully isolated */
|
/* Successfully isolated */
|
||||||
del_page_from_lru_list(zone, page, page_lru(page));
|
del_page_from_lru_list(zone, page, page_lru(page));
|
||||||
list_add(&page->lru, migratelist);
|
list_add(&page->lru, migratelist);
|
||||||
|
|
Loading…
Reference in New Issue