[PATCH 00/12] Enabling large folios for 5.17

From: Matthew Wilcox (Oracle)
Date: Sun Jan 16 2022 - 07:18:51 EST


Is Linux just too stable for you? Tired of not having your data eaten
by a grue? Then it's time to experiment with enabling large folios!

You will need:
- A recent Linus tree (I used a33f5c380c4b)
- To enable CONFIG_TRANSPARENT_HUGEPAGE
- An XFS filesystem
- Your favourite workload

These patches create large folios in the readahead and fault paths.
They do not create large folios in the write path; that is future
work. For most workloads, this is quite sufficient. You can
monitor the sizes of folios being added to the page cache with the
mm_filemap_add_to_page_cache tracepoint.

As mentioned in the 'Add large folio readahead' commit message, the
heuristic for deciding when to enlarge the size of the folio being
created is stupid. I'm sure somebody out there can do better.

This patchset is not (as far as I'm concerned) a candidate for merging
into 5.17. It hasn't been in linux-next, and while it does not introduce
any regressions in my testing, I'd be uncomfortable seeing it merged
before 5.18.

Matthew Wilcox (Oracle) (11):
mm: Add folio_put_refs()
filemap: Use folio_put_refs() in filemap_free_folio()
filemap: Allow large folios to be added to the page cache
mm/vmscan: Free non-shmem folios without splitting them
mm: Fix READ_ONLY_THP warning
mm/vmscan: Optimise shrink_page_list for non-PMD-sized folios
mm: Make large folios depend on THP
mm/readahead: Add large folio readahead
mm/readahead: Switch to page_cache_ra_order
mm/filemap: Support VM_HUGEPAGE for file mappings
selftests/vm/transhuge-stress: Support file-backed PMD folios

William Kucharski (1):
mm/readahead: Align file mappings for non-DAX

include/linux/mm.h | 20 ++++
include/linux/pagemap.h | 11 +-
mm/filemap.c | 69 +++++++----
mm/huge_memory.c | 5 +-
mm/internal.h | 4 +-
mm/readahead.c | 108 ++++++++++++++++--
mm/vmscan.c | 7 +-
tools/testing/selftests/vm/transhuge-stress.c | 35 ++++--
8 files changed, 204 insertions(+), 55 deletions(-)

--
2.34.1