Spdk/lib
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
..
bdev bdev: Change split IOV submission from sequential to batch 2018-10-10 17:19:32 +00:00
blob bit_array: return UINT32_MAX if no cleared bits found 2018-10-08 17:03:33 +00:00
blobfs blobfs: align rw buffer to lba of device underneath 2018-09-18 16:35:57 +00:00
conf conf: don't strdup name if section already exist 2018-05-17 17:13:19 +00:00
copy thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
env_dpdk env_dpdk/memory: handle spdk_mem_map_notify_walk() failures 2018-10-05 21:01:27 +00:00
event log: add a way to turn on and off stack unwinding in logs 2018-10-02 22:09:27 +00:00
ioat ioat: change the return type of ioat_channel_destruct() to be void 2018-09-18 22:41:00 +00:00
iscsi Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
json json: Add spdk_json_decode_uint16 2018-06-05 21:30:02 +00:00
jsonrpc jsonrpc: fix error path of spdk_jsonrpc_parse_request() 2018-08-31 17:41:58 +00:00
log Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
lvol lvol: _spdk_add_lvs_to_list: break loop immediately if find 2018-09-14 03:56:35 +00:00
nbd nbd: add support for io_wait implement in nbd 2018-10-02 22:36:01 +00:00
net lib: fix typos in the lib directory 2018-08-24 17:15:12 +00:00
nvme Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
nvmf Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
rocksdb blobfs: add a new API to return file's unique ID 2018-08-29 16:29:22 +00:00
rpc rpc: g_rpc_lock_path: remove redundant plus 2018-09-04 22:21:04 +00:00
scsi trace: remove alias concept 2018-09-05 18:03:43 +00:00
sock sock: fix socket memory free 2018-08-10 15:38:38 +00:00
thread thread: Fix issue where a channel would be destroyed twice 2018-09-05 16:00:54 +00:00
trace trace: remove alias concept 2018-09-05 18:03:43 +00:00
ut_mock test: Simplify the mock library 2018-08-09 17:18:23 +00:00
util Make: Add deps for each shared obj individually 2018-10-09 21:45:26 +00:00
vhost vhost: rpc: add an optional parameter -n/--name for get_vhost_controllers 2018-10-04 23:33:04 +00:00
virtio virtio: clarify feature negotiation failure 2018-08-01 19:16:54 +00:00
Makefile test: remove spdk_cunit library 2018-07-06 18:35:03 +00:00