BMC: Accelerating Memcached using Safe In-kernel Caching and Pre-stack Processing
Autor: | Ghigoff, Yoann, Sopena, Julien, Lazri, Kahina, Blin, Antoine, Muller, Gilles |
---|---|
Přispěvatelé: | Orange Labs, DistributEd aLgorithms and sYStems (DELYS), Inria de Paris, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria)-LIP6, Sorbonne Université (SU)-Centre National de la Recherche Scientifique (CNRS)-Sorbonne Université (SU)-Centre National de la Recherche Scientifique (CNRS), Gandi SAS, Well Honed Infrastructure Software for Programming Environments and Runtimes (Whisper), Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria), Sopena, Julien |
Jazyk: | angličtina |
Rok vydání: | 2021 |
Předmět: | |
Zdroj: | NSDI'21-18th USENIX Symposium on Networked Systems Design and Implementation NSDI'21-18th USENIX Symposium on Networked Systems Design and Implementation, Apr 2021, Virtual event, United States. pp.487-501 |
Popis: | International audience; In-memory key-value stores are critical components that help scale large internet services by providing low-latency access to popular data. Memcached, one of the most popular key-value stores, suffers from performance limitations inherent to the Linux networking stack and fails to achieve high performance when using high-speed network interfaces. While the Linux network stack can be bypassed using DPDK based solutions, such approaches require a complete redesign of the software stack and induce high CPU utilization even when client load is low. To overcome these limitations, we present BMC, an inkernel cache for Memcached that serves requests before the execution of the standard network stack. Requests to the BMC cache are treated as part of the NIC interrupts, which allows performance to scale with the number of cores serving the NIC queues. To ensure safety, BMC is implemented using eBPF. Despite the safety constraints of eBPF, we show that it is possible to implement a complex cache service. Because BMC runs on commodity hardware and requires modification of neither the Linux kernel nor the Memcached application, it can be widely deployed on existing systems. BMC optimizes the processing time of Facebook-like small-size requests. On this target workload, our evaluations show that BMC improves throughput by up to 18x compared to the vanilla Memcached application and up to 6x compared to an optimized version of Memcached that uses the SO_REUSEPORT socket flag. In addition, our results also show that BMC has negligible overhead and does not deteriorate throughput when treating non-target workloads. |
Databáze: | OpenAIRE |
Externí odkaz: |