[PATCH v2 0/2] Add support for uring-passthrough in t/io_uring

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series adds support for measuring peak performance of uring-passthrough path
using t/io_uring utility. Added new -u1 option, that makes t/io_uring to do io using
nvme passthrough commands.

Uring-passthrough on nvme-generic device:

root@test-MS-7C34:/home/test/upstream/github/fio# taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p0 -F1 -B0 -O0 -n1 -u1 /dev/ng0n1
submitter=0, tid=5415, file=/dev/ng0n1, node=-1
polled=0, fixedbufs=0/0, register_files=1, buffered=1, QD=128
Engine=io_uring, sq_ring=128, cq_ring=128
IOPS=1.97M, BW=959MiB/s, IOS/call=32/31
IOPS=1.96M, BW=956MiB/s, IOS/call=32/32
IOPS=1.96M, BW=957MiB/s, IOS/call=32/32
IOPS=1.96M, BW=956MiB/s, IOS/call=31/31
^CExiting on signal
Maximum IOPS=1.97M

Regular io_uring on nvme-block device:

root@test-MS-7C34:/home/test/upstream/github/fio# taskset -c 0 t/io_uring -b512 -d128 -c32 -s32 -p0 -F1 -B0 -n1 /dev/nvme0n1
submitter=0, tid=5418, file=/dev/nvme0n1, node=-1
polled=0, fixedbufs=0/0, register_files=1, buffered=0, QD=128
Engine=io_uring, sq_ring=128, cq_ring=128
IOPS=1.53M, BW=748MiB/s, IOS/call=32/31
IOPS=1.53M, BW=746MiB/s, IOS/call=32/32
IOPS=1.53M, BW=746MiB/s, IOS/call=32/32
IOPS=1.53M, BW=745MiB/s, IOS/call=32/32
IOPS=1.53M, BW=745MiB/s, IOS/call=32/32
^CExiting on signal
Maximum IOPS=1.53M

Changes since v1:
https://lore.kernel.org/fio/20220824093109.308791-1-anuj20.g@xxxxxxxxxxx/T/#m17c6dcf1a3989a74865ceee0b87f470716aa5711

Use shift instead of expensive integer divisions (Jens)
Put expensive nvme_uring_cmd initialization part in setup rather than having it in fast path (Jens)
Create separate init_io_pt and reap_events_uring_pt functions for initializing i/o and reaping completions for passthru path(Jens)
Put nsid and lba_shift a part of struct file (Jens)

Add check for polled i/o for passthru case during failure (Kanchan)
Check (bs % lbs) instead of (bs < lbs) (Kanchan)

Fix index calculation for cqe during passthru i/o

Anuj Gupta (2):
  t/io_uring: prep for including engines/nvme.h in t/io_uring
  t/io_uring: add support for async-passthru

 t/io_uring.c | 256 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 239 insertions(+), 17 deletions(-)

-- 
2.25.1




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux