All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/11] fixed worker
@ 2022-05-15 13:12 Hao Xu
  2022-05-15 13:12 ` [PATCH 01/11] io-wq: add a worker flag for individual exit Hao Xu
                   ` (11 more replies)
  0 siblings, 12 replies; 18+ messages in thread
From: Hao Xu @ 2022-05-15 13:12 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, Pavel Begunkov

From: Hao Xu <howeyxu@tencent.com>

This is the second version of fixed worker implementation.
Wrote a nop test program to test it, 3 fixed-workers VS 3 normal workers.
normal workers:
./run_nop_wqe.sh nop_wqe_normal 200000 100 3 1-3
        time spent: 10464397 usecs      IOPS: 1911242
        time spent: 9610976 usecs       IOPS: 2080954
        time spent: 9807361 usecs       IOPS: 2039284

fixed workers:
./run_nop_wqe.sh nop_wqe_fixed 200000 100 3 1-3
        time spent: 17314274 usecs      IOPS: 1155116
        time spent: 17016942 usecs      IOPS: 1175299
        time spent: 17908684 usecs      IOPS: 1116776

About 2x improvement. From perf result, almost no acct->lock contension.
Test program: https://github.com/HowHsu/liburing/tree/fixed_worker
liburing/test/nop_wqe.c

v3->v4:
 - make work in fixed worker's private worfixed worker
 - tweak the io_wqe_acct struct to make it clearer


Hao Xu (11):
  io-wq: add a worker flag for individual exit
  io-wq: change argument of create_io_worker() for convienence
  io-wq: add infra data structure for fixed workers
  io-wq: tweak io_get_acct()
  io-wq: fixed worker initialization
  io-wq: fixed worker exit
  io-wq: implement fixed worker logic
  io-wq: batch the handling of fixed worker private works
  io_uring: add register fixed worker interface
  io-wq: add an work list for fixed worker
  io_uring: cancel works in exec work list for fixed worker

 fs/io-wq.c                    | 481 ++++++++++++++++++++++++++++++----
 fs/io-wq.h                    |   8 +
 fs/io_uring.c                 |  71 +++++
 include/uapi/linux/io_uring.h |  11 +
 4 files changed, 525 insertions(+), 46 deletions(-)


base-commit: fa5da31df51f8f581ec1776e613c1bcabbe9559f
-- 
2.25.1


^ permalink raw reply	[flat|nested] 18+ messages in thread
* [PATCH v5 00/11] fixed worker
@ 2022-06-27 13:35 Hao Xu
  2022-06-27 13:35 ` [PATCH 08/11] io-wq: batch the handling of fixed worker private works Hao Xu
  0 siblings, 1 reply; 18+ messages in thread
From: Hao Xu @ 2022-06-27 13:35 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, Pavel Begunkov

From: Hao Xu <howeyxu@tencent.com>

This is the second version of fixed worker implementation.
Wrote a nop test program to test it, 3 fixed-workers VS 3 normal workers.
normal workers:
./run_nop_wqe.sh nop_wqe_normal 200000 100 3 1-3
        time spent: 17314274 usecs      IOPS: 1155116
        time spent: 17016942 usecs      IOPS: 1175299
        time spent: 17908684 usecs      IOPS: 1116776

fixed workers:
./run_nop_wqe.sh nop_wqe_fixed 200000 100 3 1-3
        time spent: 10464397 usecs      IOPS: 1911242
        time spent: 9610976 usecs       IOPS: 2080954
        time spent: 9807361 usecs       IOPS: 2039284

About 2x improvement. From perf result, almost no acct->lock contension.
Test program: https://github.com/HowHsu/liburing/tree/fixed_worker
liburing/test/nop_wqe.c

v3->v4:
 - make work in fixed worker's private worfixed worker
 - tweak the io_wqe_acct struct to make it clearer

v4->v5:
 - code clean
 - rebase against the for-5.20/io_uring


Hao Xu (11):
  io-wq: add a worker flag for individual exit
  io-wq: change argument of create_io_worker() for convienence
  io-wq: add infra data structure for fixed workers
  io-wq: tweak io_get_acct()
  io-wq: fixed worker initialization
  io-wq: fixed worker exit
  io-wq: implement fixed worker logic
  io-wq: batch the handling of fixed worker private works
  io_uring: add register fixed worker interface
  io-wq: add an work list for fixed worker
  io_uring: cancel works in exec work list for fixed worker

 include/uapi/linux/io_uring.h |  11 +
 io_uring/io-wq.c              | 495 ++++++++++++++++++++++++++++++----
 io_uring/io-wq.h              |   8 +
 io_uring/io_uring.c           |  71 +++++
 4 files changed, 537 insertions(+), 48 deletions(-)


base-commit: 094abe8fbccb0d79bef982c67eb7372e92452c0e
-- 
2.25.1


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2022-06-27 13:36 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-15 13:12 [PATCH v4 00/11] fixed worker Hao Xu
2022-05-15 13:12 ` [PATCH 01/11] io-wq: add a worker flag for individual exit Hao Xu
2022-05-15 13:12 ` [PATCH 02/11] io-wq: change argument of create_io_worker() for convienence Hao Xu
2022-05-15 13:12 ` [PATCH 03/11] io-wq: add infra data structure for fixed workers Hao Xu
2022-05-15 13:12 ` [PATCH 04/11] io-wq: tweak io_get_acct() Hao Xu
2022-05-15 13:12 ` [PATCH 05/11] io-wq: fixed worker initialization Hao Xu
2022-05-15 13:12 ` [PATCH 06/11] io-wq: fixed worker exit Hao Xu
2022-05-15 13:12 ` [PATCH 07/11] io-wq: implement fixed worker logic Hao Xu
2022-05-15 13:12 ` [PATCH 08/11] io-wq: batch the handling of fixed worker private works Hao Xu
2022-05-15 13:12 ` [PATCH 09/11] io_uring: add register fixed worker interface Hao Xu
2022-05-15 13:12 ` [PATCH 10/11] io-wq: add an work list for fixed worker Hao Xu
2022-05-15 13:12 ` [PATCH 11/11] io_uring: cancel works in exec " Hao Xu
2022-05-31  7:05 ` [PATCH v4 00/11] " Hao Xu
2022-05-31  8:46   ` Jens Axboe
2022-05-31  8:55     ` Hao Xu
2022-05-31  9:02       ` Jens Axboe
2022-05-31  9:09         ` Hao Xu
2022-06-27 13:35 [PATCH v5 " Hao Xu
2022-06-27 13:35 ` [PATCH 08/11] io-wq: batch the handling of fixed worker private works Hao Xu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.