[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220321142128.2471199-1-zi.yan@sent.com>
Date: Mon, 21 Mar 2022 10:21:23 -0400
From: Zi Yan <zi.yan@...t.com>
To: Matthew Wilcox <willy@...radead.org>, linux-mm@...ck.org
Cc: Roman Gushchin <roman.gushchin@...ux.dev>,
Shuah Khan <shuah@...nel.org>, Yang Shi <shy828301@...il.com>,
Miaohe Lin <linmiaohe@...wei.com>,
Hugh Dickins <hughd@...gle.com>,
"Kirill A . Shutemov" <kirill.shutemov@...ux.intel.com>,
linux-kernel@...r.kernel.org, cgroups@...r.kernel.org,
linux-kselftest@...r.kernel.org, Zi Yan <ziy@...dia.com>
Subject: [RFC PATCH 0/5] Split a huge page to any lower order pages
From: Zi Yan <ziy@...dia.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
Powered by blists - more mailing lists