Thread (22 messages) flat view 22 messages, 7 authors, 2021-02-22

Re: alloc_pages_bulk()

From: Vlastimil Babka <hidden>
Date: 2021-02-09 17:43:39
Also in: linux-nfs

On 2/9/21 11:31 AM, Jesper Dangaard Brouer wrote:
On Mon, 8 Feb 2021 17:50:51 +0000
Chuck Lever [off-list ref] wrote:
quoted
Sorry for resending. I misremembered the linux-mm address.
quoted
Begin forwarded message:

[ please Cc: me, I'm not subscribed to linux-mm ]

We've been discussing how NFSD can more efficiently refill its
receive buffers (currently alloc_page() in a loop; see
net/sunrpc/svc_xprt.c::svc_alloc_arg()).
It looks like you could also take advantage of bulk free in:
 svc_free_res_pages()

I would like to use the page bulk alloc API here:
 https://github.com/torvalds/linux/blob/master/net/core/page_pool.c#L201-L209

quoted
quoted
Neil Brown pointed me to this old thread:

https://lore.kernel.org/lkml/20170109163518.6001-1-mgorman@techsingularity.net/ (local)

We see that many of the prerequisites are in v5.11-rc, but
alloc_page_bulk() is not. I tried forward-porting 4/4 in that
series, but enough internal APIs have changed since 2017 that
the patch does not come close to applying and compiling.
I forgot that this was never merged.  It is sad as Mel showed huge
improvement with his work.
quoted
quoted
I'm wondering:

a) is there a newer version of that work?
Mel, why was this work never merged upstream?
Hmm the cover letter of that work says:
The fourth patch introduces a bulk page allocator with no
in-kernel users as an example for Jesper and others who want to
build a page allocator for DMA-coherent pages.  It hopefully is
relatively easy to modify this API and the one core function toget > the
semantics they require.

So it seems there were no immediate users to finalize the API?
quoted
quoted
b) if not, does there exist a preferred API in 5.11 for bulk
page allocation?

Many thanks for any guidance!
I have a kernel module that micro-bench the API alloc_pages_bulk() here:
 https://github.com/netoptimizer/prototype-kernel/blob/master/kernel/mm/bench/page_bench04_bulk.c#L97
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help