mbox series

[00/12] Enabling large folios for 5.17

Message ID 20220116121822.1727633-1-willy@infradead.org (mailing list archive)
Headers show
Series Enabling large folios for 5.17 | expand

Message

Matthew Wilcox Jan. 16, 2022, 12:18 p.m. UTC
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(-)