  Remote Direct Memory Access (RDMA) is an efficient way to improve the
performance of traditional client-server systems. Currently, there are two main
design paradigms for RDMA-accelerated systems. The first allows the clients to
directly operate the server's memory and totally bypasses the CPUs at server
side. The second follows the traditional server-reply paradigm, which asks the
server to write results back to the clients. However, the first method has to
expose server's memory and needs tremendous re-design of upper-layer software,
which is complex, unsafe, error-prone, and inefficient. The second cannot
achieve high input/output operations per second (IOPS), because it employs
out-bound RDMA-write at server side which is not efficient.
  We find that the performance of out-bound RDMA-write and in-bound RDMA-read
is asymmetric and the latter is 5 times faster than the former. Based on this
observation, we propose a novel design paradigm named Remote Fetching Paradigm
(RFP). In RFP, the server is still responsible for processing requests from the
clients. However, counter-intuitively, instead of sending results back to the
clients through out-bound RDMA-write, the server only writes the results in
local memory buffers, and the clients use in-bound RDMA-read to remotely fetch
these results. Since in-bound RDMA-read achieves much higher IOPS than
out-bound RDMA-write, our model is able to bring higher performance than the
traditional models.
  In order to prove the effectiveness of RFP, we design and implement an
RDMA-accelerated in-memory key-value store following the RFP model. To further
improve the IOPS, we propose an optimization mechanism that combines status
checking and result fetching. Experiment results show that RFP can improve the
IOPS by 160%~310% against state-of-the-art models for in-memory key-value
stores.

Distributed, Parallel, and Cluster Computing