[PATCH 00/11] submission path cleanups and optimisation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Refactor how we do io_req_prep(), which is currently spilled across
multiple ifs and functions, that's a mess which is hard to validate.
It also cuts down amount of work we're doing during submission, where
nops(batch=32) test shows 15217 vs 16830 KIOPS, before and after
respectively.

1-6 are easy and should change nothing functionally.

7/11 cancels all the link, where currently it can be partially executed.
That happens only in some cases, and currently is not consistent. That
change alters the user visible behaviour and breaks one liburing test,
but looks like the right thing to do. (IMHO, the test is buggy in that
regard).

8/11 makes us to do one more opcode switch for where we previously
were doing io_req_defer_prep(). That includes all links, but the total
performance win, removing an extra async setup in 10/11, and just making
all the thing cleaner justifies it well enough.

Pavel Begunkov (11):
  io_uring: kill fictitious submit iteration index
  io_uring: keep io_*_prep() naming consistent
  io_uring: don't duplicate ->file check in sfr
  io_uring: move io_init_req()'s definition
  io_uring: move io_init_req() into io_submit_sqe()
  io_uring: move req link into submit_state
  io_uring: don't submit link on error
  io_uring: split sqe-prep and async setup
  io_uring: do io_*_prep() early in io_submit_sqe()
  io_uring: don't do async setup for links' heads
  io_uring: fail links more in io_submit_sqe()

 fs/io_uring.c | 460 +++++++++++++++++++++++++-------------------------
 1 file changed, 228 insertions(+), 232 deletions(-)

-- 
2.24.0




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux