numam-spdk/lib/iscsi
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
..
conn.c lib/iscsi: Make the max number of read subtasks for large read I/O configurable 2020-08-18 07:27:45 +00:00
conn.h lib/iscsi: Add pg_tag to the 2nd parameter of iscsi_conns_request_logout() 2020-08-07 15:06:34 +00:00
init_grp.c lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in init_grp.h 2020-04-20 07:38:29 +00:00
init_grp.h lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in init_grp.h 2020-04-20 07:38:29 +00:00
iscsi_rpc.c lib/iscsi: Add iscsi_target_node_request_logout RPC 2020-08-17 08:26:59 +00:00
iscsi_subsystem.c lib/iscsi: Make the max number of read subtasks for large read I/O configurable 2020-08-18 07:27:45 +00:00
iscsi.c lib/iscsi: Inform initiator that target has temporary moved to a different address 2020-08-11 08:27:43 +00:00
iscsi.h lib/iscsi: Make the max number of read subtasks for large read I/O configurable 2020-08-18 07:27:45 +00:00
Makefile mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
md5.c lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in md5.h 2020-04-20 07:38:29 +00:00
md5.h lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in md5.h 2020-04-20 07:38:29 +00:00
param.c iscsi: Add DataSequenceInOrder in discovery_ignored_param 2020-06-11 19:51:04 +00:00
param.h lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in param.h 2020-04-20 07:38:29 +00:00
portal_grp.c lib/iscsi: Create portal group as public or private portal group 2020-08-11 08:27:43 +00:00
portal_grp.h lib/iscsi: Create portal group as public or private portal group 2020-08-11 08:27:43 +00:00
spdk_iscsi.map lib/iscsi: add a map file 2020-04-24 07:06:52 +00:00
task.c lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in task.h 2020-04-20 07:38:29 +00:00
task.h lib/iscsi: Replace the "spdk_" prefix by "iscsi_" for internal APIs declared in iscsi.h 2020-04-20 07:38:29 +00:00
tgt_node.c lib/iscsi: Remove async logout request from iscsi_target_node_redirect() 2020-08-17 08:26:59 +00:00
tgt_node.h lib/iscsi: Inform initiator that target has temporary moved to a different address 2020-08-11 08:27:43 +00:00