BENCHMARK RESULTS

Redis Running with Onload®
Sees a 100% Performance Gain

What is Redis?
Redis is an in-memory data store, often used as a database, cache or message broker. It supports a wide variety
of data structures, has built-in replication, scripting, and many other capabilities. By design, Redis’ RESP protocol
is implemented over TCP and is heavily network dependent, so improvements in TCP packet handling can provide
significant overall performance gains.

Key Observations from Performance Testing• Solarflare’s Onload delivers a 100% performancegain for Redis GET transactions when using 25GbE
with 10 Redis instances, and at 12 instances an 88%
improvement for SETs.
• When processing GET requests using 10 or fewer
Redis instances Onload on 25GbE outperforms Redisutilizing the kernel communications stack with a100GbE connection.
• We soon reach the limits of the Redis applicationor the physical system under test. If we look at25GbE with Onload we can see that the link reaches
a maximum of 10 million requests per second sothen by extension a 100GbE link should level off at40 million requests per second. Our testing onlyreaches roughly 25 million or 62.5% of what has
been predicted.
• Onload is able to fully utilize either a 10GbE or25GbE link as shown by the plateaus in the results.
The kernel driver is not able to achieve this at 25GbE.
Redis using 25GbE and the kernel driver neverapproaches this plateau, but at 11 instances theslope of the performance gain is nearly flat.

BENCHMARK RESULTS

Why Redis Benefits from Kernel Bypass
Since Redis is network intensive, every request includes network processing overhead. Whenever an application like
Redis touches hardware, other than the CPU or memory, and in this case the network, it must make at least one, andsometimes 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 Redis from the kernel into
Redis’s own application space in memory. This single modification improves the performance of Redis by 50% on
average and in some cases by as much as 100% as can be seen in these graphs.

Description of Test Platforms
For this testing we used two dual socket Intel
Xeon systems labeled “A” and “B”, and three
production networks, 10GbE, 25GbE and100GbE, leveraging a single switch dedicatedto this testing, no other traffic exists on thisswitch. The “A” system was used as the server
and it had two Platinum 8153 CPUs clocked
at 2GHz with 16 cores per processor, the “B”
system was used as the client utilizing twoGold 5120 CPUs clocked at 2.2Ghz but with
14 core processors. Both systems contain
192GB of memory, they boot from an NVMe
flash drive, and have three Solarflare networkcards: SFN8522 dual port 10GbE, X2522-25G
dual port 25GbE and an X2541 single port
100GbE. This enables us to test performanceagainst a range of shipping Solarflare adapters
as shown above.

wrk - a HTTP
benchmark tool

1 GbE

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

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

10 GbE 25 GbE 100 GbE$5148F-ON

BENCHMARK RESULTS

Tuning Configuration
Here are the changes we made to the standard installbeyond simply leveraging Onload.
• We increased the maximum number of open files
from 1,024 to 10,032.
• Raise somaxconn to 65,535 enabling 65,535
connections versus originally 128.
• Enable Vm.overcommit_memory by setting it to 1
from 0.
• Disable Transparent Huge Pages (THP).
Observations
As an in-memory data store, the performance of Redis
is not gated by traditional storage I/O. Redis relieson the operating system’s communications stack
to process network I/O requests, but in high core
count environments, this stack has become the newbottleneck. Here are some additional points to consider:• Redis with Onload can service up to 33 million Get
requests/second, while Redis using the operating
system kernel can only handle 23 million Get
requests/second, a 43% improvement.
• Therefore Redis with Onload can potentially reduce
your capex by 43%. In simple terms every two Redis
servers leveraging Onload can service the same
number of requests as three Redis servers using thestandard Linux kernel.
• Conversely, adding Onload and a Solarflare 25GbE or100GbE NIC to existing servers will provide additional
headroom for growth or unanticipated businesspeaks as shown above.
For More Testing Details
Check out Solarflare’s Redis Onload Cookbook forthe exact installation and testing process along withthe specific tuning and tweaking commands executedabove.

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 overallmeasurable 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-121512-CD Issue 5
Redis 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.