Accelerating Key-Value Store with Layer-2 Transparent Proxy Cache Using DPDK

Hayato Aoba, Ryota Kawashima, Hiroshi Matsuo · 2023

In-memory Key-Value Stores (KVSs) such as Redis and Memcached can be used as caches for relational databases to reduce the database load while decreasing the response time. However, in-memory KVSs perform poorly due to bottlenecks in the Linux network stack. Although the Linux network stack can be bypassed using DPDK, this approach requires redesigning the network stack and the in-memory KVS, which incurs high costs. By contrast, using eBPF to process requests in the kernel space before network stack execution incurs a large overhead inherent in the Linux kernel. In this paper, we propose a method of caching using a DPDK-based layer-2 transparent proxy without modifying the cache server. This proxy uses DPDK to reduce the overhead of the Linux kernel and process requests in layer 2. This eliminates the need for a network stack and minimizes implementation costs while eliminating traditional bottlenecks. In addition, because the proxy caches transparently, it does not require any modification to the client or server applications and can be widely deployed in existing systems. We apply the proposed proxy to Redis and evaluate its performance. The throughput of the proposed method is up to 13.6x better than that without the proxy, and up to 1.5x better than that of an in-kernel cache using eBPF. The throughput degradation due to the proxy overhead is confirmed to be approximately 3%.

Read the paper · More papers on PaperTik