Messages in this thread Patch in this message | | | From | Doug Berger <> | Subject | [PATCH 3/3] mm/hugetlb: add hugepage isolation support | Date | Wed, 21 Sep 2022 15:36:39 -0700 |
| |
When a range of pageblocks is isolated there is at most one hugepage that has only tail pages overlapping that range (i.e. a hugepage that overlaps the beginning of the range).
However, that hugepage is the first migration target for an alloc_contig_range() attempt so it already receives special attention.
Checking whether the pageblock containing the head of a hugepage is isolated is an inexpensive way to avoid hugepage allocations from isolated pageblocks which makes alloc_contig_range() more efficient.
Signed-off-by: Doug Berger <opendmb@gmail.com> --- mm/hugetlb.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index eab812760fbe..3a2f0b55059d 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -33,6 +33,7 @@ #include <linux/migrate.h> #include <linux/nospec.h> #include <linux/delayacct.h> +#include <linux/page-isolation.h> #include <asm/page.h> #include <asm/pgalloc.h> @@ -1135,6 +1136,10 @@ static struct page *dequeue_huge_page_node_exact(struct hstate *h, int nid) if (PageHWPoison(page)) continue; + /* Check head pageblock isolation */ + if (is_migrate_isolate_page(page)) + continue; + list_move(&page->lru, &h->hugepage_activelist); set_page_refcounted(page); ClearHPageFreed(page); -- 2.25.1
| |