Pavel Begunkov 37f0e767e1 io_uring: optimise ctx referencing by requests
Currenlty, we allocate one ctx reference per request at submission time
and put them at free. It's batched and not so expensive but it still
bloats the kernel, adds 2 function calls for rcu and adds some overhead
for request counting in io_free_batch_list().

Always keep one reference with a request, even when it's freed and in
io_uring request caches. There is extra work at ring exit / quiesce
paths, which now need to put all cached requests. io_ring_exit_work() is
already looping, so it's not a problem. Add hybrid-busy waiting to
io_ctx_quiesce() as well for now.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/99613fbe396e80777228cde39bbda1aa8938554e.1633373302.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-10-19 05:49:54 -06:00
..
2021-10-07 11:20:08 -07:00
2021-08-19 09:02:55 +09:00
2021-04-12 15:04:29 +02:00
2021-07-06 11:06:04 -07:00
2021-09-02 12:32:12 -07:00
2021-09-07 12:18:29 -07:00
2021-08-26 22:28:02 +02:00
2021-10-07 10:18:36 -05:00
2021-09-22 09:21:02 -07:00
2021-09-04 10:25:26 -07:00
2021-09-10 09:46:48 -07:00
2021-06-30 12:21:16 -07:00
2021-09-03 15:33:47 -07:00
2021-08-16 10:50:32 -06:00
2021-08-19 09:02:55 +09:00
2021-10-18 06:17:36 -06:00
2021-08-31 11:13:35 -07:00
2021-10-18 06:17:35 -06:00
2021-09-09 13:25:49 -07:00
2021-09-11 14:48:42 -07:00
2021-10-19 05:49:54 -06:00
2021-08-31 11:06:32 -07:00
2021-06-29 10:53:48 -07:00
2021-08-18 22:08:24 +02:00
2021-08-10 17:57:22 +02:00