public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCHSET v3 next 0/5] Add support for non-IPI task_work
@ 2022-04-25 14:21 Jens Axboe
  2022-04-25 14:21 ` [PATCH 1/6] task_work: allow TWA_SIGNAL without a rescheduling IPI Jens Axboe
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Jens Axboe @ 2022-04-25 14:21 UTC (permalink / raw)
  To: io-uring

Hi,

Unless we're using SQPOLL, any task_work queue will result in an IPI
to the target task unless it's running in the kernel already. This isn't
always needed, particularly not for the common case of not sharing the
ring. In certain workloads, this can provide a 5-10% improvement. Some
of this is due the cost of the IPI, and some from needlessly
interrupting the target task when the work could just get run when
completions are being waited for.

Patches 1..4 are prep patches, patch 5 is the actual change, and patch 6
adds support for IORING_SQ_TASKRUN so that applications may use this
feature and still rely on io_uring_peek_cqe().

v3:
- Rename flags to hopefully be more descriptive
- Add flag for managing IORING_SQ_TASKRUN flag
- Rebase on current branch

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 8+ messages in thread
* [PATCHSET v4 next 0/5] Add support for non-IPI task_work
@ 2022-04-26  1:48 Jens Axboe
  2022-04-26  1:49 ` [PATCH 4/6] io_uring: set task_work notify method at init time Jens Axboe
  0 siblings, 1 reply; 8+ messages in thread
From: Jens Axboe @ 2022-04-26  1:48 UTC (permalink / raw)
  To: io-uring

Hi,

Unless we're using SQPOLL, any task_work queue will result in an IPI
to the target task unless it's running in the kernel already. This isn't
always needed, particularly not for the common case of not sharing the
ring. In certain workloads, this can provide a 5-10% improvement. Some
of this is due the cost of the IPI, and some from needlessly
interrupting the target task when the work could just get run when
completions are being waited for.

Patches 1..4 are prep patches, patch 5 is the actual change, and patch 6
adds support for IORING_SQ_TASKRUN so that applications may use this
feature and still rely on io_uring_peek_cqe().

v4:
- Make SQPOLL incompatible with the IPI flags. It makes no sense for
  SQPOLL as no IPIs are ever used there anyway, so make that explicit
  and fail a request to setup a ring like that.



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-04-26  1:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-25 14:21 [PATCHSET v3 next 0/5] Add support for non-IPI task_work Jens Axboe
2022-04-25 14:21 ` [PATCH 1/6] task_work: allow TWA_SIGNAL without a rescheduling IPI Jens Axboe
2022-04-25 14:21 ` [PATCH 2/6] io_uring: serialize ctx->rings->sq_flags with atomic_or/and Jens Axboe
2022-04-25 14:21 ` [PATCH 3/6] io-wq: use __set_notify_signal() to wake workers Jens Axboe
2022-04-25 14:21 ` [PATCH 4/6] io_uring: set task_work notify method at init time Jens Axboe
2022-04-25 14:21 ` [PATCH 5/6] io_uring: use TWA_SIGNAL_NO_IPI if IORING_SETUP_COOP_TASKRUN is used Jens Axboe
2022-04-25 14:21 ` [PATCH 6/6] io_uring: add IORING_SETUP_TASKRUN_FLAG Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2022-04-26  1:48 [PATCHSET v4 next 0/5] Add support for non-IPI task_work Jens Axboe
2022-04-26  1:49 ` [PATCH 4/6] io_uring: set task_work notify method at init time Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox