From: Jesper Dangaard Brouer <hawk@kernel.org>
To: Ratheesh Kannoth <rkannoth@marvell.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: hawk@kernel.org, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Alexander Lobakin <aleksander.lobakin@intel.com>,
Yunsheng Lin <linyunsheng@huawei.com>,
Alexander Duyck <alexander.duyck@gmail.com>
Subject: Re: [PATCH net-next] page_pool: Clamp ring size to 32K
Date: Mon, 7 Aug 2023 13:42:43 +0200 [thread overview]
Message-ID: <b8eb926e-cfc9-b082-5bb9-719be3937c5d@kernel.org> (raw)
In-Reply-To: <20230807034932.4000598-1-rkannoth@marvell.com>
On 07/08/2023 05.49, Ratheesh Kannoth wrote:
> https://lore.kernel.org/netdev/20230804133512.4dbbbc16@kernel.org/T/
> Capping the recycle ring to 32k instead of returning the error.
>
Page pool (PP) is just a cache of pages. The driver octeontx2 (in link)
is creating an excessive large cache of pages. The drivers RX
descriptor ring size should be independent of the PP ptr_ring size, as
it is just a cache that grows as a functions of the in-flight packet
workload, it functions as a "shock absorber".
32768 pages (4KiB) is approx 128 MiB, and this will be per RX-queue.
The RX-desc ring (obviously) pins down these pages (immediately), but PP
ring starts empty. As the workload varies the "shock absorber" effect
will let more pages into the system, that will travel the PP ptr_ring.
As all pages originating from the same PP instance will get recycled,
the in-flight pages in the "system" (PP ptr_ring) will grow over time.
The PP design have the problem that it never releases or reduces pages
in this shock absorber "closed" system. (Cc. PP people/devel) we should
consider implementing a MM shrinker callback (include/linux/shrinker.h).
Are the systems using driver octeontx2 ready to handle 128MiB memory per
RX-queue getting pinned down overtime? (this could lead to some strange
do debug situation if the memory is not sufficient)
--Jesper
> Suggested-by: Jakub Kicinski <kuba@kernel.org>
> Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
> ---
> net/core/page_pool.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/net/core/page_pool.c b/net/core/page_pool.c
> index 5d615a169718..404f835a94be 100644
> --- a/net/core/page_pool.c
> +++ b/net/core/page_pool.c
> @@ -182,9 +182,9 @@ static int page_pool_init(struct page_pool *pool,
> if (pool->p.pool_size)
> ring_qsize = pool->p.pool_size;
>
> - /* Sanity limit mem that can be pinned down */
> + /* Clamp to 32K */
> if (ring_qsize > 32768)
> - return -E2BIG;
> + ring_qsize = 32768;
>
> /* DMA direction is either DMA_FROM_DEVICE or DMA_BIDIRECTIONAL.
> * DMA_BIDIRECTIONAL is for allowing page used for DMA sending,
next prev parent reply other threads:[~2023-08-07 11:45 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-07 3:49 [PATCH net-next] page_pool: Clamp ring size to 32K Ratheesh Kannoth
2023-08-07 11:42 ` Jesper Dangaard Brouer [this message]
2023-08-07 14:18 ` Alexander H Duyck
2023-08-07 17:20 ` Jakub Kicinski
2023-08-07 20:11 ` Jesper Dangaard Brouer
2023-08-08 2:26 ` [EXT] " Ratheesh Kannoth
2023-08-08 13:29 ` Alexander Lobakin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b8eb926e-cfc9-b082-5bb9-719be3937c5d@kernel.org \
--to=hawk@kernel.org \
--cc=aleksander.lobakin@intel.com \
--cc=alexander.duyck@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=ilias.apalodimas@linaro.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linyunsheng@huawei.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rkannoth@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox