Abstract
Redis is a popular key-value store built upon socket interface that remains heavy memory copy overhead within the kernel and considerable CPU overhead to maintain socket connections. The adoption of Remote Direct Memory Access (RDMA) that incorporates outstanding features such as low-latency, high-throughput, and CPU-bypass make it practical to solve the issues. However, RDMA is not readily suitable for integrating into existing key-value stores. It has a low-level programming abstraction and the original design of existing systems is a hurdle to exploit RDMA’s performance benefits. RPCs can provide simple abstract programming interfaces that make it easy to be integrated into existing systems. This paper proposes a fast event-driven RDMA RPC framework named FeRR to promote the performance of Redis. First, we describe our design of FeRR that is based on one-sided RDMA verbs. Second, we propose an efficient request notification mechanism using event-driven model that can decrease the CPU consumption of polling requests. Finally, we introduce a parallel task engine to eschew the bottleneck of the single-threaded execution framework in Redis. Comprehensive experiment shows that our design achieves orders-of-magnitude better throughput than Redis - up to 2.78 million operations per second and ultra-low latency - down to 10 \(\upmu \)s per operator on a single machine.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Redis homepage. https://redis.io/
Metreveli, Z., Zeldovich, N., Kaashoek, M.F.: Cphash: a cache-partitioned hash table, vol. 47. ACM (2012)
Jose, J., et al.: Memcached design on high performance RDMA capable interconnects. In: 2011 International Conference on Parallel Processing, pp. 743–752. IEEE (2011)
Mitchell, C., Geng, Y., Li, J.: Using one-sided RDMA reads to build a fast, CPU-efficient key-value store. In: USENIX Annual Technical Conference, pp. 103–114 (2013)
Dragojević, A., Narayanan, D., Castro, M., Hodson, O.: FaRM: fast remote memory. In: 11th USENIX Symposium on Networked Systems Design and Implementation, pp. 401–414 (2014)
Wang, Y., et al.: HydraDB: a resilient RDMA-driven key-value middleware for in-memory cluster computing. In: SC 2015: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 1–11. IEEE (2015)
Kalia, A., Kaminsky, M., Andersen, D.G.: Using RDMA efficiently for key-value services. In: ACM SIGCOMM Computer Communication Review, vol. 44, pp. 295–306. ACM (2014)
Li, B., et al.: KV-direct: high-performance in-memory key-value store with programmable NIC. In: Proceedings of the 26th Symposium on Operating Systems Principles, pp. 137–152. ACM (2017)
Pagh, R., Rodler, F.F.: Cuckoo hashing. J. Algorithms 51(2), 122–144 (2004)
Atikoglu, B., Xu, Y., Frachtenberg, E., Jiang, S., Paleczny, M.: Workload analysis of a large-scale key-value store. In: ACM SIGMETRICS Performance Evaluation Review, vol. 40, pp. 53–64. ACM (2012)
Connect-IB: Architecture for scalable high performance computing whitepaper. https://www.mellanox.com/pdf/whitepapers/IB_Intro_WP_190.pdf/
Memcached homepage. https://memcached.org/
Liu, J., et al.: Design and implementation of MPICH2 over InfiniBand with RDMA support. In: 18th International Parallel and Distributed Processing Symposium, Proceedings, p. 16. IEEE (2004)
Shipman, G.M., Woodall, T.S., Graham, R.L., Maccabe, A.B., Bridges, P.G.: Infiniband scalability in open MPI. In: Proceedings 20th IEEE International Parallel & Distributed Processing Symposium, pp. 10-pp. IEEE (2006)
Lu, X., et al.: High-performance design of Hadoop RPC with RDMA over InfiniBand. In: 2013 42nd International Conference on Parallel Processing, pp. 641–650. IEEE (2013)
Huang, J., et al.: High-performance design of HBase with RDMA over InfiniBand. In: 2012 IEEE 26th International Parallel and Distributed Processing Symposium, pp. 774–785. IEEE (2012)
Lim, H., Han, D., Andersen, D.G., Kaminsky, M.: MICA: a holistic approach to fast in-memory key-value storage. In: 11th USENIX Symposium on Networked Systems Design and Implementation, pp. 429–444 (2014)
Intel DPDK homepage. https://dpdk.org/
Ongaro, D., Rumble, S.M., Stutsman, R., Ousterhout, J., Rosenblum, M.: Fast crash recovery in RAMCloud. In: Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, pp. 29–41. ACM (2011)
Fan, B., Andersen, D.G., Kaminsky, M.: MemC3: compact and concurrent memcache with dumber caching and smarter hashing. Presented as part of the 10th USENIX Symposium on Networked Systems Design and Implementation, pp. 371–384 (2013)
Cooper, B.F., Silberstein, A., Tam, E., Ramakrishnan, R., Sears, R.: Benchmarking cloud serving systems with YCSB. In: Proceedings of the 1st ACM Symposium on Cloud Computing, pp. 143–154. ACM (2010)
Acknowledgement
This work was supported by National Key R&D Program of China (2018YFB1003303), National Science Foundation of China under grant number 61772202, Youth Program of National Science Foundation of China under grant number 61702189, and Youth Science and Technology-Yang Fan Program of Shanghai under Grant Number 17YF1427800.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Qi, X., Hu, H., Wei, X., Huang, C., Zhou, X., Zhou, A. (2020). High Performance Design for Redis with Fast Event-Driven RDMA RPCs. In: Nah, Y., Cui, B., Lee, SW., Yu, J.X., Moon, YS., Whang, S.E. (eds) Database Systems for Advanced Applications. DASFAA 2020. Lecture Notes in Computer Science(), vol 12112. Springer, Cham. https://doi.org/10.1007/978-3-030-59410-7_12
Download citation
DOI: https://doi.org/10.1007/978-3-030-59410-7_12
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-59409-1
Online ISBN: 978-3-030-59410-7
eBook Packages: Mathematics and StatisticsMathematics and Statistics (R0)