  Coalescing RDMA and Persistent Memory (PM) delivers high end-to-end
performance for networked storage systems, which requires rethinking the design
of efficient hash structures. In general, existing hashing schemes separately
optimize RDMA and PM, thus partially addressing the problems of RDMA Access
Amplification and High-Overhead PM Consistency. In order to address these
problems, we propose a continuity hashing, which is a "one-stone-two-birds"
design to optimize both RDMA and PM. The continuity hashing leverages a
fine-grained contiguous shared region, called SBuckets, to provide standby
positions for the neighbouring two buckets in case of hash collisions. In the
continuity hashing, remote read only needs a single RDMA read to directly fetch
the home bucket and the neighbouring SBuckets, which contain all the positions
of maintaining a key-value item, thus alleviating RDMA access amplification.
Continuity hashing further leverages indicators that can be atomically modified
to support log-free PM consistency for all the write operations. Evaluation
results demonstrate that compared with state-of-the-art schemes, continuity
hashing achieves high throughput (i.e., 1.45X -- 2.43X improvement), low
latency (about 1.7X speedup) and the smallest number of PM writes with various
workloads, while has acceptable load factors of about 70%.
