Thread (15 messages) 15 messages, 5 authors, 2021-03-12

[PATCH 0/5] Introduce a bulk order-0 page allocator with two in-tree users

flat view
STALE2054d SUPERSEDED

From: Mel Gorman <hidden>
Date: 2021-03-01 16:18:51
Also in: linux-mm, linux-nfs, lkml
Subsystem: kernel nfsd, sunrpc, and lockd servers, memory management, memory management - core, memory management - page allocator, networking [general], nfs, sunrpc, and lockd clients, page pool, the rest · Maintainers: Chuck Lever, Jeff Layton, Andrew Morton, David Hildenbrand, Vlastimil Babka, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Trond Myklebust, Anna Schumaker, Jesper Dangaard Brouer, Ilias Apalodimas, Linus Torvalds

Status: Superseded by v6 (posted 2021-03-25). [go to v6]

Revision v1 (4 revisions archived).

Revisions (4)
  1. v1 current re-posted go to this post
  2. v3 [diff against previous]
  3. v4 [diff against previous]
  4. v6 [diff against previous]
This series introduces a bulk order-0 page allocator with sunrpc and
the network page pool being the first users. The implementation is not
particularly efficient and the intention is to iron out what the semantics
of the API should have for users. Once the semantics are ironed out, it can
be made more efficient.

Improving the implementation requires fairly deep surgery in numerous
places. The lock scope would need to be significantly reduced, particularly
as vmstat, per-cpu and the buddy allocator have different locking protocol
that overall -- e.g. all partially depend on irqs being disabled at
various points. Secondly, the core of the allocator deals with single
pages where as both the bulk allocator and per-cpu allocator operate in
batches. All of that has to be reconciled with all the existing users and
their constraints (memory offline, CMA and cpusets being the trickiest).

Light testing passed, I'm relying on Chuck and Jesper to test the target
users more aggressively but both report performance improvements with the
initial RFC.

Patch 1 of this series is a cleanup to sunrpc, it could be merged
	separately but is included here as a pre-requisite.

Patch 2 is the prototype bulk allocator

Patch 3 is the sunrpc user. Chuck also has a patch which further caches
	pages but is not included in this series. It's not directly
	related to the bulk allocator and as it caches pages, it might
	have other concerns (e.g. does it need a shrinker?)

Patch 4 is a preparation patch only for the network user

Patch 5 converts the net page pool to the bulk allocator for order-0 pages.

 include/linux/gfp.h   |  13 +++++
 mm/page_alloc.c       | 113 +++++++++++++++++++++++++++++++++++++++++-
 net/core/page_pool.c  | 102 +++++++++++++++++++++++---------------
 net/sunrpc/svc_xprt.c |  47 ++++++++++++------
 4 files changed, 220 insertions(+), 55 deletions(-)

-- 
2.26.2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help