moving computation to the data (1)

50
Moving Computation to the Data @kazunori_279

Upload: kazunori-sato

Post on 10-Jun-2015

9.415 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Moving computation to the data (1)

Moving Computation to the Data@kazunori_279

Page 2: Moving computation to the data (1)

自己紹介

@kazunori_279● クラウドやビッグデータ関連の仕事

○ appengine ja night管理人

● HDL歴は数か月○ DE0で勉強中。やっと4bit CPUが動いた

○ FPGAエクストリームコンピューティング(勉強会)始めま

した

Page 3: Moving computation to the data (1)

Disclaimer

● 専門外なので見当違いなこと書いてるかも● 個人の研究であり、私の雇用主とは関係ありま

せん● 引用した図には引用元のリンクが張ってありま

Page 4: Moving computation to the data (1)

アジェンダ

● なぜFPGAが気になるか● Moving Computation to the Data● 最近の業界動向● 金融分野はさらに先に進んでいた● そしてMemcached+FPGAが熱い● なぜMemcachedはFPGA実装で速くなる?

Page 5: Moving computation to the data (1)

FPGAエクストリームコンピューティング

Page 6: Moving computation to the data (1)

なぜFPGAが気になるかというと...

Page 7: Moving computation to the data (1)

ノイマンがボトルネックだから

頭の回転は速いがどう考えても

ここがネックだろ...

ノイマン型CPU

皆さん順番にディスク→メモリ→キャッシュ→レジスタってコピーしてきてくださいねどんな大きいデータも 64bitずつ計算してるしOSさんも忙しいからあと何1000クロックか待っててね

Page 8: Moving computation to the data (1)

アプリ屋だってワイヤードロジックで並列処理したい!

