io_uring: allow user configurable IO thread CPU affinity
authorJens Axboe <axboe@kernel.dk>
Thu, 17 Jun 2021 16:19:54 +0000 (10:19 -0600)
committerJens Axboe <axboe@kernel.dk>
Thu, 17 Jun 2021 16:25:50 +0000 (10:25 -0600)
commitfe76421d1da1dcdb3a2cd8428ac40106bff28bc0
treedc590c0c33f23e65a0e11cceb7be870944d0360a
parent0e03496d1967abf1ebb151a24318c07d07f41f7f
io_uring: allow user configurable IO thread CPU affinity

io-wq defaults to per-node masks for IO workers. This works fine by
default, but isn't particularly handy for workloads that prefer more
specific affinities, for either performance or isolation reasons.

This adds IORING_REGISTER_IOWQ_AFF that allows the user to pass in a CPU
mask that is then applied to IO thread workers, and an
IORING_UNREGISTER_IOWQ_AFF that simply resets the masks back to the
default of per-node.

Note that no care is given to existing IO threads, they will need to go
through a reschedule before the affinity is correct if they are already
running or sleeping.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c
fs/io-wq.h
fs/io_uring.c
include/uapi/linux/io_uring.h