Redis tests were performed on bare-metal single socket servers with equivalent memory, networking and storage configurations for each of the platforms shown. The processors tested here are: AMD EPYC 7763 "Milan"; Intel Xeon 8380 "Ice Lake"; Ampere Altra Q80-30; Ampere Altra Max M128-30.
This test was performed using the Memtier_benchmark (developed by Redis Labs) as a load generator for benchmarking Redis. Each test was configured to run with multiple threads, multiple clients per thread, and with pipelining enabled.
It is recommended to compile Redis server with GCC (GNU Compiler Collection) 10.2 or newer as newer compilers have made significant progress towards generating optimized code that can improve performance for Aarch64 applications.
CentOS 8.3 (kernel 4.18) with Redis-server 5.0.12 were used. For each of the tests, a similar number of clients was used to generate requests to Redis-server.
Since it is realistic to measure throughput under a specified Service Level Agreement (SLA), a 99th percentile latency (p.99) of 1 millisecond was used. This ensured that 99 percent of the requests had a response time of 1 ms in the worst case.
The test ran for 3 minutes with a 1:10 get:set ratio, which is common for in-memory caches. Sn appropriate number of clients and threads/client to load one instance of Redis was initially used, while ensuring the p.99 latency was at most 1 ms. Pipelining is a feature whereby Redis can process new requests even if the client has not already read older responses. This feature can dramatically reduce response times and 45 concurrent pipelined requests were used.
Next, the number of Redis instances was successively increased till one or more instances violated the p.99 latency SLA. The aggregate throughput of all instances was used as the primary performance metric. The test was run three times and minimal run-to-run variation was observed