From: Jakub Kicinski <kuba@kernel.org>
To: Pavel Begunkov <asml.silence@gmail.com>
Cc: David Wei <dw@davidwei.uk>,
io-uring@vger.kernel.org, netdev@vger.kernel.org,
Jens Axboe <axboe@kernel.dk>, Paolo Abeni <pabeni@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jesper Dangaard Brouer <hawk@kernel.org>,
David Ahern <dsahern@kernel.org>,
Mina Almasry <almasrymina@google.com>,
Stanislav Fomichev <stfomichev@gmail.com>,
Joe Damato <jdamato@fastly.com>,
Pedro Tammela <pctammela@mojatatu.com>
Subject: Re: [PATCH net-next v8 07/17] net: page_pool: introduce page_pool_mp_return_in_cache
Date: Tue, 10 Dec 2024 16:06:51 -0800 [thread overview]
Message-ID: <20241210160651.32b5e8f8@kernel.org> (raw)
In-Reply-To: <fc1715f6-c123-43c6-9562-f84c7aab4ed2@gmail.com>
On Tue, 10 Dec 2024 04:31:53 +0000 Pavel Begunkov wrote:
> >> + page_pool_dma_sync_for_device(pool, netmem, -1);
> >> + page_pool_fragment_netmem(netmem, 1);
> >> + pool->alloc.cache[pool->alloc.count++] = netmem;
> >
> > and here:
> >
> > return true;
> >
> > this say mps can use return value as a stop condition in a do {} while()
> > loop, without having to duplicate the check.
> >
> > do {
> > netmem = alloc...
> > ... logic;
> > } while (page_pool_mp_alloc_refill(pp, netmem));
> >
> > /* last netmem didn't fit in the cache */
> > return netmem;
>
> That last netmem is a problem. Returning it is not a bad option,
> but it doesn't feel right. Providers should rather converge to
> one way of returning buffers and batching here is needed.
>
> I'd rather prefer this one then
>
> while (pp_has_space()) {
> netmem = alloc();
> pp_push(netmem);
> }
>
> Any thoughts on that?
No strong preference. If I was the one who placed the ->alloc() call
the way it is placed it's probably because it saves us a conditional,
it saves us checking if the cache is empty.
If we want to have the page pool pick the last object out of the cache
I'd lean towards avoiding all the helpers. Make the callback:
void alloc_netmem(struct page_pool *pool, gfp_t gfp,
size_t cnt, netmem_ref *arr);
you get an @arr(ay) to fill up with up to @cnt elements. Mirroring
alloc_pages_bulk_array_node() (down to its, to me at least, unusual
ordering of arguments).
next prev parent reply other threads:[~2024-12-11 0:06 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-04 17:21 [PATCH net-next v8 00/17] io_uring zero copy rx David Wei
2024-12-04 17:21 ` [PATCH net-next v8 01/17] net: prefix devmem specific helpers David Wei
2024-12-04 21:00 ` Mina Almasry
2024-12-04 21:24 ` David Wei
2024-12-04 17:21 ` [PATCH net-next v8 02/17] net: generalise net_iov chunk owners David Wei
2024-12-09 17:01 ` Mina Almasry
2024-12-04 17:21 ` [PATCH net-next v8 03/17] net: page_pool: create hooks for custom page providers David Wei
2024-12-10 3:02 ` Jakub Kicinski
2024-12-10 16:31 ` David Wei
2024-12-04 17:21 ` [PATCH net-next v8 04/17] net: prepare for non devmem TCP memory providers David Wei
2024-12-09 17:04 ` Mina Almasry
2024-12-10 3:15 ` Jakub Kicinski
2024-12-10 3:53 ` Pavel Begunkov
2024-12-10 4:06 ` Jakub Kicinski
2024-12-10 4:15 ` Pavel Begunkov
2024-12-04 17:21 ` [PATCH net-next v8 05/17] net: page_pool: add ->scrub mem provider callback David Wei
2024-12-09 17:08 ` Mina Almasry
2024-12-09 17:24 ` Pavel Begunkov
2024-12-04 17:21 ` [PATCH net-next v8 06/17] net: page pool: add helper creating area from pages David Wei
2024-12-10 3:29 ` Jakub Kicinski
2024-12-10 3:58 ` Pavel Begunkov
2024-12-04 17:21 ` [PATCH net-next v8 07/17] net: page_pool: introduce page_pool_mp_return_in_cache David Wei
2024-12-09 17:15 ` Mina Almasry
2024-12-09 17:28 ` Pavel Begunkov
2024-12-10 3:40 ` Jakub Kicinski
2024-12-10 4:31 ` Pavel Begunkov
2024-12-11 0:06 ` Jakub Kicinski [this message]
2024-12-04 17:21 ` [PATCH net-next v8 08/17] net: add helper executing custom callback from napi David Wei
2024-12-10 3:44 ` Jakub Kicinski
2024-12-10 4:11 ` Pavel Begunkov
2024-12-04 17:21 ` [PATCH net-next v8 09/17] io_uring/zcrx: add interface queue and refill queue David Wei
2024-12-06 16:05 ` Simon Horman
2024-12-09 23:50 ` David Wei
2024-12-10 3:49 ` Jakub Kicinski
2024-12-10 4:03 ` Pavel Begunkov
2024-12-10 4:07 ` Jakub Kicinski
2024-12-04 17:21 ` [PATCH net-next v8 10/17] io_uring/zcrx: add io_zcrx_area David Wei
2024-12-04 17:21 ` [PATCH net-next v8 11/17] io_uring/zcrx: implement zerocopy receive pp memory provider David Wei
2024-12-10 4:01 ` Jakub Kicinski
2024-12-10 4:45 ` Pavel Begunkov
2024-12-10 4:50 ` Pavel Begunkov
2024-12-11 0:24 ` Jakub Kicinski
2024-12-11 14:42 ` Pavel Begunkov
2024-12-12 1:38 ` Jakub Kicinski
2024-12-12 13:42 ` Pavel Begunkov
2024-12-10 16:55 ` Mina Almasry
2024-12-04 17:21 ` [PATCH net-next v8 12/17] io_uring/zcrx: add io_recvzc request David Wei
2024-12-04 17:21 ` [PATCH net-next v8 13/17] io_uring/zcrx: set pp memory provider for an rx queue David Wei
2024-12-04 17:21 ` [PATCH net-next v8 14/17] io_uring/zcrx: add copy fallback David Wei
2024-12-04 17:21 ` [PATCH net-next v8 15/17] io_uring/zcrx: throttle receive requests David Wei
2024-12-04 17:21 ` [PATCH net-next v8 16/17] net: add documentation for io_uring zcrx David Wei
2024-12-09 17:51 ` Mina Almasry
2024-12-10 16:53 ` David Wei
2024-12-09 17:52 ` Mina Almasry
2024-12-10 16:54 ` David Wei
2024-12-04 17:21 ` [PATCH net-next v8 17/17] io_uring/zcrx: add selftest David Wei
2024-12-04 18:59 ` [PATCH net-next v8 00/17] io_uring zero copy rx Pavel Begunkov
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=20241210160651.32b5e8f8@kernel.org \
--to=kuba@kernel.org \
--cc=almasrymina@google.com \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=dw@davidwei.uk \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=io-uring@vger.kernel.org \
--cc=jdamato@fastly.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pctammela@mojatatu.com \
--cc=stfomichev@gmail.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;
as well as URLs for NNTP newsgroup(s).