On 2/9/21 11:31 AM, Jesper Dangaard Brouer wrote: > On Mon, 8 Feb 2021 17:50:51 +0000 > Chuck Lever <chuck.lever@xxxxxxxxxx> wrote: > >> Sorry for resending. I misremembered the linux-mm address. >> >> > 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 > > >> > Neil Brown pointed me to this old thread: >> > >> > https://lore.kernel.org/lkml/20170109163518.6001-1-mgorman@xxxxxxxxxxxxxxxxxxx/ >> > >> > 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. > >> > 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? >> > 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 >