lkml.org 
[lkml]   [2022]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[RFC PATCH 0/5] Split a huge page to any lower order pages
Date
From: Zi Yan <ziy@nvidia.com>

Hi all,

With Matthew's huge pagecache page patches merged, we are able to handle any
size pagecache pages, but currently split_huge_page can only split a huge page
to order-0 pages. This can easily erase the benefit of having huge pagecache
pages, when operations like truncate might want to keep pages larger than
order-0. In response, here is the patches to add support for splitting a huge
page to any lower order pages.

The patchset is on top of mmotm-2022-03-16-17-42.

* Patch 1 and 2 add new_order parameter split_page_memcg() and
split_page_owner() and prepare for upcoming changes.
* Patch 3 adds split_huge_page_to_list_to_order() to split a huge page
to any lower order. The original split_huge_page_to_list() calls
split_huge_page_to_list_to_order() with new_order = 0.
* Patch 4 uses split_huge_page_to_list_to_order() in huge pagecache page
truncation instead of split the huge page all the way down to order-0.
* Patch 5 adds a test API to debugfs and test cases in
split_huge_page_test selftests.

Comments and/or suggestions are welcome.

Zi Yan (5):
mm: memcg: make memcg huge page split support any order split.
mm: page_owner: add support for splitting to any order in split
page_owner.
mm: thp: split huge page to any lower order pages.
mm: truncate: split huge page cache page to a non-zero order if
possible.
mm: huge_memory: enable debugfs to split huge pages to any order.

include/linux/huge_mm.h | 8 +
include/linux/memcontrol.h | 2 +-
include/linux/page_owner.h | 12 +-
mm/huge_memory.c | 139 +++++++----
mm/memcontrol.c | 10 +-
mm/page_alloc.c | 4 +-
mm/page_owner.c | 13 +-
mm/truncate.c | 33 ++-
.../selftests/vm/split_huge_page_test.c | 219 +++++++++++++++---
9 files changed, 347 insertions(+), 93 deletions(-)

--
2.35.1

\
 
 \ /
  Last update: 2022-03-21 15:30    [W:0.203 / U:0.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site