Fpgax7 aom

25
ɵʀɽのためのɰɺɱɫ ɸɳɭ内ɲʁ ɭɫɭɲɯ、 カーネル内ɽʁ ɭɫɭɲɯ @ɰɺɱɫʂ 第7回 徳差 雄太 aom at sfc.wide.ad.jp 2015年8⽉2⽇(⽇) 慶応⼤学 松⾕宏紀研究室

Transcript of Fpgax7 aom

のための 内 、カーネル内@ 第7回

徳差 雄太 aom at sfc.wide.ad.jp2015年8⽉2⽇(⽇)

慶応⼤学 松⾕宏紀研究室

今⽇のトピック / ʼ

▶ FPGAによるKey-Value Store⾼速化の取り組み▶ NOSQL向けデータベースキャッシュの階層化

1

による - ⾼速化の取り組み

とは / ” ”

▶ KeyとValueを格納する超単純なデータベース▶ スケールアウトに特化▶ SNSを初めとする多くのWEBサービスで使⽤

▶ Facebookの写真のキャッシュにMemcached▶ TwitterのタイムラインのキャッシュにRedis▶ LINEのストレージ・キャッシュにRedis・HIVE

3

による限界と 化のメリット

Xilinx社によるMemcached⾼速化[Blott] 1

▶ FPGAにMemcachedを実装▶ KVS処理のパイプライン化

プラットフォーム RPS [M] RPS/W [K]Intel Xeon (8コア) 1.34 7TilePRO (64コア) 0.34 3.6

スタンドアロンFPGA 13.02 254.8FPGA + ホストPC 13.02 106.7

電⼒あたりの性能がスタンドアロンFPGAでは約30倍改善!デメリット : FPGAボード上のDRAMのサイズに律速(<数GB)1[Blott] Achieving 10Gbps Line-rate Key-value Stores with FPGAs,HotCloudʼ13

4

REmote DIctionary Server

▶ インメモリKVS▶ Valueにデータ構造を定義可能▶ 永続化(ディスクに書き出し可能)▶ DB-Engines RankingでKVSの中で1位

Memcachedとの相違Memcached Redis

プロトコル Memcacheプロトコル 独⾃プロトコルデータ永続化 x ○データ構造 string String, List, Hash,

Set, Sorted SetHW化の事例 多数 x

5

設計⼿法の対⽐ .

Memcached深いパイプライン化▶ Valueにデータ構造がない▶ Write/Readの操作時間が⼀定

Redis ヘテロジニアスマルチコア⽅式▶ データ構造毎に処理時間が異なるため、パイプライン化が困難

▶ データ構造毎に専⽤演算器(PE)を設計▶ マルチコアで⾼速化

6

ハードウェアによる の挙動 0

7

ハードウェアによる の挙動 1

8

NetFPGAプロジェクト▶ githubベースのオープンハードウェア▶ NetFPGA-10G, NetFPGA-SUME

NetFPGA-10G

FPGA Xilinx Vertex5DRAM RLDRAM-II 288MBSRAM 27MB

Network 10G x4PCIe Gen2 x4

NetFPGA-SUME

FPGA Xilinx Vertex7DRAM DDR3 SDRAM 8GBSRAM 27MB

Network 10G x4PCIe Gen3 x8FMC 100G Ether対応!? 9

ハードウェア - のブロック図

10

単⼀ の場合のブロック図

String PE で1クエリ処理に必要な時間

▶ SET操作に211クロックサイクル▶ GET操作に48クロックサイクル

11

領域のメモリ管理

Slab Allocator

▶ FPGA内のCPU(MIPS R3000互換)によるSlab Allocator▶ Chunkサイズ毎に未使⽤のChunkをFree Listで管理▶ Slab allocatorに140クロックサイクル(SET処理の7割) 12

データ構造サーバ設計プロジェクトのまとめ

Redisのハードウェア化の検討

ねらい▶ RedisのようにValueにデータ構造を定義▶ FPGAによる低消費電⼒で動作するデータベースサーバ▶ PEのヘテロジニアスマルチコア化による⾼いスループットこんなことがしたい!▶ ⽤途に応じてPEのカスタマイズ可能▶ 現在、ASIC化も取り組み中

13

インカーネル

インカーネルKVS▶ FPGA NICでIP, UDPのチェックサム、Keyのハッシュ値の計算をオフローディング

▶ KVSパケットのみをネットワークスタックをバイパスし、カーネル内処理

14

向けデータベースキャッシュの階層化

/ の得⼿不得⼿

キャッシュ容量 電⼒効率(Perf/Watt)HW⾼速化 x オンボードDRAMの

容量に律速 (<数GB)○ ⾼いPerf/Watt

SW⾼速化 ○ メインメモリをストレージとして使⽤可能(<数TB)

x ⼤幅なPerf/Wattの向上は困難

▶ 容量と電⼒効率のトレードオフ▶ HW⾼速化⼿法とSW⾼速化⼿法の併⽤が適切

16

向けデータベースキャッシュ階層

⼤容量かつ⾼速なNOSQLサーバの実現

17

キャッシュ階層の検討項⽬

▶ キャッシュの連想度・Victimキャッシュ▶ 同⼀ハッシュ値を有するキャッシュブロックの個数

▶ Key-Valueサイズによるキャッシュポリシー▶ 書き込み⽅式 (Write back / Write Through)

▶ 書き込み時のキャッシュの割り当て▶ Write allocate / Write non-allocate

▶ キャッシュ階層間の包含(Inclusion)▶ キャッシュのEvictionポリシー

18

キャッシュ階層間の包含

19

データベースコアの 化

▶ 当研究室ではワイヤレス3次元チップを研究しています。

▶ 今回はプロセスの検証として簡易版を実装

20

データベースコアの 化

▶ データベースコアのASIC化 (ルネサス社65nmプロセス)

▶ ストア領域として8KSRAMセル

▶ 3次元積層チップとして想定

▶ 今回はプロセスの検証として簡易版を実装

21

まとめ /

▶ Key-value Storeの⾼速化⼿法▶ FPGAによるKVS専⽤ハードウェアの設計▶ カーネル内に実装したIn-Kernel KVS▶ NOSQL向けデータベースキャッシュ階層

23

24