On 12/17/21 15:02, Hao Xu wrote:
在 2021/12/16 上午6:08, Pavel Begunkov 写道:
That's mostly a bug fixing set, some of the problems are listed in 5/7.
The main part is 5/7, which is bulky but at this point it's hard (if
possible) to do anything without breaking a dozen of things on the
way, so I consider it necessary evil.
It also addresses one of two problems brought up by Eric Biggers
for aio, specifically poll rewait. There is no poll-free support yet.
As a side effect it also changes performance characteristics, adding
extra atomics but removing io_kiocb referencing, improving rewait, etc.
There are also drafts on optimising locking needed for hashing, those
will go later.
Great, seems now we can have per node bit lock for hash list.
Yeah, might be. One idea is to put it under mutex_lock. Interesting
what kind of performance difference it'd make, e.g. [1] but would need
some combined approach. Also was thinking for getting rid of hashing at
all for polling fixed files, may be promising, but would need some extra
bits for fixed files removal.
[1] https://github.com/isilence/linux/commit/5613ffd53141df98ae4a4a75b043b4d7ad252b2b
Performance measurements is a TODO, but the main goal lies in
correctness and maintainability.
Pavel Begunkov (7):
io_uring: remove double poll on poll update
io_uring: refactor poll update
io_uring: move common poll bits
io_uring: kill poll linking optimisation
io_uring: poll rework
io_uring: single shot poll removal optimisation
io_uring: use completion batching for poll rem/upd
fs/io_uring.c | 649 ++++++++++++++++++++++----------------------------
1 file changed, 287 insertions(+), 362 deletions(-)
--
Pavel Begunkov