狠狠撸

狠狠撸Share a Scribd company logo
GPUがPostgreSQLを加速する
~PG-Strom 10年の歩みと、その次の未来へ~
HeteroDB,Inc
Chief Architect & CEO
KaiGai Kohei <kaigai@heterodb.com>
自己紹介/会社紹介
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
2
会社概要
? 商号 ヘテロDB株式会社
? 創業 2017年7月4日
? 拠点 品川区北品川5-5-15
大崎ブライトコア4F
? 事業内容 高速データ処理製品の開発?販売
GPU&DB領域の技術コンサルティング
ヘテロジニアスコンピューティング技術をデータベース領域に適用し、
誰もが使いやすく、シンプルで高速な大量データ分析基盤を提供する。
代表者プロフィール
? 海外 浩平(KaiGai Kohei)
? OSS開発者コミュニティにおいて、PostgreSQLやLinux kernelの
開発に15年以上従事。主にセキュリティ?FDW等の分野で
PostgreSQLのメインライン機能の強化に貢献。
? IPA未踏ソフト事業において“天才プログラマー”認定 (2006)
? GPU Technology Conference Japan 2017でInception Awardを受賞
20221116_DBTS_PGStrom_History
GPU-DBの10年を振り返る(1/2)
NVIDIA TESLA C2070 (2009)
CUDA Cores: 448 (Fermi)
DRAM: 6GB (GDDR5)
PCI-E 2.0 x16, FP32: 1.03TFlops
NVIDIA TESLA K20X (2012)
CUDA Cores: 2,688 (Kepler)
DRAM: 6GB (GDDR5)
PCI-E 3.0 x16, FP32: 3.95TFlops
NVIDIA TESLA P100 (2016)
CUDA Cores: 3,584 (Pascal)
DRAM: 16GB (HBM2)
PCI-E 3.0 x16, FP32: 9.56TFlops
NVIDIA TESLA V100 (2017)
CUDA Cores: 5,120 (Volta)
DRAM: 32GB (HBM2)
PCI-E 3.0 x16, FP32: 14.0TFlops
NVIDIA A100 (2020)
CUDA Cores: 6,912 (Ampare)
DRAM: 80GB (HBM2)
PCI-E 4.0 x16, FP32: 19.5TFlops
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
4
GPU-DBの10年を振り返る(2/2)
(2017~)
PG-Strom
(2012~)
(2014~)
(旧MAP-D; 2013~)
(2016~)
(2014~)
(2015~)
(2016~)
? 2010年頃 「ビッグデータ」が盛り上がる。Hadoopなど大人気。
? GPUの性能?信頼性が向上を続け、DBMSへの組み込みも現実味。
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
5
GPUの発展と共に、
PG-Stromの進化を振り返る
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
6
GPUとはどんなプロセッサか?(1/2)
多数のコアと広帯域メモリによる強力な並列演算性能を有する。
CPU
Cache
CUDA Core
CUDA Core
CUDA Core
CUDA Core
CUDA Core
CUDA Core
CUDA Core
CUDA Core
広帯域メモリ
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
7
Intel Xeon Platinum 8380
# of cores: 40
clock: 2.30GHz
3.40GHz (boost)
L1 cache: 64kB / core
L2 cache: 1MB / core
L3 cache: 60MB / proc
DRAM: DDR4-3200 x 8
(max 204.8GB/s)
NVIDIA A100 [80GB; PCI-E]
# of CUDA cores: 6,912 [32bit]
(108 SM)
clock: 1.065 GHz
1.410 GHz (boost)
L1 cache: 192kB / SM (*)
L2 cache: 40MB / proc
DRAM: HBM2e [80GB]
(max 1,935GB/s)
GPUとはどんなプロセッサか?(2/2)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
8
スレッド同士での同期やデータ交換を低コストで実行できる
●
item[0]
step.1 step.2 step.4
step.3
GPUを用いた
Σi=0...N-1item[i]
配列総和の計算
◆
●
▲ ■ ★
● ◆
●
● ◆ ▲
●
● ◆
●
● ◆ ▲ ■
●
● ◆
●
● ◆ ▲
●
● ◆
●
item[1]
item[2]
item[3]
item[4]
item[5]
item[6]
item[7]
item[8]
item[9]
item[10]
item[11]
item[12]
item[13]
item[14]
item[15]
log2N ステップで
items[]の総和を計算
HW支援によるコア間の同期機構
SELECT count(X),
sum(Y),
avg(Z)
FROM my_table;
集約関数の計算で用いる仕組み
PostgreSQLにGPUを試そうとしたきっかけ
▌PGconf 2011 (Ottawa) で聴講したあるセッション???
? Parallel Image Searching Using PostgreSQL and PgOpenCL
Running PostgreSQL Stored Procedures on a GPU
? https://www.pgcon.org/2011/schedule/events/352.en.html
? 画像処理用のストアドプロシジャを、GPU用のプログラミング環境
OpenCL で作成するための拡張モジュールについて。
A列 B列 C列 D列 E列
幅の小さいデータでも、
大量の行を並べれば
長大なBLOBと同じく
GPU並列処理が効くのでは?
May-2011
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
9
実際に作ってみた(1/2)
FDWを使用して、テーブル構造の裏側に
簡易的な列ストアを作成した。
※ 当時はFDWが唯一のエグゼキュータを
拡張するための方法。
CPUでテーブルをスキャンし、同時に、
並行してGPUで条件句を処理するという
構造を持っていた。
※ 当時は並列クエリ実行が無かった
Jan-2012
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
10
実際に作ってみた(2/2)
WHERE条件句から CUDA C のコードを
自動生成してJITコンパイルを行う。
※ EXPLAINすると CUDA C の生のソース
コードが表示される。かなりシュール。
Jan-2012
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
11
PostgreSQL v9.3における機能強化 Sep-2013
← Background worker process
通常のPostgreSQLテーブルを、裏で列ストアに変換し
ようと提案した機能。
↓ Writable foreign tables
元々はPG-Strom用のFDWテーブルにINSERTや
UPDATEを使ってデータをロードするため提案。
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
12
「お仕事」として PG-Strom の開発に取り組む Dec-2013
『社内新事業公募』における審査
(※ イメージ)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
13
2014年のGPUを振り返る
▌優先すべき課題
① クラッシュしない
② 正しい計算結果を返す
③ クラッシュしない
④ デバッグしやすい構造
⑤ クラッシュしない
⑥ 高いパフォーマンス
NVIDIA TESLA K20X
? 第3世代 Kepler アーキテクチャ
? 2,688個のCUDAコアと、6GiBのGDDR5 DRAMを搭載
? PCI-E 3.0 x16レーンでホストシステムと接続
? ECCメモリ搭載。エンタープライズ用途での利用も意識したモデル。
まずは DBMS 側の
品質を上げる!
2014
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
14
「趣味」から「実用」に向けたアーキテクチャの変更
? OpenCL ? CUDAへの移行
? マルチプラットフォーム(NVIDIA, AMD, Intel)? 再現できないトラブル報告が多数寄せられる(死
? CUDA 7.0以降はNVRTCが提供される ? CUDAでもランタイムコンパイルが可能に
? 各バックエンドプロセス内でGPUを制御する方式に移行
? CUDA Contextの生成に要する時間は許容可能なレベル(OpenCLの場合は数秒を要していた)
? エラーが発生したときのクラッシュダンプの採取しやすさ
新しいアーキテクチャ
(CUDAベース)
PostgreSQL
Backend
CUDA
Context
PG-Strom
host/GPU
code
PostgreSQL
Backend
CUDA
Context
PG-Strom
host/GPU
code
PostgreSQL
Backend
CUDA
Context
PG-Strom
host/GPU
code
Postmaster
Process
fork(2)
PostgreSQL
Backend
従来のアーキテクチャ
(OpenCLベース)
PG-Strom
host code
PostgreSQL
Backend
Background
Worker
PG-Strom
GPU
Service
Postmaster
Process
fork(2)
PG-Strom
host code
Local connection to
GPU Service
Device
Context
2014
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
15
PostgreSQL v9.5における機能強化 May-2015
Parser
Optimizer
Executor
execBegin
Exec
execEnd
CustomScan API
PostgreSQL本体へのパッチを必要せず、純粋に
拡張モジュールのみでGPU実行を実装できるように。
SQL
実行結果
パース木
実行計画
add_scan_path
add_join_path
BeginCustomScan
ExecCustomScan
EndCustomScan
拡張モジュールによる実装
CustomScan API
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
16
難儀な問題:GPUメモリの使用量予測
full
table
scan
GpuScan
GpuJoin
64MB
SCAN系処理なら、必ず「入力データ量 ≧ 出力データ量」
JOIN系処理なら「入力データ量<出力データ量」があり得る。
? バッファの必要量をDB統計情報から予測するなど
kernel source buffer
kernel source buffer
kernel result buffer
kernel result buffer
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
17
Pascal世代GPUの登場
NVIDIA TESLA P100
? 第5世代 Pascal アーキテクチャ
? 3,584個のCUDAコアと、16GiBのHBM2 DRAMを搭載
? PCI-E 3.0 x16レーンでホストシステムと接続
? FP64のアトミック演算に対応
? GPUでのデマンドページングとメモリオーバーコミットに対応
Apr-2016
どういうことか?
? GPUメモリの論理アドレス空間上で雑に malloc()
しておけば、実際に使った分だけGPUメモリを
割り当てる。
? GPUメモリが足りなければ、ホストメモリと
スワッピングを行う。
? 複雑&不正確な結果バッファのサイズ推定と
リトライから解放される事に。
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
18
Pascal世代GPUによるメモリ管理の簡略化
▌第4世代 Maxwell 以前
JOINやGroup Byなど『事前に行数の最大値を
予測する』ことが難しいワークロードに対しても、
過不足なくメモリを割り当てる事が必要。
? DBの統計情報を使ったりしていたが、
基本的に無理ゲーであった。
▌第5世代 Pascal 以降
ある程度ざっくりと大きなメモリを割り当てても、
実際に使用した分だけしか物理メモリを消費しな
いため、メモリ使用量の予測そのものが不要に。
? バグの原因となる複雑なロジックそのものの
解消と、品質の改善に大きく寄与。
せっかく割り当てたメモリを
全然使っていなかった。
? 同時に他のタスクを
動かせたはずなのに!
これだけあれば十分だと予測した
けれども、実際には不足。
? リトライでパフォーマンスが
低下してしまう…。
GPU物理メモリ
GPU論理アドレス空間
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
19
SSD-to-GPU Direct SQLの着想と開発(1/3) 冬-2015
GPUコア
GPU Device Memory
CPU Host Memory
ストレージ
(HDD/SSD)
CPU
720GB/s
16GB/s
0.5GB/s
60GB/s
NVME-SSD
一台あたり
3GB/s
(当時の)PG-Stromを含む、
GPU-DBはデータがオンメモリ前提
ストレージに落ちたら「負け」
一方この頃、NVME-SSD製品が登場
安価な高速SSDがブレイクの兆し。
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
20
SSD-to-GPU Direct SQLの着想と開発(2/3) 冬-2015
NVIDIA GPUDirect RDMA
nvme.ko
ドライバ
nvme_strom.ko
ドライバ
ホストメモリ デバイスメモリ
物理アドレス空間
NVME-READ
From: Block 1234
Qty: 32
Dest: 0x34567000
NVME-READ
From: Block 2345
Qty: 32
Dest: 0x45678000
NVME
コマンド
NVME
コマンド
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
21
SSD-to-GPU Direct SQLの着想と開発(3/3)
? GPU-Direct SQL(当時は SSD-to-GPU Direct SQL)により、メモリサイズを越えた
大量データ(数TB~)を処理する事が可能に。
? この特徴が、PG-Stromが他のGPU-DB製品とは異なった進化をするきっかけに。
? この頃は、猫も杓子も “Deep Learning!” “Deep Learning!”
Aug-2016
実験用に購入した
Intel SSD 750 (400GB) の
理論帯域まで出ている (!)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
22
GTC-2017にて May-2017
NVIDIA TESLA V100
? 第6世代 Volta アーキテクチャ
? 5,120個のCUDAコアと、最大32GiBのHBM2 DRAMを搭載
? PCI-E 3.0 x16レーンでホストシステムと接続
? Tensorコアを搭載した初めてのモデル
(深層学習用の専用計算回路)
? 各スレッドがProgram Counterを持つ事になり、分岐処理を持つ
ソフトウェアの実行がより高速に。
GPU Technology Conference 2017で発表した
SSD-to-GPU Direct SQLのポスターは、全138件の中から
Top-5 Finalistとして選出され、来場者投票で惜しくも次点に。
PCI-Eバスが更に高速化し、GPUの処理能力ですらも
飽和に近付くAmpare以降の世代で効いてくる特徴
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
23
HeteroDB社の設立
▌製品コンセプトを再定義する
? PostgreSQLを使い慣れた人はたくさんいる。
? GPU-DB「だけど」計算ワークロードよりも
I/O中心のバッチ系処理に強い。
? IoT/M2Mなど、日々積み重なるものの、
更新処理がほとんどないデータが増加
? ログデータの分析?検索用途に適した
「データ処理製品」として定義づけ。
Jul-2017
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
24
① Apache Arrowへの対応(1/3)
ETL
OLTP OLAP
伝統的なOLTP&OLAPシステム - データはDBシステムの内側で生成される
Data
Creation
IoT/M2M時代 - データはDBシステムの外側で生成される
Log
processing
BI Tools
BI Tools
Gateway Server
Data
Creation
Data
Creation
Many Devices
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
25
DBシステムへのデータのインポートが、集計処理以上に時間のかかる処理に!
Data
Import
Import!
2019
① Apache Arrowへの対応(2/3)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
26
▌Arrow形式の特徴
? 列指向で分析用途向けに設計されたデータ形式
? アプリケーションによらず、共通のデータ交換形式として利用可能
? 整数、実数、日付時刻、文字列など基本的なデータ型を定義
? 更新?削除は無理だが、追記に強い(? ログデータに向いた形式)
NVIDIA GPU
PostgreSQL / PG-Strom
2019
① Apache Arrowへの対応(3/3)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
27
▌なぜApache Arrow形式がログデータ処理に適しているのか?
? 被参照列のみ読み出すため、I/O量が少なくて済む
? GPUメモリバスの特性から、プロセッサ実行効率が高い
? Read-onlyデータなので、実行時のMVCC検査を行う必要がない
SSD-to-GPU Direct SQL機構を使って、被参照列だけを転送する。
PCIe Bus
NVMe SSD
GPU
SSD-to-GPU P2P DMA
WHERE-clause
JOIN
GROUP BY
クエリの被参照列のみ、
ダイレクトデータ転送
Apache Arrow形式を解釈し、
データを取り出せるよう
GPUコード側での対応。
小規模の処理結果だけを
PostgreSQLデータ形式で返す
Results
metadata
2019
② データ処理速度 10GB/s への挑戦(1/2)
複数SSD(md-raid0)への対応と、品質?安定性の改良
Supermicro 1019GP-TT
CPU: Xeon Gold 6126T (2.6GHz, 12C)
RAM: 192GB (32GB DDR4-2666 x6)
GPU: NVIDIA Tesla P40 (3840C, 24GB) x1
SSD: Intel SSD DC P4600 (2.0TB, HHHL) x3
HDD: 2.0TB (SATA, 72krpm) x6
N/W: 10Gb ethernet x2ports
2018
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
28
PostgreSQL
パーティション
② データ処理速度 10GB/s への挑戦(2/2)
オプティマイザで頑張り、SSD-GPUから漏出するデータを減らす
lineorder
lineorder_p0
lineorder_p1
lineorder_p2
customer date
supplier parts
Scan
Scan
Scan
Agg
実行結果
Scan
Join
Gather
レコード数が多いと
結合処理が大変
2018
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
29
PostgreSQL
パーティション
② データ処理速度 10GB/s への挑戦(2/2)
オプティマイザで頑張り、SSD-GPUから漏出するデータを減らす
lineorder
lineorder_p0
lineorder_p1
lineorder_p2
customer date
supplier parts
Scan
Scan
Scan
Gather
Agg
実行結果
Scan
Join
PreAgg
Join
PreAgg
Join
PreAgg
GROUP BYまでGPUで済ませると、
ほとんどのデータはホスト側に
戻ってこない。
2018
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
30
~100TB程度の
ログデータを
シングルノードで
処理可能に
4ユニットの並列動作で、
100~120GB/sの
実効データ処理能力
列データ構造により
ユニット毎25~30GB/sの
実効データ転送性能
秒速で10億レコードを処理する(1/2)
QPI
SSD-to-GPU Direct SQL、列志向ストア、PCIeバス最適化の全てを投入
CPU2
CPU1
RAM RAM
PCIe-SW PCIe-SW
NVME0
NVME1
NVME2
NVME3
NVME4
NVME5
NVME6
NVME7
NVME8
NVME9
NVME10
NVME11
NVME12
NVME13
NVME14
NVME15
GPU0 GPU1 GPU2 GPU3
HBA0 HBA1 HBA2 HBA3
GPU+4xSSDユニット
あたり8.0~10GB/sの
物理データ転送性能
31
PCIe-SW PCIe-SW
JBOF unit-0 JBOF unit-1
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
Oct-2019
秒速で10億レコードを処理する(2/2) Oct-2019
Supermicro 4029GP-TRT
CPU: Xeon Gold 6226 (2.7GHz, 12C) x2
RAM: 192GB (16GB DDR4-2666) x12
GPU: NVIDIA Tesla V100 (5120C, 16GB) x4
SSD: Intel SSD DC P4510 (1.0TB, U.2) x16
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
32
ユーザ様事例
▌背景
地方公共団体というユーザ様の性格上、
イントラネットで発生したセキュリティ事故
に関しては、Webやメール等のログを分析し、
その原因や影響範囲を特定して早期に報告を
行う必要があった。
▌従来の課題
従来は、PostgreSQLのクラスタにシステム
ログを分散して保存していた。
しかし、それでもTBを越えるログの検索に
40分以上を要する事が多々あり、事実上、
ログによる原因究明は機能せず。
▌PG-Stromの適用による解決
新システムでは、SSD-to-GPU Direct SQLと
BRINインデックスによる絞り込みを併用し、
平均して6GB/sのログ検索速度を実現。
検索クエリは30秒で応答を返すようになった。
この水準の性能を達成したことにより、
現場のエンジニアが使い慣れたPostgreSQLを
用いて、原因究明のためのトライ&エラーを
繰り返すことが可能となった。
Dec-2019
システム
ログ
従来システム:
PostgreSQLのクラスターで構成
システム
ログ
新システム:
GPUとNVME-SSDを搭載した
2Uサーバに、PG-Stromを
インストールして構成
某地方自治体様:ログ検索用システム
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
33
GTC-2020 (online) にて
GPU Technology Conference 2020 基調講演より
NVIDIA A100
? 第8世代 Ampere アーキテクチャ
? 6,912個のCUDAコアと、最大80GiBのHBM2 DRAMを搭載
? L2キャッシュサイズの拡大(V100の 6MB → 40MB)
? PCI-E 4.0 x16レーンでホストシステムと接続
長らく続いた PCI-E 3.0 世代からの切り替え。
GPU 1台あたり処理能力の目安は 20GB/s 強となり、
来たる PCI-E 5.0 世代では 40~50GB/s が見込まれる。
NVIDIA GPUDirect Storage
May-2020
従来の自社製ドライバ(nvme_strom.ko)とほぼ
同等機能を有するソフトウェアスタックが、
NVIDIAよりCUDA Toolkitの標準機能のひとつとして
公式にリリースされると発表。
? HeteroDB も事前評価に参加し、水面下で対応
作業を進めていた。
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
34
次世代のPG-Stromで取り組むべきテーマ
? PCI-E 4.0 / 5.0 の帯域幅に対応できる実装
? 同時接続数の増加に対応できるアーキテクチャ
? 省電力?低CO2排出(DPU対応)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
35
GPU利用効率の改善(1/2)
非対称な処理を挟むとGPUのパフォーマンスは大きく劣化する
● ● ● ● ● ● ● ● ● ●
LaneId: 0 1 2 3 4 27 28 29 30 31
Warp: unit of execution in GPU (32 simultaneous threads)
検索条件句の評価
F F F T F F F T F F
結果バッファの
スロットを確保
被参照列を読み出し、
結果バッファへ追記
htup = LoadTupleFromSource(base_index+LaneId);
rv = ExecEvalWhereClause(htup, whereClause);
mask = __ballot_sync(__activemask(), rv);
if (LaneId == 0) {
count = __popc(mask);
base = AllocateDestinationBuffer(count);
}
base = __shfl_sync(__activemask(), base, 0);
if (rv) {
mask &= ((1U << LaneId) - 1);
dst_index = base + __popc(mask);
ExecProjectionAndWriteBuffer(dst_index, htup,
ProjectionList);
}
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
36
2022
GPU利用効率の改善(2/2)
PCI-E 3.0時代(12GB/s)はGPUの処理能力に余裕があったが、
PCI-E 5.0(50GB/s)になるとGPU側にもかなりの最適化が必要
Shared Counter
32レコードを
同時に読み出し
WHERE条件句を
評価
ローカルバッファに
評価したレコードの
ポインタを記録
ローカルバッファ内の
レコード数 ≧ 32
F
T
ローカルバッファから
32レコードを
同時に読み出し
結果バッファに
32レコード分の
領域を確保
被参照列のみから成る
レコードを、結果
バッファに書き出す
比較的複雑な処理は、常に32スレッドを飽和させるように設計変更!
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
37
2022
PostgreSQL
Backend
リソース管理の改善
CUDA Contextの生成ごとに消費されるワーキングメモリの節約
従来のアーキテクチャ 新しいアーキテクチャ
GPU
PostgreSQL
Backend
CUDA
Context
PG-Strom
PostgreSQL
Backend
CUDA
Context
PG-Strom
PostgreSQL
Backend
CUDA
Context
PG-Strom
Postmaster
Process
working
memory
working
memory
working
memory
fork(2)
GPU
PG-Strom
PostgreSQL
Backend
Background
Worker
CUDA
Context
GPU
Service
(multi-
threads)
Postmaster
Process
working
memory
fork(2)
PG-Strom
Local connection to
GPU Service
? コード品質やでバック手法に対する知見が十分で
なかった時期、デバッグを容易にするメリット。
? メモリコピーのコストをやや過大に見積もり。
? CUDA Context初期化時間、およびワーキング
メモリ(数百MB~1GB)の節約。
? CUDA Contextスイッチの削減とGPU使用率改善
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
38
2022
DPUへの対応(1/2)
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
39
PCI-Eバス
SSD?GPU
データ転送量:大
データ転送量:小
GPU?CPU
SQLを
実行
Smart-SSD
データ転送量:小
Smart-SSD
?
CPU
PCI-Eバス
NAND Flash
(記憶素子)
DPU
GPU
データ転送量:大
NAND Flash ? DPU
NVME-SSD
Smart-SSDの内部
現行技術:GPU-Direct SQL
新技術:Smart-SSD / Smart-NIC 版 PG-Strom
Smart-NIC
Smart-NIC
?
CPU
DPU
高速N/Wポート
RDMA対応
100Gb/200Gb N/W
NVME/GPUの能力をフルに
引き出したとしても、ここ
がボトルネックになってし
まう。
2023
DPUへの対応(2/2)~ 直感的なアーキテクチャの理解
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
40
? 現在入手可能で最も強力なプロセッサで
ある GPU を使用し、全力でNVME-SSDから
データを流し込んで処理する方式。
? GPUの計算能力に利点はあるが、PCI-E 4.0
では20.0GB/s程度、PCI-E 5.0でも40.0GB/s
程度で律速してしまい、それ以上データ
を投入できなくなる。
(GPUが遊んでしまう問題)
? 今後、2023年以降に Smart-NIC/-SSD製品の
市場投入が本格的に進む。
? GPUやCPUのようにパワフルではないが、
DPUはデータに近いところでSQLワーク
ロードを処理できるため、転送すべき
データ量自体を減らす事ができる。
? 低消費電力で、サーバあたりの搭載数を
増やす事ができる。
GPU-Direct SQL
(動力集中方式)
Smart-SSD / Smart-NIC
(動力分散方式)
2023
PG-Strom 10年の歩みと、その次の未来を振り返る。
? はじまりは『あ、面白そう』から。
? 最適な設計は、その年代に利用可能なテクノロジに左右される。
? 2014年に『デバッグ難しい』と投げ出したアーキテクチャも、
2022年にはソフトウェアスタックが安定し、再びメリットが勝ることに。
? 2016年にPascal世代で memory overcommit が使えるようになった事で、
Maxwell以前に悩んでいたメモリ管理から解放される事となった。
? PG-Stromの方向性を決定づけた GPU-Direct SQL 機構
? GPU-DBとしては珍しい「I/Oワークロード」に注力するという方向性
? PCI-E 4.0世代で 20GB/s、PCI-E 5.0世代では 40GB/s のデータ処理能力を
? 2021年からはNVIDIAもGPUDirect Storageという形で公式サポート
? より“データに近い場所”を追求~Smart-NIC/-SSD対応
? GPUほど強力ではないが、省電力かつ搭載台数を増やしやすい
? 2023年以降、各社からリリースされる製品への対応を準備中。
GPUがPostgreSQLを加速する ~PG-Strom 10年の歩みと、その次の未来へ~
41
オモシロ技术を、カタチにする。

More Related Content

Similar to 20221116_DBTS_PGStrom_History (20)

PDF
20210511_PGStrom_GpuCache
Kohei KaiGai
?
PDF
Cld017 nh シリーズリリース
Tech Summit 2016
?
PPTX
Cld017 nh シリーズリリース
Tech Summit 2016
?
PDF
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
?
PDF
45分で理解する 最近のスパコン事情 斉藤之雄
Yukio Saito
?
PDF
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
?
PDF
20190516_DLC10_PGStrom
Kohei KaiGai
?
PDF
厂厂顿と骋笔鲍が笔辞蝉迟驳谤别厂蚕尝を加速する【翱厂颁.贰苍迟别谤辫谤颈蝉别】
Kohei KaiGai
?
PPTX
なにわ罢别肠丑20161215
Natsutani Minoru
?
PDF
20190925_DBTS_PGStrom
Kohei KaiGai
?
PDF
20171220_hbstudy80_pgstrom
Kohei KaiGai
?
PDF
俺的 Ignite update 萌えポイント portal&arm, compute, network -
Yui Ashikaga
?
PPTX
2016 06-30-deep-learning-archi
Daisuke Nagao
?
PDF
20171212_GTCJapan_InceptionSummt_HeteroDB
Kohei KaiGai
?
PDF
20170421 tensor flowusergroup
ManaMurakami1
?
PDF
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
Google Cloud Platform - Japan
?
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
?
PDF
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
Amazon Web Services Japan
?
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
?
PDF
私たちが骋颁笔を使い始めた本当の理由
gree_tech
?
20210511_PGStrom_GpuCache
Kohei KaiGai
?
Cld017 nh シリーズリリース
Tech Summit 2016
?
Cld017 nh シリーズリリース
Tech Summit 2016
?
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
?
45分で理解する 最近のスパコン事情 斉藤之雄
Yukio Saito
?
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
?
20190516_DLC10_PGStrom
Kohei KaiGai
?
厂厂顿と骋笔鲍が笔辞蝉迟驳谤别厂蚕尝を加速する【翱厂颁.贰苍迟别谤辫谤颈蝉别】
Kohei KaiGai
?
なにわ罢别肠丑20161215
Natsutani Minoru
?
20190925_DBTS_PGStrom
Kohei KaiGai
?
20171220_hbstudy80_pgstrom
Kohei KaiGai
?
俺的 Ignite update 萌えポイント portal&arm, compute, network -
Yui Ashikaga
?
2016 06-30-deep-learning-archi
Daisuke Nagao
?
20171212_GTCJapan_InceptionSummt_HeteroDB
Kohei KaiGai
?
20170421 tensor flowusergroup
ManaMurakami1
?
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
Google Cloud Platform - Japan
?
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
?
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
Amazon Web Services Japan
?
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
?
私たちが骋颁笔を使い始めた本当の理由
gree_tech
?

More from Kohei KaiGai (20)

PDF
20221111_JPUG_CustomScan_API
Kohei KaiGai
?
PDF
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
?
PDF
20210928_pgunconf_hll_count
Kohei KaiGai
?
PDF
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
Kohei KaiGai
?
PDF
20201128_OSC_Fukuoka_Online_GPUPostGIS
Kohei KaiGai
?
PDF
20201006_PGconf_Online_Large_Data_Processing
Kohei KaiGai
?
PDF
20200828_OSCKyoto_Online
Kohei KaiGai
?
PDF
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
?
PDF
20200424_Writable_Arrow_Fdw
Kohei KaiGai
?
PDF
20190926_Try_RHEL8_NVMEoF_Beta
Kohei KaiGai
?
PDF
20190909_PGconf.ASIA_KaiGai
Kohei KaiGai
?
PDF
20190418_PGStrom_on_ArrowFdw
Kohei KaiGai
?
PDF
20190314 PGStrom Arrow_Fdw
Kohei KaiGai
?
PDF
20181212 - PGconfASIA - LT - English
Kohei KaiGai
?
PDF
20181212 - PGconf.ASIA - LT
Kohei KaiGai
?
PDF
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
Kohei KaiGai
?
PDF
20181210 - PGconf.ASIA Unconference
Kohei KaiGai
?
PDF
20181116 Massive Log Processing using I/O optimized PostgreSQL
Kohei KaiGai
?
PDF
20181016_pgconfeu_ssd2gpu_multi
Kohei KaiGai
?
PDF
20181025_pgconfeu_lt_gstorefdw
Kohei KaiGai
?
20221111_JPUG_CustomScan_API
Kohei KaiGai
?
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
?
20210928_pgunconf_hll_count
Kohei KaiGai
?
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
Kohei KaiGai
?
20201128_OSC_Fukuoka_Online_GPUPostGIS
Kohei KaiGai
?
20201006_PGconf_Online_Large_Data_Processing
Kohei KaiGai
?
20200828_OSCKyoto_Online
Kohei KaiGai
?
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
?
20200424_Writable_Arrow_Fdw
Kohei KaiGai
?
20190926_Try_RHEL8_NVMEoF_Beta
Kohei KaiGai
?
20190909_PGconf.ASIA_KaiGai
Kohei KaiGai
?
20190418_PGStrom_on_ArrowFdw
Kohei KaiGai
?
20190314 PGStrom Arrow_Fdw
Kohei KaiGai
?
20181212 - PGconfASIA - LT - English
Kohei KaiGai
?
20181212 - PGconf.ASIA - LT
Kohei KaiGai
?
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
Kohei KaiGai
?
20181210 - PGconf.ASIA Unconference
Kohei KaiGai
?
20181116 Massive Log Processing using I/O optimized PostgreSQL
Kohei KaiGai
?
20181016_pgconfeu_ssd2gpu_multi
Kohei KaiGai
?
20181025_pgconfeu_lt_gstorefdw
Kohei KaiGai
?
Ad

Recently uploaded (13)

PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PDF
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
Ad

20221116_DBTS_PGStrom_History