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 that results in improving the overall database performance. Memcached can be viewed as 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 practically applications 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 lose can be eliminated by using standardized high performance RDMA based networks technologies like InfiniBand and RoCE.
Mellanox Memcached Acceleration
Memcached can be accelerated by running 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 thus minimizing context switches, buffer copies and interrupts resulting in extremely low latency at a near wire speed.