From 720d044db13886ac9926d689e970381cdf78f8eb Mon Sep 17 00:00:00 2001 From: Adir Lev Date: Wed, 3 May 2017 11:17:51 +0000 Subject: [PATCH] msg/async/rdma: improves RX buffer management The commit adds following changes: - rx buffers are allocated from the memory pool (boost::pool) - flat memory layout for buffer data/metadata to reduce cpu cache misses - number of receive buffers can be much larger than receive queue len - post new buffers to the srq as soon as possible. - stat counters Signed-off-by: Alex Mikheev --- src/common/legacy_config_opts.h | 3 + src/common/options.cc | 6 +- src/msg/async/rdma/Infiniband.cc | 237 ++++++++++++------ src/msg/async/rdma/Infiniband.h | 128 ++++++++-- src/msg/async/rdma/RDMAConnectedSocketImpl.cc | 28 +-- src/msg/async/rdma/RDMAStack.cc | 35 +-- src/msg/async/rdma/RDMAStack.h | 45 +--- 7 files changed, 308 insertions(+), 174 deletions(-) diff --git a/src/common/legacy_config_opts.h b/src/common/legacy_config_opts.h index c65b52acb60..5c28e939207 100644 --- a/src/common/legacy_config_opts.h +++ b/src/common/legacy_config_opts.h @@ -165,7 +165,10 @@ OPTION(ms_async_rdma_device_name, OPT_STR) OPTION(ms_async_rdma_enable_hugepage, OPT_BOOL) OPTION(ms_async_rdma_buffer_size, OPT_INT) OPTION(ms_async_rdma_send_buffers, OPT_U32) +//size of the receive buffer pool, 0 is unlimited OPTION(ms_async_rdma_receive_buffers, OPT_U32) +// max number of wr in srq +OPTION(ms_async_rdma_receive_queue_len, OPT_U32) OPTION(ms_async_rdma_port_num, OPT_U32) OPTION(ms_async_rdma_polling_us, OPT_U32) OPTION(ms_async_rdma_local_gid, OPT_STR) // GID format: "fe80:0000:0000:0000:7efe:90ff:fe72:6efe", no zero folding diff --git a/src/common/options.cc b/src/common/options.cc index 9101078cb8d..afc847a9b00 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -736,7 +736,11 @@ std::vector