Spdk/test/unit/lib
Shuhei Matsumoto 5b2c76f062 lib/iscsi: Make the max number of read subtasks for large read I/O configurable
For some use case that there is heavy large read I/O, the performance
bottleneck due to MAX_LARGE_DATAIN_PER_CONNECTION was reported.

The following assumes that all I/Os are large read.

Large read primary task whose I/O size is more than
SPDK_BDEV_LARGE_BUF_MAX_SIZE (=64KB) is split into multiple
read subtasks.

spdk_iscsi_globals::MaxQueueDepth limits maximum number of outstanding
read primary tasks, and MAX_LARGE_DATAIN_PER_CONNECTION (=64)
limits maximum number of outstanding read subtasks.

MAX_LARGE_DATAIN_PER_CONNECTION is also used to calculate PDU pool.

To remove the performance bottleneck, change the macro constant
MAX_LARGE_DATAIN_PER_CONNECTION to a global variable
spdk_iscsi_globals::MaxLargeDataInPerConnection.

We don't see any negative side effect if we set
spdk_iscsi_globals::MaxLargeDataInPerConnection to 64.

The use case that reported the performance issue will change the
value of spdk_iscsi_globals::MaxLargeDataInPerConnection by its own
responsibility.

The next patch will add the value of
spdk_iscsi_globals::MaxLargeDataInPerConnection to iSCSI options,
and make it configurable by JSON RPC.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ifc30cdb8e00d50f4d3755ff399263cf5d0b681b6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3755
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-08-18 07:27:45 +00:00
..
bdev bdev/nvme: add a function for specifying a multipath trid. 2020-08-07 15:06:01 +00:00
blob ut/blob: more portable cunit version check 2020-07-03 07:30:48 +00:00
blobfs module/blobfs: remove spdk prefix from static/internal functions. 2020-05-18 09:48:18 +00:00
event lib/event: remove _spdk prefix from functions. 2020-05-27 07:35:02 +00:00
ftl lib/ftl: Keep tracing functions under define flag 2020-06-05 09:03:31 +00:00
idxd lib/idxd: add unit test for idxd_wq_config() 2020-04-23 15:48:32 +00:00
ioat ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
iscsi lib/iscsi: Make the max number of read subtasks for large read I/O configurable 2020-08-18 07:27:45 +00:00
json lib: json-nbd remove spdk prefix from static functions. 2020-05-21 09:19:00 +00:00
jsonrpc lib/jsonrpc: remove spdk_ prefix from internal functions. 2020-05-11 12:29:07 +00:00
log log: spdk_log_dump more characters than required 2020-04-14 11:34:45 +00:00
lvol lvol: let thin_provision flag be consistent with Blob 2020-05-22 10:42:28 +00:00
notify ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
nvme lib/nvme: don't submit request if qpair is disconnected. 2020-07-31 08:23:44 +00:00
nvmf nvmf: Add check for bidirectional xfer type 2020-08-04 18:27:45 +00:00
reduce test: add generic unlink wrapper 2020-05-06 12:43:57 +00:00
scsi UT/scsi_reserve: add Persistent Reserve with SPC2 RESERVE/RELEASE test case 2020-06-25 07:16:08 +00:00
sock ut/sock: Add get/set_opts unit tests for posix sockets 2020-06-02 09:48:00 +00:00
thread lib/thread: remove _spdk prefix. 2020-06-01 13:07:30 +00:00
util ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
vhost lib/vhost: remove dependency on lib/event 2020-05-13 07:47:01 +00:00
json_mock.c subsystem: add per module configuration dump 2018-03-23 02:47:40 -04:00
Makefile lib/idxd: add unit test framework and first unit test 2020-04-23 15:48:32 +00:00