BMC: Accelerating Memcached using Safe In-kernel Caching and Pre-stack Processing
summary
BMC implements an in-kernel Memcached cache that processes UDP get requests at NIC interrupt time using eBPF/XDP, splitting logic into seven eBPF programs and computing keys with a rolling hash to stay within verifier limits. On 40 GbE hardware it boosts small-request throughput up to 18x versus vanilla Memcached and up to 6x versus a SO_REUSEPORT-optimized build, outperforms a DPDK-based systar implementation for UDP (≈5x) while using about 3× less CPU, and reports negligible overhead on non-target workloads.
AI-written summary · about
chapters (13)
- 0:00Intro
- 0:28Memcached
- 1:15Observations
- 3:20BMC: Key idea
- 4:11BMC: in-kernel proxy
- 5:54Implementation
- 6:59Dealing with eBPF's limitations
- 7:39Experimental setup
- 9:11Receive-Process-Reply latency
- 9:49Comparison to kernel-bypass: Seastar
- 10:09Comparison to kernel-bypass throughput
- 11:01Comparison to kernel-bypass: CPU usage
- 11:54Conclusion
related talks
29mcache_ext: Customizing the Page Cache with eBPF
37mEfficient and Flexible Virtual Machine Networking Through eBPF
19mP2CACHE: Exploring Tiered Memory for In-Kernel File Systems Caching
16mElectrode: Accelerating Distributed Protocols with eBPF
32meBPF: BPF kernel infrastructure
28mAchieving 10Gbps Line-rate Key-value Stores with FPGAs
25mMemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing
49mCache à la carte: a framework for in-memory caching