CPUやOSを介さず1024並列でワイヤスピードで処理してます(キリッ...とか言ってみたい

Page 9: Moving computation to the data (1)

FPGAのコモディティ化による破壊的イノベーション

● いまやリコンフィギャラブルコンピューティングが1万円で○ CPUもOSもTCPもとばしてFPGAでア

プリ処理を書ける

○ アプリ開発者がアプリごとに専用ハード

設計できる時代に○ しかも自宅で○ これってMakerムーブメントだ○ 昔の8bitマイコンみたい

Page 10: Moving computation to the data (1)

FPGAは電力性能比がケタ違いに高い

● 大規模データセンターでは電力性能比がネック○ データセンターに供給可能な電力量には限り

がある○ 例えば、1か所につき数MW程度○ データセンターが提供できる処理能力は

サーバーの電力性能比によって大きく左右される

Page 11: Moving computation to the data (1)

しかしアプリ処理のフルFPGA実装はハードルが高い...

Page 12: Moving computation to the data (1)

CPUとFPGAの適材適所がキモ

ややこしいロジックはCPUで● ストリーミングの前処理● 認証、OLTP、トランザクション● セッション管理、例外処理、UI/CLI/API

大量・並列処理はFPGAで● CPUやOSを経ないストリーミング、RDMA● ログ集計、パース、ウィンドウ処理● ソート、ジョイン、マージ、パターンマッチング● メディア配信・画像処理・数値演算・暗号化

→ARM+FPGA混載コアがおもしろい● Xilinx Zynq● Altera SoC● 既存アプリの一部分のみアクセラレーションできる

Page 13: Moving computation to the data (1)

ARM+FPGAが

データセンターにやってくる

Page 14: Moving computation to the data (1)

CPUとFPGAはどう連携するか?↓

Moving Computation to the Data

Page 15: Moving computation to the data (1)

Alteraいわく:(計算機にデータを持っていくのではなくて)

データのある場所に計算を持っていく

Page 16: Moving computation to the data (1)

データのある場所で計算する

データのあるストレージやネットワークに計算させようそんな事例が増えている:Violin Memory, IBM Netezza, HFT...

Page 17: Moving computation to the data (1)

従来型のアーキテクチャ:「ビッグデータ」の時代なのに、あいかわらず細切れにしてCPUで逐次処理って...

Page 18: Moving computation to the data (1)

新しいアーキテクチャ:低コスト・大容量化したFPGAで、アプリ処理できるインテリ

ジェントなI/Oを実装

Page 20: Moving computation to the data (1)

Moving Computation to the Dataっぽい最近の業界動向

Page 21: Moving computation to the data (1)

IBM Netezza: ストレージ層のFPGAで大規模データのフィルタリング

Page 22: Moving computation to the data (1)

XilinxによるZynqデモ:OpenCVの動画処理をARM+FPGAで100倍高速化

CPUではカクカクな処理がFPGA連携時はヌルヌルに(1:30あたり)

Page 24: Moving computation to the data (1)

IBM POWER8のCAPI:外部FPGA/ASICと高速キャッシュ同期

Page 25: Moving computation to the data (1)

Seagateのkey/value Ethernet drive

HDD/SSDがそのままKey Value Storeに...!● CPU/OS/TCPのオーバーヘッドなし

Page 26: Moving computation to the data (1)

金融分野のHFTやHPCはさらに先に進んでいた

Page 27: Moving computation to the data (1)

FPGAスイッチArista 7124FXによるHigh Frequency Trading

High Frequency TradingのFPGA化● 数msの遅れが数千万、数億規模の

損失を生む

● FPGA搭載NICでトレーディング○ TCPや取引アルゴリズムのFPGA実装○ CPU/OSを介さず低遅延を保証

● FPGA搭載アプリケーションスイッチArista 7124FX○ 株価がサーバーに届く前にスイッチが株の

売り買い

Page 29: Moving computation to the data (1)

株価のパケットが届き終わる前にオーダーのパケットを送り始める(怖

執行条件に合致しなければ最後にチェックサムずらしてパケットを破棄。市場

データ到着から25 nsで発注完了。投機市場だけに投機実行ってことか

Page 30: Moving computation to the data (1)

JP Morgan+Maxelerによる債権リスク評価専用FPGAクラスタ

● 40台で処理時間を8時間から4分に短縮

Page 31: Moving computation to the data (1)

JP Morgan+Maxelerによる債権リスク評価専用FPGAクラスタ

“FPGAを使うことで数100段といった非常に深い演算パイプラインと、とても細かい粒度での並列化によるストリーム・コンピューティングを実現できるからだ。これにより、CPUに比べ数100倍のスループットを得られるケースもある。”

Page 32: Moving computation to the data (1)

そしてMemcached+FPGA

が熱い

Page 34: Moving computation to the data (1)

ConveyのMemcachedアプライアンスx86とFPGAのハイブリッド

Page 35: Moving computation to the data (1)

ConveyのMemcachedアプライアンス

x86サーバーの7倍のスループット、遅延は1/5

Page 36: Moving computation to the data (1)

ConveyのFPGAマシン

他にもいろいろ速い

● ゲノム解析● グラフ● 文字列の編集距離● 文字列の近似検索

Page 37: Moving computation to the data (1)

なぜMemcachedはFPGA実装で速くなるか?

Page 38: Moving computation to the data (1)

Memcached+FPGAの論文が増えた

● An FPGA memcached appliance○ HP Labs, Univ. of Massachusetts Lowell○ FPGA '13○ 内容:FPGAでMemcachedを実装してみた

● Achieving 10Gbps Line-rate Key-value Stores with FPGAs○ Xilinx, ETH Zurich○ HotCloud '13○ 内容:実効レート10GbpsのMemcached(白目

Page 39: Moving computation to the data (1)

Memcached+FPGAの論文が増えた

● Thin Servers with Smart Pipes: Designing SoC Accelerators for Memcached○ HP Labs, Facebook, ARM, Univ. of Michigan○ ISCA 2013○ 内容:FPGAとCPUによるハイブリッド実装の提案

HPとFacebookとARM!

Page 40: Moving computation to the data (1)

x86上のMemcachedのボトルネックを探る

● 100台のMemcachedクライアントと5種類の負荷を再現○ 固定サイズ(128B)○ マイクロブログ(平均1KB)○ Wiki(平均2.8KB)○ サムネイル(平均25KB)○ FriendFeed(MULTI-GET)

● テスト対象サーバー○ Xeonベースのハイエンドサーバー

■ 2.25GHz x 6コアXeon/12GBメモリ/10GbE NIC○ Atomベースの低消費電力サーバー

■ 1.6GHz x 2コアAtom/4GBメモリ/10GbE NIC

Page 41: Moving computation to the data (1)

ボトルネックその1:命令キャッシュ

● 命令キャッシュのボトルネック

○ SPEC CPU 2006 integerベンチマークとの比較では、Memcachedでは最

大15倍も低い。これはLinuxカーネルとネットワークスタックのコード量の大

きさによるものである

● ITLBのボトルネック

○ AtomではITLBの不足によりミス率がXeonに比べてきわめて高い

Page 42: Moving computation to the data (1)

ボトルネックその2:分岐予測の失敗

● 分岐予測の失敗によるボトルネック

○ マイクロブログにおける実行時間の大きい上位50個の関数のうち、予測失

敗率が10%以上のもののリスト。TCPスタック、デバイスレイヤ、NICドライ

バなど。プロトコルの複雑さ、同期時の競合発生などの理由により分岐が

不規則であり予測が困難

Page 43: Moving computation to the data (1)

● ボトルネックの原因は「OSカーネル、ネットワーク・スタック、

NICドライバのコードの長さ」○ 命令ストリームのボトルネックが発生

○ 仮にスループットがリニアにスケールしたとしても、1GbE帯域を使い切るに

は6コア、10GbEでは64コアのXeonが必要

Memcachedのボトルネック

Page 44: Moving computation to the data (1)

CPU+FPGAによるボトルネック解消:TSSP: Thin Server, Smart Pipe● 複雑な処理はソフトウェア(Thin Server)で● 簡単・大容量処理はハードウェア(Smart Pipes)で

Page 45: Moving computation to the data (1)

TSSPによるMemcachedの実装

● MemcachedのGETをSoC上でハードウェア実装する○ MemcachedのGET/SET比は最大30:1、GETは全体の97%を占める。

ハードウェアで実装の困難な複雑な機能はソフトウェアでカバーする

○ GETにはUDPを使い、SETにはTCPを使う。Memcachedはそもそもベスト

エフォートな使い方なのでUDPで問題ない

● ハッシュテーブル検索とKVSを分け、前者はハードで効率

的に実行○ デコードされたリクエスト中のキー情報はハッシュテーブル検索ハードに渡

される

Page 46: Moving computation to the data (1)

ハッシュテーブル実装● KVを保存するメモリ領域の管理はソフトウェアで

● ハッシュテーブル管理はハードで

Page 47: Moving computation to the data (1)

性能評価

● MemcachedのFPGA実装(冒頭の論文)を用い、GETのみハードで実装

○ Altera DE4 (Stratix IV 530 FPGA), 4GB DDR2 x 2, GbE x 4● この既存実装での評価結果を元に、Zynq上でTSSPを実装した場合の電力性

能比を推量。Xeonの6倍、Atomの16倍を見込んでいる

Page 48: Moving computation to the data (1)

まとめ

Page 49: Moving computation to the data (1)

まとめ

● ARM+FPGAのコモディティ化のインパクト○ しかしFPGA開発のコストは高い○ CPUとFPGAの適材適所が焦点に

● Moving Computation to the Data○ データのある場所で計算する、というパラダイム○ Thin Server, Smart Pipes

● FPGAがデータセンタにやってくる○ Memcached/MapReduceアプライアンス○ データベース/KVS○ … and more!

Page 50: Moving computation to the data (1)

Questions?