SQL+GPU+SSD=∞ (Japanese)

  • View
    7.274

  • Download
    0

  • Category

    Software

Preview:

Citation preview

SQL+GPU+SSD=∞

かぴばら@品川

自己紹介

▌Name: かぴばら@品川

▌PostgreSQL歴:9年ほど(2006~)

▌works: セキュリティ周り、FDW周り、諸々...

▌趣味: 別業界のテクノロジを持ってきて PostgreSQLに組み合わせる事

(混ぜるな危険?)

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 2

Very powerful computing capability

Very functional & well-used

database PG-Strom:

なるものを作っています。

GPGPU

What’s PG-Strom – ざっくり説明すると

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 3

▌コア機能

① SQLからGPUネイティブバイナリを動的に生成する。

② GPUによる “超”並列処理を非同期に実行する。

▌利点

SQLクエリを透過的にアクセラレーション可能。

一般的なH/Wを使って構成可能。安価。

Parser

Planner

Executor

Custom- Scan/Join Interface

Query: SELECT * FROM l_tbl JOIN r_tbl on l_tbl.lid = r_tbl.rid;

PG-Strom

CUDA driver

nvrtc

DMA Data Transfer

CUDA Source code Massive

Parallel Execution

対応ワークロード – Scan, Join, Aggregation

▌SELECT cat, AVG(x) FROM t0 NATURAL JOIN t1 [, ...] GROUP BY cat;

t0: 100M rows, t1~t10: 100K rows for each, all the data was preloaded.

▌測定環境:

PostgreSQL v9.5beta1 + PG-Strom (22-Oct), CUDA 7.0 + RHEL6.6 (x86_64)

CPU: Xeon E5-2670v3, RAM: 384GB, GPU: NVIDIA TESLA K20c (2496cores)

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 4

0

50

100

150

200

250

300

PgSQL Strom PgSQL Strom PgSQL Strom PgSQL Strom PgSQL Strom PgSQL Strom PgSQL Strom

2 3 4 5 6 7 8

Qu

ery

Res

po

nse

Tim

e [s

ec]

# of tables involved

Time consumption per component (PostgreSQL v9.5β vs PG-Strom)

Scan Join Aggregate Others

次のターゲットはI/O – TPC/DSワークロードの解析より

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 5

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

Time consumption per workloads (PostgreSQL v9.5beta+PG-Strom)

Scan Join Aggregate Others

では、どうやってGPUでI/Oを高速化しようというのか?

お断り。

今からご紹介する話は、

現在のところ実装アイデアです。

......これから頑張って作りますよ。

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 6

大雑把な x86 ハードウェアの構成

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 7

GPU SSD

CPU + RAM CPU + RAM

PCI-E

SAS

この辺で悩む事が多い

説明のため図を単純化します

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 8

GPU SSD

CPU + RAM

PCI-E

同じストレージという事で。

NVM EXPRESS SSD

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 9

PCI-Eダイレクト接続タイプのSSD – 低レイテンシと広帯域が特長

Samsung SSD 950 PRO

Intel SSD 750

HGST Ultrastar SN100

Intel SSD DC P3700

解析系クエリ実行時のデータフロー

① ストレージ CPU/RAMへデータをロード

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 10

GPU SSD

CPU + RAM

PCI-E

Table

解析系クエリ実行時のデータフロー

① ストレージ CPU/RAMへデータをロード

② 条件句で行をフィルタリング(Select)

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 11

GPU SSD

CPU + RAM

PCI-E

Table

解析系クエリ実行時のデータフロー

① ストレージ CPU/RAMへデータをロード

② 条件句で行をフィルタリング(Select)

③ 参照されない列を除去(Projection)

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 12

GPU SSD

CPU + RAM

PCI-E

Table

CPUの仕事

解析系クエリ実行時のデータフロー

① ストレージ CPU/RAMへデータをロード

② 条件句で行をフィルタリング(Select)

③ 参照されない列を除去(Projection)

④ 他のテーブルと結合(Join)

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 13

GPU SSD

CPU + RAM

PCI-E

Table

+

SSD-to-GPU Direct

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 14

CPU/RAMを介さずに SSDGPU間でデータ転送

同じ事が標準規格の NVMeでも可能!

解析系クエリ実行時のデータフロー (1/3) – 基本パターン

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 15

GPU SSD

CPU + RAM

PCI-E

Table

SSD-to-GPU Direct

解析系クエリ実行時のデータフロー (1/3) – 基本パターン

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 16

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

解析系クエリ実行時のデータフロー (1/3) – 基本パターン

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 17

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

検索条件にマッチ しない行を削除

解析系クエリ実行時のデータフロー (1/3) – 基本パターン

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 18

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

選択された行のみを CPU+RAMへ転送

検索条件にマッチ しない行を削除

解析系クエリ実行時のデータフロー (2/3) – アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 19

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

解析系クエリ実行時のデータフロー (2/3) – アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 20

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

検索条件にマッチ しない行を削除

解析系クエリ実行時のデータフロー (2/3) – アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 21

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

選択された行・列のみを CPU+RAMへ転送

検索条件にマッチ しない行を削除

検索条件にマッチ しない行を削除

さらに 参照されない列も削除

解析系クエリ実行時のデータフロー (3/3) – 鬼アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 22

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

JOIN対象のテーブル

解析系クエリ実行時のデータフロー (3/3) – 鬼アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 23

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

JOIN対象のテーブル

解析系クエリ実行時のデータフロー (3/3) – 鬼アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 24

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

JOIN対象のテーブル

解析系クエリ実行時のデータフロー (3/3) – 鬼アレンジ版

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 25

GPU SSD

CPU + RAM

PCI-E

Table

SQ

Lから自動生成した

G

PU命令セット

SSD-to-GPU Direct

ストレージからデータを 読み出した時点で 既にJoin済み

JOIN対象のテーブル

+

GPU側で Join結果を生成

必要な要素技術

▌NVMeドライバへの NVIDIA GPUDirect 機能の追加

Linux kernel driverとnvidia driverの間でやり取りが必要…。

▌shared_bufferの利用率統計情報採取

テーブルの大半が既にオンメモリなら意味はないので。

▌shared_bufferのアクセスモード追加

SSDGPU Direct転送が終わるまでは誰も書き込んじゃダメ。

PG-Stromプロジェクトへの参加者

熱烈歓迎大募集中

PostgreSQL Conference Japan - LT: SQL+GPU+SSD=∞ 26

乞うご期待。

Recommended