Thread (8 messages) 8 messages, 4 authors, 2023-07-18

Re: RE: [PATCH net-next] net: mana: Add page pool for RX buffers

From: Zhu Yanjun <hidden>
Date: 2023-07-18 00:00:09
Also in: bpf, linux-hyperv, linux-rdma, lkml

在 2023/7/14 20:51, Haiyang Zhang 写道:
quoted
-----Original Message-----
From: Jesper Dangaard Brouer <redacted>
On 14/07/2023 05.53, Jakub Kicinski wrote:
quoted
On Thu, 13 Jul 2023 14:48:45 +0000 Haiyang Zhang wrote:
quoted
Add page pool for RX buffers for faster buffer cycle and reduce CPU
usage.

Get an extra ref count of a page after allocation, so after upper
layers put the page, it's still referenced by the pool. We can reuse
it as RX buffer without alloc a new page.
Please use the real page_pool API from include/net/page_pool.h
We've moved past every driver reinventing the wheel, sorry.
+1

Quoting[1]: Documentation/networking/page_pool.rst

   Basic use involves replacing alloc_pages() calls with the
page_pool_alloc_pages() call.
   Drivers should use page_pool_dev_alloc_pages() replacing
dev_alloc_pages().
  
Thank Jakub and Jesper for the reviews.
I'm aware of the page_pool.rst doc, and actually tried it before this
patch, but I got lower perf. If I understand correctly, we should call
page_pool_release_page() before passing the SKB to napi_gro_receive().
If I get this commit correctly, this commit is to use page pool to get 
better performance.

IIRC, folio is to make memory optimization. From the performance 
results, with folio, the performance will get about 10%.

So not sure if the folio can be used in this commit to get better 
performance.

That is my 2 cent.

Zhu Yanjun
I found the page_pool_dev_alloc_pages() goes through the slow path,
because the page_pool_release_page() let the page leave the pool.

Do we have to call page_pool_release_page() before passing the SKB
to napi_gro_receive()? Any better way to recycle the pages from the
upper layer of non-XDP case?

Thanks,
- Haiyang
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help