読者です 読者をやめる 読者になる 読者になる

Key-value Stores with FPGA

FPGAでmemcachedを!的な話をブログに妄想として書いたり、雑談で人とすることがあったりしたのですが、世界では実装されて既に発表されていました。*1


ざっくり中身

  • NICに対してFPGAオンボードしてその部分でmemcachedのプロトコルを解釈して直接DRAMに値を書き込む
    • ハッシュテーブルの大きさは200万レコードで24GByteのストレージを持つ
  • NICに入ってきたパケットを以下の順で処理する
    • memcachedプロトコルの解析
    • ハッシュテーブル問い合わせ
    • ハッシュテーブルへの値の格納・取得(DRAM書き込み or 読み込み)
    • memcachedプロトコルとしての応答生成
  • 上の一連の処理が156MHzのクロック駆動481サイクルで完了する
  • これを並列化且つパイプライン化
  • 実験
    • memcachedのGET命令を1秒辺りの応答数 vs パケットサイズでグラフ図示
      • FPGA単独の場合、パケットサイズが96byteであれば13,000 req/sec くらい (グラフ赤線)
      • 但しNICのボトルネックがあるのでパケットサイズが大きくなるとXeonサーバと同等の req/sec になる
    • 過去のFPGA実装と比較すると大幅にパフォーマンスがよくなっている (グラフ黄線との比較)
      • 過去の実装はこれと思われる

  • First Results of Memcached Evaluation
    • Xeonサーバと比較してもパフォーマンスよかった
    • 応答時間も100倍程度良くなっている
    • 1W当たりのリクエスト処理数はXeonサーバに比べて大変良い(=エコ)
  • 今後の課題
    • ハッシュテーブルの大きさの制限
    • 実際のアプリケーションでの利用
    • 他のアプリケーションでの活用を見つける(=恐らくWebアプリで利用されるキャッシュ以外での活用の模索?)

そしていろいろ調べると既にFPGA入ったアプライアンスとして世の中に出ていることを知った。*2

このあたり今年ぐらいから盛り上がったりするのだろうか。

*1:気づくのが遅くて大変ツライ

*2:しかもこれも去年の話だった...