[論文レビュー] Cuckoo++ Hash Tables: High-Performance Hash Tables for Networking Applications
Cuckoo++ は、各プライマリバケットにブールフィルタを統合することで、セカンドリーバケットへの不要なメモリアクセスを排除し、ネットワーキング用途向けに高性能なハッシュテーブルを提供する。これにより、1コアあたり最大6000万回のルックアップが可能となり、DPDKに比べてネガティブルックアップで50%高速、18コア環境では45%高速である。また、16ビットのタイムスタンプを用いたネイティブなエントリ有効期限サポートにより、コネクショントラッキングワークロードの効率が向上する。
Hash tables are an essential data-structure for numerous networking applications (e.g., connection tracking, firewalls, network address translators). Among these, cuckoo hash tables provide excellent performance by allowing lookups to be processed with very few memory accesses (2 to 3 per lookup). Yet, for large tables, cuckoo hash tables remain memory bound and each memory access impacts performance. In this paper, we propose algorithmic improvements to cuckoo hash tables allowing to eliminate some unnecessary memory accesses; these changes are conducted without altering the properties of the original cuckoo hash table so that all existing theoretical analysis remain applicable. On a single core, our hash table achieves 37M lookups per second for positive lookups (i.e., when the key looked up is present in the table), and 60M lookups per second for negative lookups, a 50% improvement over the implementation included into the DPDK. On a 18-core, with mostly positive lookups, our implementation achieves 496M lookups per second, a 45% improvement over DPDK.
研究の動機と目的
- ルックアップ中に発生する余分なメモリアクセスが原因で生じる大規模なクックー・ハッシュテーブルにおけるパフォーマンスボトルネックを解消すること。
- 制御不能または悪意あるトラフィック下でも、さまざまなワークロードにおいてポジティブおよびネガティブルックアップの両方のパフォーマンスを均一に向上させること。
- 外部タイマー管理のオーバーヘッドを排除するために、ハッシュテーブル構造に直接エントリの有効期限管理を統合すること。
- 実用的な効率性を向上させつつも、クックー・ハッシュの既存の理論的保証に準拠し続けること。
- DPDK やホートンテーブルなどの既存実装を上回るスループットとメモリアクセス削減を両立させること。
提案手法
- 各プライマリバケットにブールフィルタを統合し、キーがセカンドリーバケット内に存在する可能性があるかを事前にチェックすることで、不要なメモリアクセスを回避する。
- 計算コストを最小限に抑えるために、ビット単位のAND演算を用いたシンプルで高速なブールフィルタを採用し、セカンドリーバケットのルックアップを効率的にプルーニングする。
- 64バイトのキャッシュラインにスロットと併せてブールフィルタを格納するコンactなメモリレイアウトを採用し、CPUキャッシュラインのアラインメントを活用する。
- エントリの自動有効期限切れを実現するために、テーブルエントリに直接16ビットのタイムスタンプを組み込む。
- バッチルックアップをサポートするように設計するとともに、既存のクックー・ハッシュの性質および理論的分析と互換性を保つ。
- ブールフィルタの判断をプリフェッチ戦略(楽観的および悲観的)に依存しないように設計することで、両方の戦略を最適化する。
実験結果
リサーチクエスチョン
- RQ1プライマリバケットに埋め込んだブールフィルタは、正しさやパフォーマンスに悪影響を及げることなく、クックー・ハッシュテーブルにおける不要なメモリアクセスを削減できるか?
- RQ2ブールフィルタの統合により、ネガティブルックアップ率が高く、制御不能なトラフィックが発生する多様なワークロードにおいても、一貫したパフォーマンス向上が達成できるか?
- RQ3ハッシュテーブル構造にネイティブにエントリの有効期限管理を統合することで、外部タイマー管理のオーバーヘッドを効果的に排除できるか?
- RQ4実際のネットワーキングワークロード下で、Cuckoo++ のパフォーマンスは DPDK や他の最先端実装と比べてどの程度優れているか?
- RQ5設計がクックー・ハッシュの理論的保証を維持しつつ、実用的なスループットを向上させ、メモリアクセス回数を削減できるか?
主な発見
- Cuckoo++ は、1コアあたり3700万回のポジティブルックアップおよび6000万回のネガティブルックアップを達成し、DPDKに比べて50%の高速化を実現した。
- 主にポジティブルックアップが中心の18コアシステムでは、Cuckoo++ は1秒間に49億6000万回のルックアップを達成し、DPDKに比べて45%の高速化を達成した。
- プライマリバケットにブールフィルタを導入することで、平均的なメモリアクセス回数が2回から1回に削減され、高負荷および悪意あるトラフィック下でも顕著なパフォーマンス向上が得られた。
- 統合された16ビットタイムスタンプ機構により、外部タイマー管理を不要とし、システムの複雑さとオーバーヘッドを低減できる。
- Cuckoo++ は、ネガティブルックアップ率が高く、負荷要因が変動するあらゆるワークロードにおいて、DPDK やホートンテーブルを上回るパフォーマンスを発揮した。
- 設計は既存のクックー・ハッシュ理論と互換性を保ちつつ、バッチルックアップをサポートしており、ハイパフォーマンスパケット処理アプリケーションに適している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。