Spdk/lib/nvmf
Wenhua Liu a4340e4501 Set low watermark in NVMe/TCP target to a more appropriate value.
In SPDK NVMe/TCP target, when initializing the socket, the low
watermark is set to sizeof(struct spdk_nvme_tcp_common_pdu_hdr),
which is 24 bytes. In our testing, some times there might be very
small data packet (as small as 16 bytes) be sent to wire. After
this, if there is no more data sent to the same socket, this small
data packet won’t be received by NVMe/TCP controller qpair thread
because the size hasn’t reached the low watermark. Because of this,
the qpair thread is waiting for more data come in and the initiator
is waiting for the IO request to be completed. Hence the delay
happens.

As the minimum data that allows target to determine the PDU type is
sizeof(struct spdk_nvme_tcp_common_pdu_hdr), which is 8 bytes, we
changed low watermark setting as below. With the change, the problem
was gone immediately.

Change-Id: I14ccc4c84b77e33a617726e7455304aca29d5d57
Signed-off-by: Wenhua Liu <liuw@vmware.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2138
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Ziye Yang <ziye.yang@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2020-05-06 12:44:06 +00:00
..
ctrlr_bdev.c nvmf: Move spdk_internal/nvmf.h to spdk/nvmf_cmd.h 2020-02-12 12:07:04 +00:00
ctrlr_discovery.c nvmf: remove redundant trid obj copy 2020-02-19 13:43:15 +00:00
ctrlr.c nvmf: allow to override KAS 2020-04-28 13:48:17 +00:00
fc_ls.c lib/nvmf: get_transport now takes a string. 2020-01-16 09:10:38 +00:00
fc.c nvmf: allow to override virtual controller capabilities 2020-04-28 13:48:17 +00:00
Makefile lib: update so version for multiple libraries. 2020-03-18 08:02:30 +00:00
nvmf_fc.h thread: remove io_channel.h public header 2020-03-10 09:12:53 +00:00
nvmf_internal.h nvmf: Add a transport notification when listeners are associated with 2020-03-10 09:12:29 +00:00
nvmf_rpc.c lib/nvmf: fix unreachable code. 2020-04-22 09:21:04 +00:00
nvmf.c lib/nvmf: call ctrlr_fini after clearing qid from ctrlr bit array. 2020-04-20 07:40:31 +00:00
rdma.c nvmf: allow to override virtual controller capabilities 2020-04-28 13:48:17 +00:00
subsystem.c nvmf: Add a transport notification when listeners are associated with 2020-03-10 09:12:29 +00:00
tcp.c Set low watermark in NVMe/TCP target to a more appropriate value. 2020-05-06 12:44:06 +00:00
transport.c lib/nvmf: Free listener if executing listening failed. 2020-04-01 10:21:24 +00:00
transport.h nvmf: move transport stop listen into public interface 2020-02-19 13:43:15 +00:00