From: Kanchan Joshi <[email protected]>
To: [email protected], [email protected]
Cc: [email protected], [email protected],
[email protected], [email protected],
[email protected], Kanchan Joshi <[email protected]>
Subject: [PATCH for-next v2 0/4] iopoll support for io_uring/nvme
Date: Mon, 8 Aug 2022 00:06:03 +0530 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: CGME20220807184540epcas5p41f496a87fe65cff524740ddde071b4bb@epcas5p4.samsung.com
Hi,
Series enables async polling on io_uring command, and nvme passthrough
(for io-commands) is wired up to leverage that.
Changes since v1:
- corrected variable name (Jens)
- fix for a warning (test-robot)
Performance impact:
Pre TLDR: polling gives clear win.
512b randread performance (KIOPS):
QD_batch block passthru passthru-poll block-poll
1_1 80 81 158 157
8_2 406 470 680 700
16_4 620 656 931 920
128_32 879 1056 1120 1132
Upstream fio is used for testing. Polled queues set to 1 in nvme.
passthru command line:
fio -iodepth=64 -rw=randread -ioengine=io_uring_cmd -bs=512 -numjobs=1
-runtime=60 -group_reporting -iodepth_batch_submit=16
-iodepth_batch_complete_min=1 -iodepth_batch_complete_max=16
-cmd_type=nvme -hipri=0 -filename=/dev/ng1n1 -name=io_uring_cmd_64
block command line:
fio -direct=1 -iodepth=64 -rw=randread -ioengine=io_uring -bs=512
-numjobs=1 -runtime=60 -group_reporting -iodepth_batch_submit=16
-iodepth_batch_complete_min=1 -iodepth_batch_complete_max=16
-hipri=0 -filename=/dev/nvme1n1 name=io_uring_64
Bit of code went into non-passthrough path for io_uring (patch 2) but I
do not see that causing any performance regression.
peak-perf test showed 2.3M IOPS with or without this series for
block-io.
io_uring: Running taskset -c 0,12 t/io_uring -b512 -d128 -c32 -s32 -p1
-F1 -B1 -n2 /dev/nvme0n1
submitter=0, tid=3089, file=/dev/nvme0n1, node=-1
submitter=1, tid=3090, file=/dev/nvme0n1, node=-1
polled=1, fixedbufs=1/0, register_files=1, buffered=0, QD=128
Engine=io_uring, sq_ring=128, cq_ring=128
polled=1, fixedbufs=1/0, register_files=1, buffered=0, QD=128
Engine=io_uring, sq_ring=128, cq_ring=128
IOPS=2.31M, BW=1126MiB/s, IOS/call=31/31
IOPS=2.30M, BW=1124MiB/s, IOS/call=32/31
IOPS=2.30M, BW=1123MiB/s, IOS/call=32/32
Kanchan Joshi (4):
fs: add file_operations->uring_cmd_iopoll
io_uring: add iopoll infrastructure for io_uring_cmd
block: export blk_rq_is_poll
nvme: wire up async polling for io passthrough commands
block/blk-mq.c | 3 +-
drivers/nvme/host/core.c | 1 +
drivers/nvme/host/ioctl.c | 73 ++++++++++++++++++++++++++++++++---
drivers/nvme/host/multipath.c | 1 +
drivers/nvme/host/nvme.h | 2 +
include/linux/blk-mq.h | 1 +
include/linux/fs.h | 1 +
include/linux/io_uring.h | 8 +++-
io_uring/io_uring.c | 6 +++
io_uring/opdef.c | 1 +
io_uring/rw.c | 8 +++-
io_uring/uring_cmd.c | 11 +++++-
12 files changed, 105 insertions(+), 11 deletions(-)
base-commit: ece775e9aa8232963cc1bddf5cc91285db6233af
--
2.25.1
next parent reply other threads:[~2022-08-07 18:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20220807184540epcas5p41f496a87fe65cff524740ddde071b4bb@epcas5p4.samsung.com>
2022-08-07 18:36 ` Kanchan Joshi [this message]
[not found] ` <CGME20220807184544epcas5p19f676581e0fdf555fa1d0a83906f2fc7@epcas5p1.samsung.com>
2022-08-07 18:36 ` [PATCH for-next v2 1/4] fs: add file_operations->uring_cmd_iopoll Kanchan Joshi
[not found] ` <CGME20220807184547epcas5p23b4ef30467d65d1b81632e7c514fc192@epcas5p2.samsung.com>
2022-08-07 18:36 ` [PATCH for-next v2 2/4] io_uring: add iopoll infrastructure for io_uring_cmd Kanchan Joshi
[not found] ` <CGME20220807184551epcas5p3b85421505f9c28d31492163f69c59d69@epcas5p3.samsung.com>
2022-08-07 18:36 ` [PATCH for-next v2 3/4] block: export blk_rq_is_poll Kanchan Joshi
[not found] ` <CGME20220807184555epcas5p4b7f5018c52d150150c32458fe3c21986@epcas5p4.samsung.com>
2022-08-07 18:36 ` [PATCH for-next v2 4/4] nvme: wire up async polling for io passthrough commands Kanchan Joshi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox