Re: [PATCH 2/9] mm/page_alloc: Add a bulk page allocator

2021-04-12 Thread Mel Gorman
On Mon, Apr 12, 2021 at 11:59:38AM +0100, Mel Gorman wrote: > > I don't understand this comment. Only alloc_flags_nofragment() sets this > > flag > > and we don't use it here? > > > > It's there as a reminder that there are non-obvious consequences &

[PATCH] mm/page_alloc: Add a bulk page allocator -fix -fix -fix

2021-04-12 Thread Mel Gorman
Vlastimil Babka noted that a comment is wrong, fix it. This is the third fix to the mmotm patch mm-page_alloc-add-a-bulk-page-allocator.patch. Signed-off-by: Mel Gorman --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c

Re: [PATCH 2/9] mm/page_alloc: Add a bulk page allocator

2021-04-12 Thread Mel Gorman
t; > + alloc_gfp = gfp; > > + if (!prepare_alloc_pages(gfp, 0, preferred_nid, nodemask, &ac, > > &alloc_gfp, &alloc_flags)) > > + return 0; > > + gfp = alloc_gfp; > > + > > + /* Find an allowed local zone that meets the high watermark. */ > > Should it say "low watermark"? > Yeah, that's leftover from an earlier prototype :( -- Mel Gorman SUSE Labs

Re: Problem in pfmemalloc skb handling in net/core/dev.c

2021-04-09 Thread Mel Gorman
On Fri, Apr 09, 2021 at 02:14:12AM -0700, Xie He wrote: > On Fri, Apr 9, 2021 at 1:44 AM Mel Gorman wrote: > > > > That would imply that the tap was communicating with a swap device to > > allocate a pfmemalloc skb which shouldn't happen. Furthermore, it would > &g

Re: Problem in pfmemalloc skb handling in net/core/dev.c

2021-04-09 Thread Mel Gorman
On Fri, Apr 09, 2021 at 01:33:24AM -0700, Xie He wrote: > On Fri, Apr 9, 2021 at 12:30 AM Mel Gorman > wrote: > > > > Under what circumstances do you expect sk_memalloc_socks() to be false > > and skb_pfmemalloc() to be true that would cause a problem? > > For exam

Re: Problem in pfmemalloc skb handling in net/core/dev.c

2021-04-09 Thread Mel Gorman
On Thu, Apr 08, 2021 at 11:52:01AM -0700, Xie He wrote: > Hi Mel Gorman, > > I may have found a problem in pfmemalloc skb handling in > net/core/dev.c. I see there are "if" conditions checking for > "sk_memalloc_socks() && skb_pfmemalloc(skb)", and when

Re: [PATCH 0/9 v6] Introduce a bulk order-0 page allocator with two in-tree users

2021-03-25 Thread Mel Gorman
On Thu, Mar 25, 2021 at 03:06:57PM +0100, Uladzislau Rezki wrote: > > On Thu, Mar 25, 2021 at 12:50:01PM +, Matthew Wilcox wrote: > > > On Thu, Mar 25, 2021 at 11:42:19AM +0000, Mel Gorman wrote: > > > > This series introduces a bulk order-0 page allocator with sun

Re: [PATCH 0/9 v6] Introduce a bulk order-0 page allocator with two in-tree users

2021-03-25 Thread Mel Gorman
On Thu, Mar 25, 2021 at 12:50:01PM +, Matthew Wilcox wrote: > On Thu, Mar 25, 2021 at 11:42:19AM +0000, Mel Gorman wrote: > > This series introduces a bulk order-0 page allocator with sunrpc and > > the network page pool being the first users. The implementation is not &

Re: [PATCH 4/9] mm/page_alloc: optimize code layout for __alloc_pages_bulk

2021-03-25 Thread Mel Gorman
On Thu, Mar 25, 2021 at 12:12:17PM +, Matthew Wilcox wrote: > On Thu, Mar 25, 2021 at 11:42:23AM +0000, Mel Gorman wrote: > > > > - if (WARN_ON_ONCE(nr_pages <= 0)) > > + if (unlikely(nr_pages <= 0)) > > return 0; > > If we made nr_page

Re: [PATCH 2/9] mm/page_alloc: Add a bulk page allocator

