Re: alloc_pages_bulk()
From: Jesper Dangaard Brouer <hidden>
Date: 2021-02-22 20:44:35
Also in:
linux-mm, linux-nfs
On Mon, 15 Feb 2021 12:06:09 +0000 Mel Gorman [off-list ref] wrote:
On Thu, Feb 11, 2021 at 04:20:31PM +0000, Chuck Lever wrote:quoted
quoted
On Feb 11, 2021, at 4:12 AM, Mel Gorman [off-list ref] wrote: <SNIP> Parameters to __rmqueue_pcplist are garbage as the parameter order changed. I'm surprised it didn't blow up in a spectacular fashion. Again, this hasn't been near any testing and passing a list with high orders to free_pages_bulk() will corrupt lists too. Mostly it's a curiousity to see if there is justification for reworking the allocator to fundamentally deal in batches and then feed batches to pcp lists and the bulk allocator while leaving the normal GFP API as single page "batches". While that would be ideal, it's relatively high risk for regressions. There is still some scope for adding a basic bulk allocator before considering a major refactoring effort.diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f8353ea7b977..8f3fe7de2cf7 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c@@ -5892,7 +5892,7 @@ __alloc_pages_bulk_nodemask(gfp_t gfp_mask, unsigned int order,pcp_list = &pcp->lists[migratetype]; while (nr_pages) { - page = __rmqueue_pcplist(zone, gfp_mask, migratetype, + page = __rmqueue_pcplist(zone, migratetype, alloc_flags, pcp, pcp_list); if (!page) break;The NFS server is considerably more stable now. Thank you!Thanks for testing!
I've done some testing here: https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool06_alloc_pages_bulk.org Performance summary: - Before: 3,677,958 pps - After : 4,066,028 pps I'll describe/show the page_pool changes tomorrow. -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer