Spdk/test/unit/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 blobstore: allow I/O operations to use io unit size smaller than page size. 2018-10-04 21:35:24 +00:00
blobfs test/unit: fix scan-build errors in blobfs tests 2018-08-31 00:01:09 +00:00
event app: don't leak memory after failed arg parsing 2018-09-04 22:22:02 +00:00
ioat ut/ioat: drop legacy mocks 2018-07-03 16:29:42 +00:00
iscsi test/unit: fix scan-build errors in iscsi tests 2018-08-31 00:01:09 +00:00
json ut/json: add a few test cases to json_parse_ut 2018-07-06 22:47:18 +00:00
jsonrpc jsonrpc: call spdk_jsonrpc_free_request only from server thread 2018-08-13 20:01:07 +00:00
log ut/log: test print level set and get functions 2018-10-09 18:08:49 +00:00
lvol test/unit: fix Scan-build errors in lvol tests. 2018-08-31 19:09:07 +00:00
nvme test/unit: add nvme_rdma.c unittests 2018-10-09 21:17:17 +00:00
nvmf nvmf: Correctly enforce subsystem listener access control 2018-10-03 16:12:31 +00:00
scsi trace: add spdk_trace_record_tsc 2018-09-04 17:09:25 +00:00
sock sock: fix socket memory free 2018-08-10 15:38:38 +00:00
thread thread: Add a name parameter to spdk_register_io_device 2018-09-05 16:00:54 +00:00
util bit_array: return UINT32_MAX if no cleared bits found 2018-10-08 17:03:33 +00:00
vhost ut/vhost: remove backend-specific tests 2018-07-03 22:18:57 +00:00
json_mock.c subsystem: add per module configuration dump 2018-03-23 02:47:40 -04:00
Makefile net: split sock abstraction into lib/sock 2018-06-22 17:09:57 +00:00