public inbox for io-uring@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Peter Zijlstra <peterz@infradead.org>
Cc: io-uring@vger.kernel.org, linux-kernel@vger.kernel.org,
	tglx@linutronix.de, mingo@redhat.com
Subject: Re: [PATCH 7/7] io_uring: add futex waitv
Date: Wed, 12 Jul 2023 09:10:22 -0600	[thread overview]
Message-ID: <0ffd2e2f-a179-393b-bd0d-cd62a41ecb92@kernel.dk> (raw)
In-Reply-To: <20230712093152.GF3100107@hirez.programming.kicks-ass.net>

On 7/12/23 3:31?AM, Peter Zijlstra wrote:
> On Tue, Jul 11, 2023 at 06:47:05PM -0600, Jens Axboe wrote:
>> Needs a bit of splitting and a few hunks should go further back (like
>> the wake handler typedef).
>>
>> WIP, adds IORING_OP_FUTEX_WAITV - pass in an array of futex addresses,
>> and wait on all of them until one of them triggers.
>>
> 
> So I'm once again not following. FUTEX_WAITV is to wait on multiple
> futexes and get a notification when any one of them wakes up with an
> index to indicate which one.

Right

> How exactly is that different from multiple FUTEX_WAIT entries in the
> io_uring thing itself? Admittedly I don't actually know much of anything
> when it comes to io_uring, but isn't the idea that queue multiple
> 'syscall' like things and get individual completions back?
> 
> So how does WAITV make sense here?

You most certainly could just queue N FUTEX_WAIT operations rather than
a single FUTEX_WAITV, but it becomes pretty cumbersome to deal with.
First of all, you'd now get N completions you have to deal with. That's
obviously doable, but you'd probably also need to care about
cancelations of the N-1 FUTEX_WAIT that weren't triggered.

For those reasons, I do think having a separate FUTEX_WAITV makes a lot
more sense. It's a single request and there's no cleanup or cancelation
work to run when just one futex triggers. Tongue in cheek, but you could
also argue that why would you need futex waitv support in the kernel,
when you could just have N processes wait on N futexes? We can certainly
do that a LOT more efficiently with io_uring even without FUTEX_WAITV,
but from an efficiency and usability point of view, having FUTEX_WAITV
makes this a lot easier than dealing with N requests and cancelations on
completion.

-- 
Jens Axboe


      reply	other threads:[~2023-07-12 15:10 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-12  0:46 [PATCHSET 0/7] Add io_uring futex/futexv support Jens Axboe
2023-07-12  0:46 ` [PATCH 1/7] futex: abstract out futex_op_to_flags() helper Jens Axboe
2023-07-12  8:16   ` Peter Zijlstra
2023-07-12 14:59     ` Jens Axboe
2023-07-12  0:47 ` [PATCH 2/7] futex: factor out the futex wake handling Jens Axboe
2023-07-12  8:58   ` Peter Zijlstra
2023-07-12 15:02     ` Jens Axboe
2023-07-12  0:47 ` [PATCH 3/7] io_uring: add support for futex wake and wait Jens Axboe
2023-07-12  8:51   ` Peter Zijlstra
2023-07-12 15:05     ` Jens Axboe
2023-07-12  0:47 ` [PATCH 4/7] futex: add wake_data to struct futex_q Jens Axboe
2023-07-12  0:47 ` [PATCH 5/7] futex: make futex_parse_waitv() available as a helper Jens Axboe
2023-07-12  9:25   ` Peter Zijlstra
2023-07-12 15:06     ` Jens Axboe
2023-07-12  0:47 ` [PATCH 6/7] futex: make the vectored futex operations available Jens Axboe
2023-07-12  0:47 ` [PATCH 7/7] io_uring: add futex waitv Jens Axboe
2023-07-12  9:31   ` Peter Zijlstra
2023-07-12 15:10     ` Jens Axboe [this message]

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=0ffd2e2f-a179-393b-bd0d-cd62a41ecb92@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=io-uring@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    /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