ウェブサイト検索

Valkey 8.1 インメモリデータストアが10%早いスループットを実現


Valkey 8.1 のインメモリデータストアが登場しました。パフォーマンスの向上、レイテンシの低下、観測性の強化などが実現されています。

前回の8.0リリースから6ヶ月以上経過した後、Valkeyの開発者たちは、Redisの代替としても使用できるこのオープンソースで高性能なインメモリデータストアの新しいバージョン8.1の一般的な提供を発表しました。

Valkey 8.1の重要なハイライトの1つは、新しく実装されたハッシュテーブルで、これが今やコアのキー-バリューストアとして機能し、Hash、Set、Sorted Setデータ型を支えています。このリライトは、メモリアロケーションとランダムメモリへのアクセスを減らすために現代の設計技術を活用しています。初期の観察結果は次の通りです。

  • メモリの節約は、キーと値のペアごとに約20バイト(TTLなし)で、TTLが有効な場合は最大30バイトになります。
  • パイプラインワークロードにおいて(I/Oスレッディングが無効になっている場合)、Valkey 8.0と比較して約10%のスループット向上。

リリースのもう一つのハイライトは、イテレータのプリフェッチです。Valkeyノードが新しく接続したレプリカにキーと値を送信する必要があるとき、システムは関連するバケットと要素をCPUキャッシュにプロアクティブにロードします。

初期の測定によると、これにより反復回数が3.5倍速くなり、KEYSのようなコマンドに必要な時間を大幅に短縮できます。さらに、I/Oスレッドには拡張された責任が与えられ、TLSネゴシエーションの処理からレプリケーションストリームの読み書きまで、より多くのタスクをI/Oスレッドプールにオフロードすることが可能になりました。

この変更は、新しい接続の受け入れ率を向上させ、GETやSETなどの操作のスループットを改善し、さらにレプリケーショントラフィックを高速化します。

パフォーマンスに加えて、Valkey 8.1にはいくつかのレプリケーション改善が含まれています。TLSを有効にしたフル同期は、冗長なCRCチェックを削除したおかげで、最大18%速くなりました。さらに、フォークのコピーオンライトメモリオーバーヘッドは約47%削減されました。

アクティブデフラグメンテーションは、さらに予測可能です:1ミリ秒を超えるレイテンシが効果的に排除され、デフラグサイクルタイムは500マイクロ秒に短縮され、低いテールレイテンシを維持するための頻度が高くなります。アンチスタベーションメカニズムにより、長時間実行されるコマンドがあっても、デフラグメンテーションがCPU使用目標を達成し続けることが保証されます。

可観測性にも注意が払われています。新しいログ形式とタイムスタイルのオプションにより、管理者は従来のログ形式(logfmt)と構造化されたログ形式のいずれかを選択し、異なるタイムスタンプ表現、たとえばより現代的なISO 8601の中から選ぶことができます。

Valkey 8.1は、COMMANDLOG機能も追加され、大規模なリクエストと返信を記録できるようになり、エンドツーエンドのレイテンシに関するより詳細なビューを提供します。その上、内蔵のレイテンシ監視フレームワークは、最新の検出されたレイテンシイベントだけでなく、記録されたレイテンシの合計とスパイクの数も報告し、頻度と影響の両方に関するより明確なウィンドウを提供します。

最後に、いくつかの他の改善があります。SET IFEQによる条件付き更新は、余分なクライアント側のロジックや往復オーバーヘッドを排除し、効率的な操作を可能にします。ZRANKコマンドはリーダーボードのためにより効率的になり、場合によっては最大で45%速く動作することがあります。

HyperLogLog操作は、x86上の高度なベクトル拡張によってマージとカウントの速度が12倍向上し、BITCOUNTはAVX2の最適化のおかげで500%以上の潜在的な増加が見込まれます。ZADDのようなコマンドでの浮動小数点の解析も速くなりますが、これを利用するにはSIMD命令を持つC++コンパイラが必要です。

詳細については、発表をご覧ください。

関連記事: