mbox series

[for-next,v8,0/5] fixed-buffer for uring-cmd/passthru

Message ID 20220923092854.5116-1-joshi.k@samsung.com (mailing list archive)
Headers show
Series fixed-buffer for uring-cmd/passthru | expand

Message

Kanchan Joshi Sept. 23, 2022, 9:28 a.m. UTC
Currently uring-cmd lacks the ability to leverage the pre-registered
buffers. This series adds that support in uring-cmd, and plumbs
nvme passthrough to work with it.

Using registered-buffers showed IOPS hike from 1.9M to 2.2M in my tests.

Patch 1, 3, 4 = prep
Patch 2 = expand io_uring command to use registered-buffers
Patch 5 = expand nvme passthrough to use registered-buffers

Changes since v7:
- Patch 3: added many cleanups/refactoring suggested by Christoph
- Patch 4: added copying-pages fallback for bounce-buffer/dma-alignment case
  (Christoph)

Changes since v6:
- Patch 1: fix warning for io_uring_cmd_import_fixed (robot)
-
Changes since v5:
- Patch 4: newly addd, to split a nvme function into two
- Patch 3: folded cleanups in bio_map_user_iov (Chaitanya, Pankaj)
- Rebase to latest for-next

Changes since v4:
- Patch 1, 2: folded all review comments of Jens

Changes since v3:
- uring_cmd_flags, change from u16 to u32 (Jens)
- patch 3, add another helper to reduce code-duplication (Jens)

Changes since v2:
- Kill the new opcode, add a flag instead (Pavel)
- Fix standalone build issue with patch 1 (Pavel)

Changes since v1:
- Fix a naming issue for an exported helper

Anuj Gupta (2):
  io_uring: add io_uring_cmd_import_fixed
  io_uring: introduce fixed buffer support for io_uring_cmd

Kanchan Joshi (3):
  nvme: refactor nvme_alloc_user_request
  block: add helper to map bvec iterator for passthrough
  nvme: wire up fixed buffer support for nvme passthrough

 block/blk-map.c               | 111 +++++++++++++++++++++++---
 drivers/nvme/host/ioctl.c     | 141 ++++++++++++++++++++--------------
 include/linux/blk-mq.h        |   1 +
 include/linux/io_uring.h      |  10 ++-
 include/uapi/linux/io_uring.h |   9 +++
 io_uring/uring_cmd.c          |  26 ++++++-
 6 files changed, 230 insertions(+), 68 deletions(-)

Comments

Jens Axboe Sept. 23, 2022, 2:15 p.m. UTC | #1
On 9/23/22 3:28 AM, Kanchan Joshi wrote:
> Currently uring-cmd lacks the ability to leverage the pre-registered
> buffers. This series adds that support in uring-cmd, and plumbs
> nvme passthrough to work with it.
> 
> Using registered-buffers showed IOPS hike from 1.9M to 2.2M in my tests.

Ran my peak test on this, specifically:

t/io_uring -pX -d128 -b512 -s32 -c32 -F1 -B0 -R1 -X1 -n24 -P1 -u1 -O0 /dev/ng0n1 /dev/ng1n1 /dev/ng2n1 /dev/ng3n1 /dev/ng4n1 /dev/ng5n1 /dev/ng6n1 /dev/ng7n1 /dev/ng8n1 /dev/ng9n1 /dev/ng10n1 /dev/ng11n1 /dev/ng12n1 /dev/ng13n1 /dev/ng14n1 /dev/ng15n1 /dev/ng16n1 /dev/ng17n1 /dev/ng18n1 /dev/ng19n1 /dev/ng20n1 /dev/ng21n1 /dev/ng22n1 /dev/ng23n1

Before:

Polled (-p1): 96.8M IOPS
IRQ driven (-p0): 56.2M IOPS

With patches, set -B1 in the above:

Polled (-p1): 121.8M IOPS
IRQ driven (-p0): 68.7M IOPS

+22-26% improvement, which is not unexpected.
Kanchan Joshi Sept. 25, 2022, 5:56 p.m. UTC | #2
On Fri, Sep 23, 2022 at 08:15:28AM -0600, Jens Axboe wrote:
>On 9/23/22 3:28 AM, Kanchan Joshi wrote:
>> Currently uring-cmd lacks the ability to leverage the pre-registered
>> buffers. This series adds that support in uring-cmd, and plumbs
>> nvme passthrough to work with it.
>>
>> Using registered-buffers showed IOPS hike from 1.9M to 2.2M in my tests.
>
>Ran my peak test on this, specifically:
>
>t/io_uring -pX -d128 -b512 -s32 -c32 -F1 -B0 -R1 -X1 -n24 -P1 -u1 -O0 /dev/ng0n1 /dev/ng1n1 /dev/ng2n1 /dev/ng3n1 /dev/ng4n1 /dev/ng5n1 /dev/ng6n1 /dev/ng7n1 /dev/ng8n1 /dev/ng9n1 /dev/ng10n1 /dev/ng11n1 /dev/ng12n1 /dev/ng13n1 /dev/ng14n1 /dev/ng15n1 /dev/ng16n1 /dev/ng17n1 /dev/ng18n1 /dev/ng19n1 /dev/ng20n1 /dev/ng21n1 /dev/ng22n1 /dev/ng23n1
>
>Before:
>
>Polled (-p1): 96.8M IOPS
>IRQ driven (-p0): 56.2M IOPS
>
>With patches, set -B1 in the above:
>
>Polled (-p1): 121.8M IOPS
>IRQ driven (-p0): 68.7M IOPS
>
>+22-26% improvement, which is not unexpected.

Thanks for giving it a whirl.
>