mbox series

[0/2] io-wq: cleanup io_wq and io_wqe

Message ID 20230322011628.23359-1-krisman@suse.de (mailing list archive)
Headers show
Series io-wq: cleanup io_wq and io_wqe | expand

Message

Gabriel Krisman Bertazi March 22, 2023, 1:16 a.m. UTC
Hi Jens,

This tides up the io-wq internal interface by dropping the io_wqe/io_wq
separation, which no longer makes sense since commit
0654b05e7e65 ("io_uring: One wqe per wq").  We currently have a single
io_wqe instance per io_wq, which is embedded in the structure.  This
patchset merges the two, dropping bit of code to go from one to the
other in the io-wq implementation.

I don't expect it to have any positive impact on performance, of course,
since hopefully the compiler optimizes it, but still, it is nice clean
up.  To be sure, I measured with some mmtests microbenchmarks and I haven't
seen differences with or without the patchset.

Patch 2 is slightly big to review but the use of wq and wqe is
intrinsically connected; it was a bit hard to break it in more pieces.

Tested by running liburing's testsuite and mmtests performance
microbenchmarks (which uses fio).

Based on your for-next branch.

Thanks,

Gabriel Krisman Bertazi (2):
  io-wq: Move wq accounting to io_wq
  io-wq: Drop struct io_wqe

 io_uring/io-wq.c | 408 ++++++++++++++++++++++-------------------------
 1 file changed, 189 insertions(+), 219 deletions(-)

Comments

Jens Axboe March 23, 2023, 7:19 p.m. UTC | #1
On 3/21/23 7:16?PM, Gabriel Krisman Bertazi wrote:
> Hi Jens,
> 
> This tides up the io-wq internal interface by dropping the io_wqe/io_wq
> separation, which no longer makes sense since commit
> 0654b05e7e65 ("io_uring: One wqe per wq").  We currently have a single
> io_wqe instance per io_wq, which is embedded in the structure.  This
> patchset merges the two, dropping bit of code to go from one to the
> other in the io-wq implementation.
> 
> I don't expect it to have any positive impact on performance, of course,
> since hopefully the compiler optimizes it, but still, it is nice clean
> up.  To be sure, I measured with some mmtests microbenchmarks and I haven't
> seen differences with or without the patchset.
> 
> Patch 2 is slightly big to review but the use of wq and wqe is
> intrinsically connected; it was a bit hard to break it in more pieces.
> 
> Tested by running liburing's testsuite and mmtests performance
> microbenchmarks (which uses fio).
> 
> Based on your for-next branch.

Nice! This is a great continuation of getting rid of the per-node worker
setup.
Jens Axboe March 23, 2023, 7:31 p.m. UTC | #2
On Tue, 21 Mar 2023 22:16:26 -0300, Gabriel Krisman Bertazi wrote:
> This tides up the io-wq internal interface by dropping the io_wqe/io_wq
> separation, which no longer makes sense since commit
> 0654b05e7e65 ("io_uring: One wqe per wq").  We currently have a single
> io_wqe instance per io_wq, which is embedded in the structure.  This
> patchset merges the two, dropping bit of code to go from one to the
> other in the io-wq implementation.
> 
> [...]

Applied, thanks!

[1/2] io-wq: Move wq accounting to io_wq
      commit: 98bab464dbc90c0f0495bcf9bc6e2d5a30da192d
[2/2] io-wq: Drop struct io_wqe
      commit: 98bab464dbc90c0f0495bcf9bc6e2d5a30da192d

Best regards,