Building a high-performance keyvalue cache as an energy-efficient appliance
Keyvalue (KV) stores have become a critical infrastructure component supporting various services in the cloud. Long considered an application that is memory-bound and network-bound, recent KV-store implementations on multicore servers grow increasingly CPU-bound instead. This limitation often leads to under-utilization of available bandwidth and poor energy efficiency, as well as long response times under heavy load. To address these issues, we present Hippos, a high-throughput, low-latency, and energy-efficient keyvalue store implementation. Hippos moves the KV store into the operating systems kernel and thus removes most of the overhead associated with the network stack and system calls. Hippos uses the Netfilter framework to quickly handle UDP packets, removing the overhead of UDP-based GET requests almost entirely. Combined with lock-free multithreaded data access, Hippos removes several performance bottlenecks both internal and external to the KV-store application. We prototyped Hippos as a Linux loadable kernel module and evaluated it against the ubiquitous Memcached using various micro-benchmarks and workloads from Facebooks production systems. The experiments show that Hippos provides some 20%200% throughput improvements on a 1Gbps network (up to 590% improvement on a 10Gbps network) and 5%20% saving of power compared with Memcached.
keyvalue cache netfilter clock cache policy skb buffer reuse