RedisをフォークしたインメモリDBの「Valkey」、次期バージョンでは性能が2倍以上に
今回は「RedisをフォークしたインメモリDBの「Valkey」、次期バージョンでは性能が2倍以上に」についてご紹介します。
関連ワード (バッファ、応答性、状態等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
オープンソースの代表的なインメモリデータストア「Redis」のフォークとしてLinux Foundation傘下で開発が進められている「Valkey」は、AWSやGoogle Cloud、Oracle Cloudなどへの採用が始まっています。
参考:Google Cloud、Redisをフォークした「Valkey 7.2」のマネージドサービス「Memorystore for Valkey」プレビュー版を開始
8月2日に、フォーク後の最初のメジャーバージョンとなる「Valkey 8.0」のリリース候補版が公開されたのに合わせて、Valkey 8.0で予定されている性能や機能の向上についての記事「Valkey 8.0: Delivering Enhanced Performance and Reliability」がValkeyのブログに投稿されました。
その内容から、Valkey 8.0の主な性能や機能の向上について紹介していきましょう。
Valkey 8.0の主な新機能
Valkey 8.0では、下記のような性能向上や信頼性向上をはじめとする、さまざまな追加機能が行われる予定です。特に非同期I/Oスレッディングによってマルチコアのノードの性能はRedis 7.2(すなわちValkey 7.2)の2倍以上になるとされています。
非同期I/Oスレッディング: コマンドとI/O操作の並列処理を可能にし、スループットを最大化し、ボトルネックを最小化します。
インテリジェントなCPUコアの利用: リアルタイムの使用状況に基づいてI/Oタスクを複数のコアに分散し、アイドル時間を短縮してエネルギー効率を向上させます。
コマンドバッチ処理:頻繁にアクセスされるデータをプリフェッチすることでメモリアクセスパターンを最適化し、CPUのキャッシュミスを最小限に抑え、辞書操作(Dictionary Operations)に必要なメモリアクセスを減らします。
信頼性向上に関する機能も追加されます。
空のシャードの自動フェイルオーバー: スロットを所有しない空の状態で開始される新しいシャードが自動フェイルオーバーの恩恵を受けられるようになりました。これにより、スケーリングプロセスの開始時から高い可用性が保証されます。
スロット移行状態のレプリケーション: すべてのCLUSTER SETSLOTコマンドは、プライマリで実行する前にレプリカに同期してレプリケートされるようになりました。 これにより、プライマリに障害が発生してもレプリカがシャードの状態に関する最新の情報を持っているため、利用できなくなる可能性を小さくできます。 新しいレプリカは、運用者からの入力がなくとも自動的にプライマリから状態を継承します。
スロットマイグレーション状態の回復: Valkey 8.0は、フェイルオーバーが発生するとソースノードとターゲットノードのスロットマイグレーション状態を自動的に更新します。 これにより、リクエストがターゲットシャード内の正しいプライマリに継続的にルーティングされ、クラスタの整合性と可用性が維持されます。
レプリケーション機能の改善。
メモリ負荷の軽減:完全同期時においてレプリケーションデータをレプリカにストリーミングすることで、プライマリノードのメモリ負荷が大幅に軽減されました。 レプリカがクライアント出力バッファ(COB)のトラッキングを管理するためCOBオーバーランの可能性が低くなり、レプリカ側でより大きなCOBサイズを使用できるようになります。
親プロセスの負荷軽減: RDB専用のコネクションにより、プライマリの親プロセスはデータの処理から解放され、クライアントのクエリに集中できるようになり、全体的な応答性が向上します。
可観測性の新機能。
キーカウント: 各スロットのキー数を返すことで、キー数の多いスロットを特定しやすくする。
CPU使用率: 各スロットの操作によって消費されたCPU時間を追跡し、使用率の高い領域や潜在的なボトルネックを特定します。
ネットワーク入出力バイト数: 各スロットのデータ送受信を監視し、ネットワークの負荷や帯域幅の利用状況を把握します。
最小限のオーバーヘッド: 初期のベンチマークによると、詳細なメトリクスを有効にすることでQPSで約0.7%という無視できる程度のオーバーヘッドが発生する。
またValkey 8.0ではメモリオーバーヘッドの改善により、9%から10%程度メモリ利用率が減少し、より多くのデータが扱えるようになるとされています。
前述の通り、現在Valkey 8.0はリリース候補版となっているため、そう遠くない期間で正式版が登場すると見られます。