From: Pavel Begunkov <asml.silence@gmail.com>
To: Jens Axboe <axboe@kernel.dk>, io-uring@vger.kernel.org
Subject: Re: [PATCH 0/4] implement vectored registered buffers for sendzc
Date: Thu, 24 Oct 2024 23:14:28 +0100 [thread overview]
Message-ID: <4f38ca15-a341-4d93-80eb-18f79fdd6664@gmail.com> (raw)
In-Reply-To: <daeacc90-e5b4-471d-a79e-74ae10eb4aba@kernel.dk>
On 10/24/24 20:56, Jens Axboe wrote:
> On 10/24/24 12:13 PM, Pavel Begunkov wrote:
>> On 10/24/24 19:00, Jens Axboe wrote:
>>> On 10/24/24 11:56 AM, Pavel Begunkov wrote:
>>>> On 10/24/24 18:19, Jens Axboe wrote:
>>>>> On 10/24/24 10:06 AM, Pavel Begunkov wrote:
>>>>>> On 10/24/24 16:45, Jens Axboe wrote:
>> ...>>>> Seems like you're agreeing but then stating the opposite, there
>>>>>> is some confusion. I'm saying that IMHO the right API wise way
>>>>>> is resolving an imu at issue time, just like it's done for fixed
>>>>>> files, and what your recent series did for send zc.
>>>>>
>>>>> Yeah early morning confusion I guess. And I do agree in principle,
>>>>> though for registered buffers, those have to be registered upfront
>>>>> anyway, so no confusion possible with prep vs issue there. For provided
>>>>> buffers, it only matters for the legacy ones, which generally should not
>>>>> be used. Doesn't change the fact that you're technically correct, the
>>>>> right time to resolve them would be at issue time.
>>>>
>>>> I'm talking about sendmsg with iovec. Registered buffers should
>>>> be registered upfront, that's right, but iovec should be copied
>>>> at prep, and finally resolved into bvecs incl the imu/buffer lookup
>>>> at the issue time. And those are two different points in time,
>>>> maybe because of links, draining or anything else. And if they
>>>> should be at different moments, there is no way to do it while
>>>> copying iovec.
>>>
>>> Oh I totally follow, the incremental approach would only work if it can
>>> be done at prep time. If at issue time, then it has to turn an existing
>>> iovec array into the appropriate bvec array. And that's where you'd have
>>> to do some clever bits to avoid holding both a full bvec and iovec array
>>> in memory, which would be pretty wasteful/inefficient. If done at issue
>>
>> Why would it be wasteful and inefficient? No more than jumping
>> though that incremental infra for each chunk, doubling the size
>> of the array / reallocating / memcpy'ing it, instead of a tight
>> loop doing the entire conversion.
>
> Because it would prevent doing an iovec at-the-time import, then turning
> it into the desired bvec. That's one loop instead of two. You would have
> the space upfront, there should be no need to realloc+memcpy. And then
> there's the space concern, where the initial import is an iovec, and
> then you need a bvec. For 64-bit that's fine as they take up the same
> amount of space,
That's not true, each iov can produce multiple bvec entries so
iovs might get overwritten if you do it the simplest way.
> but for 32-bit it'd make incremental importing from a
> stable iovec to a bvec array a bit more tricky (and would need realloc,
> unless you over-alloc'ed for the iovec array upfront).
And that's not true, you can still well do it in place if
iovec is placed right in the memory, which I explicitly
noted there are simple enough ways to do it in place
without extra reallocs.
--
Pavel Begunkov
next prev parent reply other threads:[~2024-10-24 22:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-23 2:38 [PATCH 0/4] implement vectored registered buffers for sendzc Pavel Begunkov
2024-10-23 2:38 ` [PATCH 1/4] io_uring/net: introduce io_kmsg_set_iovec Pavel Begunkov
2024-10-23 2:38 ` [PATCH 2/4] io_uring/net: allow mixed bvec/iovec caching Pavel Begunkov
2024-10-23 2:38 ` [PATCH 3/4] io_uring: vectored registered buffer import Pavel Begunkov
2024-10-23 2:38 ` [PATCH 4/4] io_uring/net: sendzc with vectored fixed buffers Pavel Begunkov
2024-10-23 13:52 ` [PATCH 0/4] implement vectored registered buffers for sendzc Jens Axboe
2024-10-24 15:29 ` Pavel Begunkov
2024-10-24 15:45 ` Jens Axboe
2024-10-24 16:06 ` Pavel Begunkov
2024-10-24 17:19 ` Jens Axboe
2024-10-24 17:56 ` Pavel Begunkov
2024-10-24 18:00 ` Jens Axboe
2024-10-24 18:13 ` Pavel Begunkov
2024-10-24 19:56 ` Jens Axboe
2024-10-24 22:14 ` Pavel Begunkov [this message]
2024-10-24 22:22 ` Jens Axboe
2024-10-24 22:51 ` 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=4f38ca15-a341-4d93-80eb-18f79fdd6664@gmail.com \
--to=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.