public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCH for-next v2 0/6] io_uring: defer task work to when it is needed
@ 2022-08-16 15:37 Dylan Yudaken
  2022-08-16 15:37 ` [PATCH for-next v2 1/6] io_uring: remove unnecessary variable Dylan Yudaken
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Dylan Yudaken @ 2022-08-16 15:37 UTC (permalink / raw)
  To: Jens Axboe, Pavel Begunkov, io-uring; +Cc: Kernel-team, Dylan Yudaken

We have seen workloads which suffer due to the way task work is currently
scheduled. This scheduling can cause non-trivial tasks to run interrupting
useful work on the workload. For example in network servers, a large async
recv may run, calling memcpy on a large packet, interrupting a send. Which
would add latency.

This series adds an option to defer async work until user space calls
io_uring_enter with the GETEVENTS flag. This allows the workload to choose
when to schedule async work and have finer control (at the expense of
complexity of managing this) of scheduling.

Patches 1,2 are prep patches
Patch 3 changes io_uring_enter to not pre-run task work
Patch 4/5/6 adds the new flag and functionality

Changes since v1:
 - Removed the first patch (using ctx variable) which was broken
 - Require IORING_SETUP_SINGLE_ISSUER and make sure waiter task
   is the same as the submitter task
 - Just don't run task work at the start of io_uring_enter (Pavel's
   suggestion)
 - Remove io_move_task_work_from_local
 - Fix locking bugs

Dylan Yudaken (6):
  io_uring: remove unnecessary variable
  io_uring: introduce io_has_work
  io_uring: do not run task work at the start of io_uring_enter
  io_uring: add IORING_SETUP_DEFER_TASKRUN
  io_uring: move io_eventfd_put
  io_uring: signal registered eventfd to process deferred task work

 include/linux/io_uring_types.h |   3 +
 include/uapi/linux/io_uring.h  |   7 ++
 io_uring/cancel.c              |   2 +-
 io_uring/io_uring.c            | 222 ++++++++++++++++++++++++++-------
 io_uring/io_uring.h            |  30 ++++-
 io_uring/rsrc.c                |   2 +-
 6 files changed, 215 insertions(+), 51 deletions(-)


base-commit: 5993000dc6b31b927403cee65fbc5f9f070fa3e4
prerequisite-patch-id: cb1d024945aa728d09a131156140a33d30bc268b
-- 
2.30.2


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

end of thread, other threads:[~2022-08-18 14:18 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-16 15:37 [PATCH for-next v2 0/6] io_uring: defer task work to when it is needed Dylan Yudaken
2022-08-16 15:37 ` [PATCH for-next v2 1/6] io_uring: remove unnecessary variable Dylan Yudaken
2022-08-16 15:37 ` [PATCH for-next v2 2/6] io_uring: introduce io_has_work Dylan Yudaken
2022-08-16 15:37 ` [PATCH for-next v2 3/6] io_uring: do not run task work at the start of io_uring_enter Dylan Yudaken
2022-08-16 15:37 ` [PATCH for-next v2 4/6] io_uring: add IORING_SETUP_DEFER_TASKRUN Dylan Yudaken
2022-08-18 10:42   ` Pavel Begunkov
2022-08-18 14:18     ` Dylan Yudaken
2022-08-16 15:37 ` [PATCH for-next v2 5/6] io_uring: move io_eventfd_put Dylan Yudaken
2022-08-16 15:37 ` [PATCH for-next v2 6/6] io_uring: signal registered eventfd to process deferred task work Dylan Yudaken

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