Valkey 与 Redis DBMS 性能比较

本文介绍了 Redis 8.0 和 Valkey 8.1 DBMS 最新版本的测试结果,其中宣布了显著的性能优化。在所有测试中,社区开发的分支版本均优于原始项目,这主要归功于 Valkey 中实现了一种新的异步多线程输入/输出处理机制,该机制由亚马逊转移到该项目。

在 4 VCPU 的 AWS Graviton8 c2g.8xlarge 测试环境中,Valkey 8.1.1 达到了每秒 999.8 万个 SET 请求的吞吐量,而 Redis 8.0 则达到了每秒 729.4 万个请求的水平。总体而言,Valkey 的 SET 操作吞吐量比 Redis 高 37%,GET 操作吞吐量高 16%。同时,与 Redis 相比,Valkey 的 SET 延迟降低了 30%,GET 延迟降低了 60%。

Valkey 与 Redis DBMS 性能比较

我们还对多线程 I/O 处理模式下吞吐量和延迟随并行处理器数量变化的情况进行了单独分析。在最多 3 个线程的情况下,Valkey 和 Redis 的结果大致相同,但超过 6 个线程后,Valkey 的表现更胜一筹。在 8 个 VCPU 的系统上使用 678 个线程时,Valkey 的性能为每秒 563 万个 SET 请求,而 Redis 的性能为每秒 256 万个请求,同时连接数限制为 400 个。当连接数增加到 832 个时,Valkey 的性能提升至每秒 XNUMX 万个 SET 请求。

Valkey 与 Redis DBMS 性能比较

在优化了系统中的中断处理,减少 Valkey 的上下文切换次数后,我们将性能提升到了每秒 999.8 万次 SET 请求。优化的核心在于分配 2 个 VCPU 用于中断处理,将剩余 6 个 VCPU 绑定到 Valkey 和 Redis 的 I/O 处理线程,从而消除了处理程序在 CPU 之间的迁移。 sudo ethtool -L ens34 combined 2 # 限制 IRQ 处理程序数量为 2 grep ens34 /proc/interrupts # 查看涉及哪些处理程序(99 和 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # 将处理程序 99 绑定到核心 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # 将处理程序 100 绑定到核心 2 # 启动 DBMS(对于 Redis,将 valkey/valkey:8.1.1 更改为 redis:8.0),并将容器绑定到 CPU 核心 2-7 docker run —network=»host» —rm \ —cpuset-cpus=»2-7″ valkey/valkey:8.1.1 \ —save «» —appendonly no —io-threads 6 \ —protected-mode no —maxmemory 10gb

为了进行性能测试,使用了以下命令:docker run —network=»host» —rm —cpuset-cpus=»2-7″ \ valkey/valkey:8.0.1 valkey-benchmark \ -h 172.31.4.92 -p 6379 -t SET,GET -n 100000000 -c 256 \ -r 3000000 —threads 6 -d 1024

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster