Redis 测试是在具有相同内存、网络和存储配置的单路槽服务器上执行的,每个平台配置都一样。这里测试的处理器是:AMD EPYC 7763“Milan”;英特尔至强 8380“Icelake”;Ampere Altra Q80-30;Ampere Altra Max M128-30。
该测试是使用 Memtier_benchmark(由 Redis Labs 开发)作为负载生成器来执行的,用于对 Redis 进行基准测试。每个测试都配置为使用多个线程、每个线程多个客户端以及启用流水线运行。
建议使用 GCC(GNU 编译器集合)10.2 或更高版本编译 Redis 服务器,因为较新的编译器在生成优化代码方面取得了重大进展,可以提高 Aarch64 应用程序的性能。
使用了带有 Redis-server 5.0.12 的 CentOS 8.3(内核 4.18)。对于每个测试,使用相似数量的客户端来生成对 Redis 服务器的请求。
由于在指定的服务水平协议 (SLA) 下测量吞吐量更具有现实意义,所以这里设定了1 毫秒的 99% 延迟 (p.99)。这样可以确保 99% 的请求在最坏情况下的响应时间为 1 毫秒。
测试以 1:10 的 get:set 比率运行了 3 分钟,这对于内存缓存很常见。最初使用适当数量的客户端和线程/客户端来加载一个 Redis 实例,同时确保 p.99 延迟最多为 1 毫秒。流水线是 Redis 的一个功能,在即使客户端尚未读取旧响应时可以处理新请求的。此功能可以显著减少响应时间,并且使用了 45 个并发流水线请求。
接下来,Redis 实例的数量不断增加,直到一个或多个实例违反 p.99 延迟 SLA。所有实例的总吞吐量用作主要性能指标。测试运行了 3 次,需要观察最小的运行之间的变化