Memcached is a distributed memory object caching system that can be used to speed up applications by caching database query results in memory, with the goal of minimizing accesses to the disk and resulting in improvement to the overall database performance. Memcached is essentially a generic cache service, in which a set of servers and storage that are networked together cooperate to implement a unified in-memory computing mechanism. The unified cache is accessed by the applications through the Memcached library that communicates with the servers over the network, so applications practically view the network as the database itself.
Running Memcached over TCP/IP limits the overall cluster performance since it:
- Increases the CPU overhead for the TCP processing
- Waits for packet acknowledgement
- Handles the packet buffering mechanism in the kernel
This performance loss can be eliminated by using standardized high-performance RDMA-based network technologies like InfiniBand and RoCE.
Mellanox Memcached Acceleration
Memcached can be accelerated by running it over Mellanox Messaging Accelerator (VMA) software, which is a dynamically-linked user-space Linux library for accelerating messaging traffic. Applications that utilize standard BSD sockets can use VMA to offload network processing from the server's CPU to the IO adapter. When using Mellanox products, the traffic is passed directly to the ConnectX®-3 VPI IO adapter from the application user space, bypassing the kernel and IP stack, and thereby minimizing context switches, buffer copies, and interrupts, resulting in extremely low latency at near wire speed.