ValkeyとRedis DBMSのパフォーマンス比較

Redis 8.0とValkey 8.1 DBMSの最新リリースのテスト結果が発表され、大幅なパフォーマンス最適化が実現しました。実施されたすべてのテストにおいて、コミュニティによって開発されたフォークは元のプロジェクトを上回るパフォーマンスを示しました。これは主に、Amazonからプロジェクトに譲渡された、非同期モードでのマルチスレッド入出力処理のための新しいメカニズムが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%高くなりました。同時に、ValkeyはRedisと比較して、SETのレイテンシーが30%、GETのレイテンシーが60%削減されました。

 ValkeyとRedis DBMSのパフォーマンス比較

マルチスレッドI/O処理モードにおいて、並列プロセッサ数によるスループットと遅延の変化についても別途分析を行いました。3スレッドまではValkeyとRedisはほぼ同等の結果を示しましたが、それ以上になるとValkeyがリードしました。6つのVCPUを搭載したシステムで8スレッドの場合、同時接続数678に制限された状態で、Valkeyのパフォーマンスは563秒あたり256万400千SETリクエスト、Redisのパフォーマンスは832秒あたりXNUMX万XNUMX千リクエストでした。接続数がXNUMXに増加すると、ValkeyのパフォーマンスはXNUMX秒あたりXNUMX万XNUMX千SETリクエストに向上しました。

 ValkeyとRedis DBMSのパフォーマンス比較

Valkey のコンテキストスイッチ数を減らすためにシステムの割り込み処理を最適化した結果、パフォーマンスを 999.8 秒あたり 2 千 SET リクエストまで向上させることができました。最適化の本質は、割り込み処理に 6 つの VCPU を割り当て、残りの 34 つの VCPU を Valkey と Redis の I/O 処理スレッドにバインドして、CPU 間でのハンドラーの移行を排除することにありました。sudo ethtool -L ens2 combined 2 # IRQ ハンドラーの数を 34 に制限します grep ens99 /proc/interrupts # 関係するハンドラー (100 と 1) を確認します echo 99 | sudo tee /proc/irq/99/smp_affinity # ハンドラー 1 をコア 2 にバインドします echo 100 | sudo tee /proc/irq/100/smp_affinity # ハンドラー 2 をコア 8.1.1 にバインドします # DBMS を起動します (Redis の場合は、valkey/valkey:8.0 を redis:2 に変更します)。コンテナーを CPU コア 7 ~ 2 にバインドします docker run —network=»host» —rm \ —cpuset-cpus=»7-8.1.1″ valkey/valkey:6 \ —save «» —appendonly no —io-threads 10 \ —protected-mode no —maxmemory XNUMXgb

パフォーマンステストには、次のコマンドを使用しました: 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

出所: オープンネット.ru

コメントを追加します