Message ID | 20220627133541.15223-1-hao.xu@linux.dev (mailing list archive) |
---|---|
Headers | show |
Series | fixed worker | expand |
On 6/27/22 21:35, Hao Xu wrote: > 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 ping...
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