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-L209quoted
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