BENCHMARK RESULTS

Memcached Running with Onload®
Sees a 300% Average Performance Gain

What is Memcached?
Memcached is a high-performance, distributed memory object caching system, generic in nature, but originallyintended for use in speeding up dynamic web applications by alleviating traditional database latency. You can think of
it as a short-term memory for your web applications. Structurally it is an in-memory key-value store for small chunksof arbitrary data (ex. strings, images).
Memcached is heavily network dependent by design, so its performance can be significantly improved throughenhancements to the underlying networking layer.

Key Observations from Performance Testing• Solarflare’s Onload delivers an average performancegain of 300% for Memcached when measuring128byte GET requests per second (RPS) across theentire range of one to 28 instances using multiple
ports over 25GbE with two physical clients each
spawning up to five million parallel connections.
• Using 100GbE and all the same settings as above theaverage benefit was an impressive 280%.

• When we moved to a single physical client machine
the average results were a consistent 290% gain forboth 25GbE and 100GbE.
• Looking at Memcached’s SET function with 128byte
messages the average performance gains ranged
from 230% to 270% which across both 25GbE and100GbE and when using a single versus two physicalclients.

BENCHMARK RESULTS

Why Memcached Benefits from Kernel Bypass
Since Memcached is network intensive, every request includes network processing overhead. Whenever an application
like Memcached touches hardware, other than the CPU or memory, and in this case the network, it must make at least
one, and sometimes several calls to the operating system kernel. Each request is additional overhead that requires
both CPU cycles and processing time. Solarflare’s Onload moves the network processing required by Memcachedfrom the kernel into Memcached’s own application space in memory. This single modification improves Memcachedperformance by 300% on average as can be seen in the above graph.
Description of Test Platforms
For this testing, we used two Dell EMC PowerEdge
R740 dual-socket Intel Xeon systems and a single R630
system, each with a 25GbE X2522 and a 100GbE X2541
card. These cards were then connected back-to-back forthis testing.
The R740 systems had two Intel Gold 5120 processors,
clocked at 2.20GHz with 14 cores per processor, andtwo Platinum 8153 CPUs clocked 2.0GHz, with 16 cores,
both with 192GB of memory. The R630 system included
two E5-2460 v4 CPUs clocked at 2.40GHz, with 10 coresand 128GB of memory as shown in the block diagram.
Tuning Configuration
We tested both a “Balanced” and a “Performance” profile
with Onload and found that the Performance profile
yielded the best results. The Onload Performance
profile is designed to achieve maximum performance,giving the best throughput and transaction rate, as
well as best average and 99th percentile transaction
response times. However, this profile assumes thatthe application threads have exclusive use of physicalCPU cores. To get best performance, the user may
need to explicitly pin applications threads to physicalcores (i.e. avoid threads sharing hyperthreaded CPUcores) and ensure there are enough unused CPU coresfor scheduling other applications. Because this profile
may use busy polling (also known as spinning), CPUutilization metrics do not provide a usable indication ofsystem load.
This profile had some of the following characteristics:• Enable event polling without interrupts within
epoll_wait calls to reduce latency and avoid context
switches (EF_POLL_USEC and multiple EF_*_SPINoptions)• Use Epoll mode 3 (EF_UL_EPOLL=3) which gives bestepoll performance when a large number of sockets
are in the epoll set.

1 GbE
mc-benchmark
sfocr740a
2x Intel® Xeon®
Platinum 8153 CPU(16c) @ 2.00GHz
192GB @2666MHz

sfocr740a
2x Intel® Xeon®
Gold 5120 CPU(14c) @ 2.20GHz
192GB @ 2666MHz

mc-benchmark
sfocr740a
2x Intel® Xeon®
CPU ES-2640 v4 @2.40GHz, 128GB @2133MHz10 GbE 25 GbE 100 GbE$5148F-ON

Observations
Memcached relies on the operating system’scommunications stack to process network I/O requests,
but in high core count environments, this stack has
become the new bottleneck. Here are some additional
points to consider:• When running Memcached with Onload over 25GbE,
there is a significant and relatively consist averagegain of 280% when using the Performance profile.
With the Balanced profile we see a 180% average
improvement. Again, tests run over 25GbE and100GbE are comparable, so network speed is not alimiting factor up to 28 instances.

BENCHMARK RESULTS• Running mc-benchmark from one or two client
servers produces kernel results over both 25GbE
and 100GbE which are comparable, showing noadvantage of 25GbE over 100GbE when using GET
requests scale which from 78K to 1,455K. This also
shows that a single client running mc-benchmarks
tests pointing to a single Memcached server cansaturate the Memcached processes at 25GbE up to28 instances.

For More Testing Details
Check out Solarflare’s Onload Memcached Cookbook
for the exact installation and testing process along withthe specific tuning and tweaking commands executedabove.

• Onload using the Performance profile running over
25GbE or 100GbE, and using the GET or SET function
with anywhere from 1 to 28 instances, and multiple
ports, consistently delivers performance in the rangeof 275%

The above benefit statements are the result of benchmarking designed to focus on the value of optimizing networking through Onload kernel
bypass. Real world use cases are not the same as benchmarks and as such the role that networking plays may vary, so your overall measurable
benefits may be different.

For more information please visit:
solarflare.com

Contact Us:
US +1 949 581 6830
UK +44 (0) 1223 477171
HK +852 2624 8868
Email: sales@solarflare.com

SF-122430-CD Issue 3
Memcached Benchmark Results 112219
Copyright © 2019 Xilinx, Inc. Onload and all other designated brands included herein are trademarks of Xilinx in the United States and othercountries. All other trademarks are property of their respective owners.