2021-03-25 Thread Mel Gorman
On Thu, Mar 25, 2021 at 12:05:25PM +, Matthew Wilcox wrote: > On Thu, Mar 25, 2021 at 11:42:21AM +0000, Mel Gorman wrote: > > +int __alloc_pages_bulk(gfp_t gfp, int preferred_nid, > > + nodemask_t *nodemask, int nr_pages, > > +

[PATCH 9/9] net: page_pool: use alloc_pages_bulk in refill code path

2021-03-25 Thread Mel Gorman
by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- include/net/page_pool.h | 2 +- net/core/page_pool.c| 82 - 2 files changed, 57 insertions(+), 27 deletions(-) diff --git a/include/net/page_pool.h b/include/net/page_pool.h index b5b195305346..6d

[PATCH 8/9] net: page_pool: refactor dma_map into own function page_pool_dma_map

2021-03-25 Thread Mel Gorman
-by: Mel Gorman --- net/core/page_pool.c | 45 +--- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index ad8b0707af04..40e1b2beaa6c 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c

[PATCH 7/9] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-25 Thread Mel Gorman
: Mel Gorman --- net/sunrpc/svc_xprt.c | 31 +++ 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index 609bda97d4ae..0c27c3291ca1 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -643,30

[PATCH 6/9] SUNRPC: Set rq_page_end differently

2021-03-25 Thread Mel Gorman
that nfsd_read_actor() was renamed nfsd_splice_actor() by commit cf8208d0eabd ("sendfile: convert nfsd to splice_direct_to_actor()"). Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 7 +++ 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/net/su

[PATCH 5/9] mm/page_alloc: inline __rmqueue_pcplist

2021-03-25 Thread Mel Gorman
) 30.633 ns (step:64) Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- mm/page_alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 1ec18121268b..d900e92884b2 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c

[PATCH 4/9] mm/page_alloc: optimize code layout for __alloc_pages_bulk

2021-03-25 Thread Mel Gorman
, which confuse the I-cache prefetcher in the CPU. [mgorman: Minor changes and rebasing] Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- mm/page_alloc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index

[PATCH 2/9] mm/page_alloc: Add a bulk page allocator

2021-03-25 Thread Mel Gorman
is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman Acked-by: Vlastimil Babka --- include/linux/gfp.h | 11 + mm/page_alloc.c

[PATCH 3/9] mm/page_alloc: Add an array-based interface to the bulk page allocator

2021-03-25 Thread Mel Gorman
storage to store the pages. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 13 +++--- mm/page_alloc.c | 60 + 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 4a304fd39916

[PATCH 1/9] mm/page_alloc: Rename alloced to allocated

2021-03-25 Thread Mel Gorman
f the fake word mallocated. To be consistent, this preparation patch renames alloced to allocated in rmqueue_bulk so the bulk allocator and per-cpu allocator use similar names when the bulk allocator is introduced. Signed-off-by: Mel Gorman --- mm/page_alloc.c | 8 1 file changed

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

2021-03-25 Thread Mel Gorman
This series is based on top of Matthew Wilcox's series "Rationalise __alloc_pages wrapper" and does not apply to 5.14-rc4. If Andrew's tree is not the testing baseline then the following git tree will work. git://git.kernel.org/pub/scm/linux/kernel/git/mel/linux.git mm-bulk-rebase-v6r7 Changelog

Re: [PATCH mel-git 3/3] net: page_pool: convert to use alloc_pages_bulk_array variant

2021-03-25 Thread Mel Gorman
Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- include/net/page_pool.h | 2 +- net/core/page_pool.c| 82 + 2 files changed, 57 insertions(+), 27 deletions(-) diff --git a/include/net/page_pool.h b/include/net/page_pool.h index b5b195305

Re: [PATCH 2/2] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-23 Thread Mel Gorman
h nfsd threads hammer on the page allocator. This improves throughput scalability by enabling the threads to run more independently of each other. [mgorman: Update interpretation of alloc_pages_bulk return value] Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.

Re: [PATCH 2/3] mm/page_alloc: Add a bulk page allocator

2021-03-23 Thread Mel Gorman
s tight, I've applied the patch but am keeping it separate to preserve the data in case someone points out that is a big function to inline and "fixes" it. -- Mel Gorman SUSE Labs

Re: [PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-23 Thread Mel Gorman
On Tue, Mar 23, 2021 at 04:08:14PM +0100, Jesper Dangaard Brouer wrote: > On Tue, 23 Mar 2021 10:44:21 + > Mel Gorman wrote: > > > On Mon, Mar 22, 2021 at 09:18:42AM +0000, Mel Gorman wrote: > > > This series is based on top of Matthew Wilcox's series "Ratio

Re: [PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-23 Thread Mel Gorman
0, gfp, 0); - - /* -* If the array is sparse, check whether the array is -* now fully populated. Continue allocations if -* necessary. -*/ - while (nr_populated < nr_pages && page_array[nr_populated]) - nr_populated++; - if (hole && nr_populated < nr_pages) - goto retry_hole; - } - return nr_populated; failed_irq: -- Mel Gorman SUSE Labs

