[PATCH] nvme-rdma: set ack timeout of RoCE to 262ms
Chao Leng
lengchao at huawei.com
Fri Aug 19 00:58:25 PDT 2022
Now the ack timeout of RoCE is 2 second(2^(18+1)*4us=2 second). In the
case of low concurrency, if some packets lost due to network abnormal
such as network rerouting, Optical fiber signal interference, etc,
it will wait 2 second to try retransmitting the lost packets.
As a result, the I/O latency is greater than 2 seconds.
The I/O latency is so long for real-time transaction service. Indeed we
do not have to wait so long time to make sure that packets are lost.
Setting the ack timeout to 262ms(2^(15+1)*4us=262ms) is sufficient.
Signed-off-by: Chao Leng <lengchao at huawei.com>
---
drivers/nvme/host/rdma.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index 7d01fb770284..2dbb1b21acc8 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -602,6 +602,8 @@ static int nvme_rdma_alloc_queue(struct nvme_rdma_ctrl *ctrl,
ret = PTR_ERR(queue->cm_id);
goto out_destroy_mutex;
}
+ /* set ack timeout to 262ms(2^(15+1)*4us=262ms) */
+ rdma_set_ack_timeout(queue->cm_id, 15);
if (ctrl->ctrl.opts->mask & NVMF_OPT_HOST_TRADDR)
src_addr = (struct sockaddr *)&ctrl->src_addr;
--
2.16.4
More information about the Linux-nvme
mailing list