numam-spdk/lib/bdev
Shuhei Matsumoto 5616c1ed9c bdev: Change split IOV submission from sequential to batch
Large read I/O will be typical in some use cases such as
web stream services. On the other hand, large write I/O
may not be typical but will be sufficiently probable.

Currently when large I/O is submitted to the RAID bdev,
the I/O will be divided by the strip size of it and then
divided I/Os are submitted sequentially.

This patch tries to improve the performance of the RAID bdev
in large I/Os. Besides, when the RAID bdev supports higher
levels of RAID (such as RAID5), it should issue multiple
I/Os to multiple base bdevs by batch fasion in the parity
update. Having experience in batched I/O will be helpful
in the future case too.

In this patch, submit split I/Os by batch until all child IOVs
are consumed or all data are submitted. If all child IOVs are
consumed before all data are submitted, wait until all batched
split I/Os complete and then submit again.

In this patch, test code is added too.

Change-Id: If6cd81cc0c306e3875a93c39dbe4288723b78937
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/424770
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2018-10-10 17:19:32 +00:00
..
aio Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
crypto spdk: fix check_format.sh 2018-10-05 16:02:48 +00:00
error bdev_split: add support for bdev_io_wait when no memory to submit 2018-10-04 23:27:13 +00:00
gpt gpt: add support for bdev_io_wait when no memory 2018-10-09 23:17:32 +00:00
iscsi doc: small update to iscsi bdev readme 2018-10-09 21:15:56 +00:00
lvol Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
malloc Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
null thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
nvme mk: don't use '-include spdk/config.h' 2018-10-02 23:13:32 +00:00
passthru vbdev_passthru: add support for bdev_io_wait 2018-09-25 17:56:39 +00:00
pmem thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
raid bdev/raid: raid_bdev_add_base_devices: fix wrong param of spdk_strerror 2018-10-04 21:39:40 +00:00
rbd bdev/rbd: fix memory leak and spdk_io_device_register fail 2018-09-05 19:26:24 +00:00
rpc QoS/Bdev: add the RPC support for the bandwidth rate limit 2018-10-09 18:26:44 +00:00
split bdev_split: add support for bdev_io_wait when no memory to submit 2018-10-04 23:27:13 +00:00
virtio thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
bdev.c bdev: Change split IOV submission from sequential to batch 2018-10-10 17:19:32 +00:00
Makefile CONFIG: add missing CONFIG_ options 2018-10-04 21:31:42 +00:00
part.c bdev_split: add support for bdev_io_wait when no memory to submit 2018-10-04 23:27:13 +00:00
scsi_nvme.c bdev: move error union to internal spdk_bdev_io struct 2018-06-26 20:04:07 +00:00
vtune.c mk: don't use '-include spdk/config.h' 2018-10-02 23:13:32 +00:00