Re: [PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-23 Thread Mel Gorman
On Mon, Mar 22, 2021 at 09:18:42AM +, Mel Gorman wrote: > This series is based on top of Matthew Wilcox's series "Rationalise > __alloc_pages wrapper" and does not apply to 5.12-rc2. If you want to > test and are not using Andrew's tree as a baseline, I suggest u

Re: [PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-22 Thread Mel Gorman
;s slower for the API to do this check because it has to check every element while the sunrpc user could check one element. Let me know if a) this hunk helps and b) is desired behaviour. diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c83d38dfe936..4bf20650e5f5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5107,6 +5107,9 @@ int __alloc_pages_bulk(gfp_t gfp, int preferred_nid, } else { while (prep_index < nr_populated) prep_new_page(page_array[prep_index++], 0, gfp, 0); + + while (nr_populated < nr_pages && page_array[nr_populated]) + nr_populated++; } return nr_populated; -- Mel Gorman SUSE Labs

Re: [PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-22 Thread Mel Gorman
On Mon, Mar 22, 2021 at 06:25:03PM +, Chuck Lever III wrote: > > > > On Mar 22, 2021, at 5:18 AM, Mel Gorman wrote: > > > > This series is based on top of Matthew Wilcox's series "Rationalise > > __alloc_pages wrapper" and does not apply to

Re: [PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-22 Thread Mel Gorman
On Mon, Mar 22, 2021 at 01:04:46PM +0100, Jesper Dangaard Brouer wrote: > On Mon, 22 Mar 2021 09:18:42 + > Mel Gorman wrote: > > > This series is based on top of Matthew Wilcox's series "Rationalise > > __alloc_pages wrapper" and does not apply to 5.12-

[PATCH 3/3] mm/page_alloc: Add an array-based interface to the bulk page allocator

2021-03-22 Thread Mel Gorman
storage to store the pages. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 13 ++-- mm/page_alloc.c | 75 ++--- 2 files changed, 67 insertions(+), 21 deletions(-) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 4a304fd39916

[PATCH 0/3 v5] Introduce a bulk order-0 page allocator

2021-03-22 Thread Mel Gorman
This series is based on top of Matthew Wilcox's series "Rationalise __alloc_pages wrapper" and does not apply to 5.12-rc2. If you want to test and are not using Andrew's tree as a baseline, I suggest using the following git tree git://git.kernel.org/pub/scm/linux/kernel/git/mel/linux.git mm-bulk-r

[PATCH 2/3] mm/page_alloc: Add a bulk page allocator

2021-03-22 Thread Mel Gorman
is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman Acked-by: Vlastimil Babka --- include/linux/gfp.h | 11 mm/page_alloc.c

[PATCH 1/3] mm/page_alloc: Rename alloced to allocated

2021-03-22 Thread Mel Gorman
f the fake word mallocated. To be consistent, this preparation patch renames alloced to allocated in rmqueue_bulk so the bulk allocator and per-cpu allocator use similar names when the bulk allocator is introduced. Signed-off-by: Mel Gorman --- mm/page_alloc.c | 8 1 file changed

Re: [PATCH 3/7] mm/page_alloc: Add a bulk page allocator

2021-03-22 Thread Mel Gorman
On Fri, Mar 19, 2021 at 07:18:32PM +0100, Vlastimil Babka wrote: > On 3/12/21 4:43 PM, Mel Gorman wrote: > > This patch adds a new page allocator interface via alloc_pages_bulk, > > and __alloc_pages_bulk_nodemask. A caller requests a number of pages > > to be allocated and

Re: [PATCH 1/7] mm/page_alloc: Move gfp_allowed_mask enforcement to prepare_alloc_pages

2021-03-19 Thread Mel Gorman
On Fri, Mar 19, 2021 at 05:11:39PM +0100, Vlastimil Babka wrote: > On 3/12/21 4:43 PM, Mel Gorman wrote: > > __alloc_pages updates GFP flags to enforce what flags are allowed > > during a global context such as booting or suspend. This patch moves the > > enforcement

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-15 Thread Mel Gorman
is a slight risk that with a spare array that only needed 1 page in reality would fail the watermark check but on low memory, allocations take more work anyway. That definition of nr_pages would avoid the potential buffer overrun but both you and Jesper would need to agree that it's an appropriate API. -- Mel Gorman SUSE Labs

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-14 Thread Mel Gorman
s. This patch adds an array-based interface to the API to avoid multiple list iterations. The page list interface is preserved to avoid requiring all users of the bulk API to allocate and manage enough storage to store the pages. Signed-off-by: Mel Gorman diff --git a/include/linux/gfp.h b/include/

Re: [PATCH 7/7] net: page_pool: use alloc_pages_bulk in refill code path

2021-03-13 Thread Mel Gorman
even if you placed a number of > pages in the cache. > I think you're right but I'm punting this to Jesper to fix. He's more familiar with this particular code and can verify the performance is still ok for high speed networks. -- Mel Gorman SUSE Labs

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-13 Thread Mel Gorman
easily spliced on a private cache or simply handed back to the free API without having to track exactly how many pages are on the array or where they are located. With arrays, the elements have to be copied one at a time. I think it's easier overall for the callers to deal with a list in the initial implementation and only switch to arrays when there is an extremely hot user that benefits heavily if pages are inserted directly into an array. -- Mel Gorman SUSE Labs

Re: [PATCH 5/7] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-13 Thread Mel Gorman
27;m happy enough to include them in the series even if it ultimately gets merged via the NFSD tree. It'll need to be kept as a separate pull request to avoid delaying unrelated NFSD patches until Andrew merges the mm parts. -- Mel Gorman SUSE Labs

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-12 Thread Mel Gorman
an easy API to start with. Optimise the implementation if it is a bottleneck. Only make the API harder to use if the callers are really willing to always allocate and size the array in advance and it's shown that it really makes a big difference performance-wise. -- Mel Gorman SUSE Labs

[PATCH 5/7] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-12 Thread Mel Gorman
From: Chuck Lever Reduce the rate at which nfsd threads hammer on the page allocator. This improves throughput scalability by enabling the threads to run more independently of each other. Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 43

[PATCH 4/7] SUNRPC: Set rq_page_end differently

2021-03-12 Thread Mel Gorman
r() was renamed nfsd_splice_actor() by commit cf8208d0eabd ("sendfile: convert nfsd to splice_direct_to_actor()"). Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/sunrpc/svc_xprt.

[PATCH 3/7] mm/page_alloc: Add a bulk page allocator

2021-03-12 Thread Mel Gorman
roved but it would require refactoring. The intent is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 12 + mm/page_alloc.c

[PATCH 6/7] net: page_pool: refactor dma_map into own function page_pool_dma_map

2021-03-12 Thread Mel Gorman
From: Jesper Dangaard Brouer In preparation for next patch, move the dma mapping into its own function, as this will make it easier to follow the changes. V2: make page_pool_dma_map return boolean (Ilias) Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman Reviewed-by: Ilias

[PATCH 7/7] net: page_pool: use alloc_pages_bulk in refill code path

2021-03-12 Thread Mel Gorman
using the alloc_pages_bulk API (3,677,958 pps -> 4,368,926 pps). [1] https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool06_alloc_pages_bulk.org Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman Reviewed-by: Ilias Apalodimas --- net/core/page_pool.c |

[PATCH 2/7] mm/page_alloc: Rename alloced to allocated

2021-03-12 Thread Mel Gorman
f the fake word mallocated. To be consistent, this preparation patch renames alloced to allocated in rmqueue_bulk so the bulk allocator and per-cpu allocator use similar names when the bulk allocator is introduced. Signed-off-by: Mel Gorman --- mm/page_alloc.c | 8 1 file changed

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

2021-03-12 Thread Mel Gorman
This series is based on top of Matthew Wilcox's series "Rationalise __alloc_pages wrapper" and does not apply to 5.12-rc2. If you want to test and are not using Andrew's tree as a baseline, I suggest using the following git tree git://git.kernel.org/pub/scm/linux/kernel/git/mel/linux.git mm-bulk-r

[PATCH 1/7] mm/page_alloc: Move gfp_allowed_mask enforcement to prepare_alloc_pages

2021-03-12 Thread Mel Gorman
, it is obvious that __alloc_pages() and __alloc_pages use different names for the same variable. This is an unnecessary complication so rename gfp_mask to gfp in prepare_alloc_pages() so the name is consistent. No functional change. Signed-off-by: Mel Gorman --- mm/page_alloc.c | 25

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-12 Thread Mel Gorman
On Fri, Mar 12, 2021 at 12:43:31PM +, Matthew Wilcox wrote: > On Wed, Mar 10, 2021 at 10:46:15AM +0000, Mel Gorman wrote: > > +int __alloc_pages_bulk_nodemask(gfp_t gfp_mask, int preferred_nid, > > + nodemask_t *nodemas

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-12 Thread Mel Gorman
e could have the caller provide the array to store struct-page > pointers, like we do with kmem_cache_alloc_bulk API. > That is a possibility but it ties the caller into declaring an array, either via kmalloc, within an existing struct or on-stack. They would then need to ensure that nr_pages does not exceed the array size or pass in the array size. It's more error prone and a harder API to use. > You likely have good reasons for returning the pages as a list (via > lru), as I can see/imagine that there are some potential for grabbing > the entire PCP-list. > I used a list so that user was only required to define a list_head on the stack to use the API. -- Mel Gorman SUSE Labs

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-11 Thread Mel Gorman
e, 0, gfp_mask, 0); > > + > > + return alloced; > > + > > +failed_irq: > > + local_irq_restore(flags); > > + > > +failed: > > + page = __alloc_pages_nodemask(gfp_mask, 0, preferred_nid, nodemask); > > + if (page) { > > + alloced++; > > You could be explicit here and just set alloced to 1 and make this a > write instead of bothering with the increment. Either that or just > simplify this and return 1 after the list_add, and return 0 in the > default case assuming you didn't allocate a page. > The intent was to deal with the case that someone in the future used the failed path when a page had already been allocated. I cannot imagine why that would be done so I can explicitly used allocated = 1. I'm still letting it fall through to avoid two return paths in failed path. I do not think it really matters but it feels redundant. Thanks Alexander! -- Mel Gorman SUSE Labs

[PATCH 5/5] net: page_pool: use alloc_pages_bulk in refill code path

2021-03-11 Thread Mel Gorman
using the alloc_pages_bulk API (3,677,958 pps -> 4,368,926 pps). [1] https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool06_alloc_pages_bulk.org Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman Reviewed-by: Ilias Apalodimas --- net/core/page_pool.c |

[PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-11 Thread Mel Gorman
roved but it would require refactoring. The intent is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 13 + mm/page_alloc.c

[PATCH 3/5] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-11 Thread Mel Gorman
From: Chuck Lever Reduce the rate at which nfsd threads hammer on the page allocator. This improve throughput scalability by enabling the threads to run more independently of each other. Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 43

[PATCH 4/5] net: page_pool: refactor dma_map into own function page_pool_dma_map

2021-03-11 Thread Mel Gorman
From: Jesper Dangaard Brouer In preparation for next patch, move the dma mapping into its own function, as this will make it easier to follow the changes. V2: make page_pool_dma_map return boolean (Ilias) Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman Reviewed-by: Ilias

[PATCH 1/5] SUNRPC: Set rq_page_end differently

2021-03-11 Thread Mel Gorman
r() was renamed nfsd_splice_actor() by commit cf8208d0eabd ("sendfile: convert nfsd to splice_direct_to_actor()"). Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/sunrpc/svc_xprt.

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

2021-03-11 Thread Mel Gorman
Changelog since v3 o Prep new pages with IRQs enabled o Minor documentation update Changelog since v1 o Parenthesise binary and boolean comparisons o Add reviewed-bys o Rebase to 5.12-rc2 This series introduces a bulk order-0 page allocator with sunrpc and the network page pool being the first us

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

2021-03-11 Thread Mel Gorman
On Wed, Mar 10, 2021 at 03:47:04PM -0800, Andrew Morton wrote: > On Wed, 10 Mar 2021 10:46:13 +0000 Mel Gorman > wrote: > > > This series introduces a bulk order-0 page allocator with sunrpc and > > the network page pool being the first users. > > > > Right

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-11 Thread Mel Gorman
On Wed, Mar 10, 2021 at 03:46:50PM -0800, Andrew Morton wrote: > On Wed, 10 Mar 2021 10:46:15 +0000 Mel Gorman > wrote: > > > This patch adds a new page allocator interface via alloc_pages_bulk, > > and __alloc_pages_bulk_nodemask. A caller requests a number of pages &g

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-10 Thread Mel Gorman
On Wed, Mar 10, 2021 at 01:04:17PM +0200, Shay Agroskin wrote: > > Mel Gorman writes: > > > > > diff --git a/include/linux/gfp.h b/include/linux/gfp.h > > index 8572a1474e16..4903d1cc48dc 100644 > > --- a/include/linux/gfp.h > > +++ b/include/linux/gfp.h

[PATCH 4/5] net: page_pool: refactor dma_map into own function page_pool_dma_map

2021-03-10 Thread Mel Gorman
From: Jesper Dangaard Brouer In preparation for next patch, move the dma mapping into its own function, as this will make it easier to follow the changes. V2: make page_pool_dma_map return boolean (Ilias) Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman Reviewed-by: Ilias

[PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-10 Thread Mel Gorman
roved but it would require refactoring. The intent is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 13 + mm/page_alloc.c

[PATCH 5/5] net: page_pool: use alloc_pages_bulk in refill code path

2021-03-10 Thread Mel Gorman
using the alloc_pages_bulk API (3,677,958 pps -> 4,368,926 pps). [1] https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool06_alloc_pages_bulk.org Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman Reviewed-by: Ilias Apalodimas --- net/core/page_pool.c |

[PATCH 3/5] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-10 Thread Mel Gorman
From: Chuck Lever Reduce the rate at which nfsd threads hammer on the page allocator. This improve throughput scalability by enabling the threads to run more independently of each other. Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 43

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

2021-03-10 Thread Mel Gorman
Changelog since v1 o Parenthesise binary and boolean comparisons o Add reviewed-bys o Rebase to 5.12-rc2 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 o

[PATCH 1/5] SUNRPC: Set rq_page_end differently

2021-03-10 Thread Mel Gorman
r() was renamed nfsd_splice_actor() by commit cf8208d0eabd ("sendfile: convert nfsd to splice_direct_to_actor()"). Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/sunrpc/svc_xprt.

Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-09 Thread Mel Gorman
} > > > > - gfp_mask &= gfp_allowed_mask; > > - alloc_mask = gfp_mask; > > Is this change intentional? Yes so that prepare_alloc_pages works for both the single page and bulk allocator. Slightly less code duplication. -- Mel Gorman SUSE Labs

Re: [PATCH 4/5] net: page_pool: refactor dma_map into own function page_pool_dma_map

2021-03-03 Thread Mel Gorman
On Tue, Mar 02, 2021 at 08:49:06PM +0200, Ilias Apalodimas wrote: > Hi Mel, > > Can you please CC me in future revisions. I almost missed that! > Will do. > On Mon, Mar 01, 2021 at 04:11:59PM +0000, Mel Gorman wrote: > > From: Jesper Dangaard Brouer > > > &

[PATCH 3/5] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-03-01 Thread Mel Gorman
From: Chuck Lever Reduce the rate at which nfsd threads hammer on the page allocator. This improve throughput scalability by enabling the threads to run more independently of each other. Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 43

[PATCH 1/5] SUNRPC: Set rq_page_end differently

2021-03-01 Thread Mel Gorman
r() was renamed nfsd_splice_actor() by commit cf8208d0eabd ("sendfile: convert nfsd to splice_direct_to_actor()"). Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/sunrpc/svc_xprt.

[PATCH 5/5] net: page_pool: use alloc_pages_bulk in refill code path

2021-03-01 Thread Mel Gorman
using the alloc_pages_bulk API (3,677,958 pps -> 4,368,926 pps). [1] https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool06_alloc_pages_bulk.org Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- net/core/page_pool.c |

[PATCH 2/5] mm/page_alloc: Add a bulk page allocator

2021-03-01 Thread Mel Gorman
roved but it would require refactoring. The intent is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 13 + mm/page_alloc.c

[PATCH 4/5] net: page_pool: refactor dma_map into own function page_pool_dma_map

2021-03-01 Thread Mel Gorman
From: Jesper Dangaard Brouer In preparation for next patch, move the dma mapping into its own function, as this will make it easier to follow the changes. V2: make page_pool_dma_map return boolean (Ilias) Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- net/core

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

2021-03-01 Thread Mel Gorman
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

Re: [PATCH RFC net-next 3/3] mm: make zone->free_area[order] access faster

2021-02-25 Thread Mel Gorman
e_list cache-aligned because of its location in the > > struct zone so what purpose does __pad_to_align_free_list serve? > > The purpose of purpose of __pad_to_align_free_list is because struct > list_head is 16 bytes, thus I wanted to align free_list to 16, given we > already have wasted the space. > Ok, that's fair enough but it's also somewhat of a micro-optimisation as whether it helps or not depends on the architecture. I don't think I'll pick this up, certainly in the context of the bulk allocator but it's worth keeping in mind. It's an interesting corner case at least. -- Mel Gorman SUSE Labs

Re: [PATCH RFC net-next 3/3] mm: make zone->free_area[order] access faster

2021-02-25 Thread Mel Gorman
nt size, I'm less certain and wonder if something else is going on. Finally, moving nr_free to the end and cache aligning it will make the started of each free_list cache-aligned because of its location in the struct zone so what purpose does __pad_to_align_free_list serve? -- Mel Gorman SUSE Labs

Re: [RFC PATCH 0/3] Introduce a bulk order-0 page allocator for sunrpc

2021-02-24 Thread Mel Gorman
On Wed, Feb 24, 2021 at 12:27:23PM +0100, Jesper Dangaard Brouer wrote: > On Wed, 24 Feb 2021 10:26:00 + > Mel Gorman wrote: > > > This is a prototype series that introduces a bulk order-0 page allocator > > with sunrpc being the first user. The implementatio

[PATCH 3/3] SUNRPC: Refresh rq_pages using a bulk page allocator

2021-02-24 Thread Mel Gorman
From: Chuck Lever Reduce the rate at which nfsd threads hammer on the page allocator. This improve throughput scalability by enabling the threads to run more independently of each other. Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 43

[RFC PATCH 0/3] Introduce a bulk order-0 page allocator for sunrpc

2021-02-24 Thread Mel Gorman
This is a prototype series that introduces a bulk order-0 page allocator with sunrpc being the first user. The implementation is not particularly efficient and the intention is to iron out what the semantics of the API should be. That said, sunrpc was reported to have reduced allocation latency whe

[PATCH 1/3] SUNRPC: Set rq_page_end differently

2021-02-24 Thread Mel Gorman
r() was renamed nfsd_splice_actor() by commit cf8208d0eabd ("sendfile: convert nfsd to splice_direct_to_actor()"). Signed-off-by: Chuck Lever Signed-off-by: Mel Gorman --- net/sunrpc/svc_xprt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/sunrpc/svc_xprt.

[PATCH 2/3] mm, page_alloc: Add a bulk page allocator

2021-02-24 Thread Mel Gorman
roved but it would require refactoring. The intent is to make it available early to determine what semantics are required by different callers. Once the full semantics are nailed down, it can be refactored. Signed-off-by: Mel Gorman --- include/linux/gfp.h | 13 + mm/page_alloc.c

Re: alloc_pages_bulk()

2021-02-22 Thread Mel Gorman
On Mon, Feb 22, 2021 at 12:42:46PM +0100, Jesper Dangaard Brouer wrote: > On Mon, 22 Feb 2021 09:42:56 + > Mel Gorman wrote: > > > On Mon, Feb 15, 2021 at 05:10:38PM +0100, Jesper Dangaard Brouer wrote: > > > > > > On Mon, 15 Feb 2021 12:00

Re: Serious performance degradation in Linux 4.15

2018-02-16 Thread Mel Gorman
that are failing because they rely on expect. You could try running with --no-monitor. -- Mel Gorman SUSE Labs

Re: Page allocator bottleneck

2017-11-08 Thread Mel Gorman
d to be excellent justification for such a move. I haven't posted the patches properly yet because mmotm is carrying too many patches as it is and this patch indirectly depends on the contents. I also didn't write memory hot-remove support which would be a requirement before merging. I hadn't intended to put further effort into it until I had some evidence the approach had promise. My own testing indicated it worked but the drivers I was using for network tests did not allocate intensely enough to show any major gain/loss. -- Mel Gorman SUSE Labs

Re: Page allocator bottleneck

2017-11-03 Thread Mel Gorman
On Thu, Nov 02, 2017 at 07:21:09PM +0200, Tariq Toukan wrote: > > > On 18/09/2017 12:16 PM, Tariq Toukan wrote: > > > > > > On 15/09/2017 1:23 PM, Mel Gorman wrote: > > > On Thu, Sep 14, 2017 at 07:49:31PM +0300, Tariq Toukan wrote: > > > > In

Re: Page allocator bottleneck

2017-09-15 Thread Mel Gorman
y successful path forward but it's currently stalled as everyone that was previously involved is too busy. -- Mel Gorman SUSE Labs

Re: Heads-up: two regressions in v4.11-rc series

2017-04-20 Thread Mel Gorman
On Thu, Apr 20, 2017 at 11:00:42AM +0200, Jesper Dangaard Brouer wrote: > Hi Linus, > > Just wanted to give a heads-up on two regressions in 4.11-rc series. > > (1) page allocator optimization revert > > Mel Gorman and I have been playing with optimizing the page allocator

Re: [PATCH] Revert "mm, page_alloc: only use per-cpu allocator for irq-safe requests"

2017-04-15 Thread Mel Gorman
On Sat, Apr 15, 2017 at 09:28:33PM +0200, Jesper Dangaard Brouer wrote: > On Sat, 15 Apr 2017 15:53:50 +0100 > Mel Gorman wrote: > > > This reverts commit 374ad05ab64d696303cec5cc8ec3a65d457b7b1c. While the > > patch worked great for userspace allocations, the fact that soft

Re: [PATCH] mm, page_alloc: re-enable softirq use of per-cpu page allocator

2017-04-15 Thread Mel Gorman
On Fri, Apr 14, 2017 at 12:10:27PM +0200, Jesper Dangaard Brouer wrote: > On Mon, 10 Apr 2017 14:26:16 -0700 > Andrew Morton wrote: > > > On Mon, 10 Apr 2017 16:08:21 +0100 Mel Gorman > > wrote: > > > > > IRQ context were excluded from using the Per-Cp

[PATCH] Revert "mm, page_alloc: only use per-cpu allocator for irq-safe requests"

2017-04-15 Thread Mel Gorman
were as follows Baseline v4.10.0 : 60316 Mbit/s Current 4.11.0-rc6: 47491 Mbit/s This patch: 60662 Mbit/s As this is a regression, I wish to revert to noirq allocator for now and go back to the drawing board. Signed-off-by: Mel Gorman Reported-by: Tariq Toukan --- mm/page_alloc.c

Re: [PATCH] mm, page_alloc: re-enable softirq use of per-cpu page allocator

2017-04-11 Thread Mel Gorman
n I'll post the revert and try this again outside of an rc cycle. That would be preferable to releasing 4.11 with a known regression. -- Mel Gorman SUSE Labs

Re: Page allocator order-0 optimizations merged

2017-04-10 Thread Mel Gorman
t; What type of allocations is the benchmark doing? In particular, what context is the microbenchmark allocating from? Lastly, how did you isolate the patch, did you test two specific commits in mainline or are you comparing 4.10 with 4.11-rcX? -- Mel Gorman SUSE Labs

[PATCH] mm, page_alloc: re-enable softirq use of per-cpu page allocator

2017-04-10 Thread Mel Gorman
er date to offset the irq enable/disable overhead. Fixes: 374ad05ab64d ("mm, page_alloc: only use per-cpu allocator for irq-safe requests") Signed-off-by: Jesper Dangaard Brouer Signed-off-by: Mel Gorman --- mm/page_alloc.c | 26 +- 1 file changed, 17 insertions(+),

Re: [Nbd] [PATCH 3/4] treewide: convert PF_MEMALLOC manipulations to new helpers

2017-04-06 Thread Mel Gorman
not used for network traffic that is not involved with swap. This means that under heavy swap load, it was perfectly possible for unrelated traffic to get dropped for quite some time. -- Mel Gorman SUSE Labs

Re: in_irq_or_nmi() and RFC patch

2017-04-05 Thread Mel Gorman
On Mon, Apr 03, 2017 at 01:05:06PM +0100, Mel Gorman wrote: > > Started performance benchmarking: > > 163 cycles = current state > > 183 cycles = with BH disable + in_irq > > 218 cycles = with BH disable + in_irq + irqs_disabled > > > > Thus, the perform

Re: in_irq_or_nmi() and RFC patch

2017-04-03 Thread Mel Gorman
On Thu, Mar 30, 2017 at 05:07:08PM +0200, Jesper Dangaard Brouer wrote: > On Thu, 30 Mar 2017 14:04:36 +0100 > Mel Gorman wrote: > > > On Wed, Mar 29, 2017 at 09:44:41PM +0200, Jesper Dangaard Brouer wrote: > > > > Regardless or using in_irq() (or in com

Re: in_irq_or_nmi() and RFC patch

2017-03-30 Thread Mel Gorman
m, page_alloc: re-enable softirq use of per-cpu page allocator > > From: Jesper Dangaard Brouer > Other than the slightly misleading comments about NMI which could explain "this potentially misses an NMI but an NMI allocating pages is brain damaged", I don't see a problem. The irqs_disabled() check is a subtle but it's not earth shattering and it still helps the 100GiB cases with the limited cycle budget to process packets. -- Mel Gorman SUSE Labs

Re: Page allocator order-0 optimizations merged

2017-03-27 Thread Mel Gorman
or him as well, this looks far safer patch than having a dedicate IRQ-safe queue. Your concern about the BH scheduling point is valid but if it's proven to be a problem, there is still the option of a partial revert. -- Mel Gorman SUSE Labs

Re: Page allocator order-0 optimizations merged

2017-03-27 Thread Mel Gorman
ush it as a fix with the time I currently have available. For 4.11, it's safer to revert and try again later bearing in mind that softirqs are in the critical allocation path for some drivers. I'll prepare a patch. -- Mel Gorman SUSE Labs

  1   2   >