|
|
Log in / Subscribe / Register

TAO: THP Allocator Optimizations

From:  Yu Zhao <yuzhao-AT-google.com>
To:  lsf-pc-AT-lists.linux-foundation.org
Subject:  [LSF/MM/BPF TOPIC] TAO: THP Allocator Optimizations
Date:  Thu, 29 Feb 2024 11:34:32 -0700
Message-ID:  <20240229183436.4110845-1-yuzhao@google.com>
Cc:  linux-mm-AT-kvack.org, Jonathan Corbet <corbet-AT-lwn.net>, Yu Zhao <yuzhao-AT-google.com>
Archive-link:  Article

TAO is an umbrella project aiming at a better economy of physical
contiguity viewed as a valuable resource. A few examples are:
1. A multi-tenant system can have guaranteed THP coverage while
   hosting abusers/misusers of the resource.
2. Abusers/misusers, e.g., workloads excessively requesting and then
   splitting THPs, should be punished if necessary.
3. Good citizens should be awarded with, e.g., lower allocation
   latency and less cost of metadata (struct page).
4. Better interoperability with userspace memory allocators when
   transacting the resource.

This project puts the same emphasis on the established use case for
servers and the emerging use case for clients so that client workloads
like Android and ChromeOS can leverage the recent multi-sized THPs
[1][2].

Chapter One introduces the cornerstone of TAO: an abstraction called
policy (virtual) zones, which are overlayed on the physical zones.
This is in line with item 1 above.

A new door is open after Chapter One. The following two chapters
discuss the reverse of THP collapsing, called THP shattering, and THP
HVO, which brings the hugeTLB feature [3] to THP. They are in line
with items 2 & 3 above.

Advanced use cases are discussed in Epilogue, since they require the
cooperation of userspace memory allocators. This is in line with item
4 above.

[1] https://lwn.net/Articles/932386/
[2] https://lwn.net/Articles/937239/
[3] https://www.kernel.org/doc/html/next/mm/vmemmap_dedup.html

Yu Zhao (4):
  THP zones: the use cases of policy zones
  THP shattering: the reverse of collapsing
  THP HVO: bring the hugeTLB feature to THP
  Profile-Guided Heap Optimization and THP fungibility

 .../admin-guide/kernel-parameters.txt         |  10 +
 drivers/virtio/virtio_mem.c                   |   2 +-
 include/linux/gfp.h                           |  24 +-
 include/linux/huge_mm.h                       |   6 -
 include/linux/memcontrol.h                    |   5 +
 include/linux/mempolicy.h                     |   2 +-
 include/linux/mm.h                            | 140 ++++++
 include/linux/mm_inline.h                     |  24 +
 include/linux/mm_types.h                      |   8 +-
 include/linux/mmzone.h                        |  53 +-
 include/linux/nodemask.h                      |   2 +-
 include/linux/rmap.h                          |   4 +
 include/linux/vm_event_item.h                 |   5 +-
 include/trace/events/mmflags.h                |   4 +-
 init/main.c                                   |   1 +
 mm/compaction.c                               |  12 +
 mm/gup.c                                      |   3 +-
 mm/huge_memory.c                              | 304 ++++++++++--
 mm/hugetlb_vmemmap.c                          |   2 +-
 mm/internal.h                                 |  47 +-
 mm/madvise.c                                  |  11 +-
 mm/memcontrol.c                               |  47 ++
 mm/memory-failure.c                           |   2 +-
 mm/memory.c                                   |  11 +-
 mm/mempolicy.c                                |  14 +-
 mm/migrate.c                                  |  51 +-
 mm/mm_init.c                                  | 452 ++++++++++--------
 mm/page_alloc.c                               | 199 +++++++-
 mm/page_isolation.c                           |   2 +-
 mm/rmap.c                                     |  21 +-
 mm/shmem.c                                    |   4 +-
 mm/swap_slots.c                               |   3 +-
 mm/truncate.c                                 |   6 +-
 mm/userfaultfd.c                              |   2 +-
 mm/vmscan.c                                   |  41 +-
 mm/vmstat.c                                   |  12 +-
 36 files changed, 1194 insertions(+), 342 deletions(-)


base-commit: d206a76d7d2726f3b096037f2079ce0bd3ba329b
-- 
2.44.0.rc1.240.g4c46232300-goog



Copyright © 2024, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds