SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
“爆速!”を実現する
PG-Strom v3.0の新機能
HeteroDB,Inc
Chief Architect & CEO
海外 浩平 <kaigai@heterodb.com>
自己紹介/HeteroDB社について
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
2
会社概要
 商号 ヘテロDB株式会社
 創業 2017年7月4日
 拠点 品川区北品川5-5-15
大崎ブライトコア4F
 事業内容 高速データベース製品の販売
GPU&DB領域の技術コンサルティング
ヘテロジニアスコンピューティング技術を
データベース領域に適用し、
誰もが使いやすく、安価で高速なデータ解析基盤を提供する。
代表者プロフィール
 海外 浩平(KaiGai Kohei)
 OSS開発者コミュニティにおいて、PostgreSQLやLinux kernelの
開発に10年以上従事。主にセキュリティ・FDW等の分野でアッ
プストリームへの貢献。
 IPA未踏ソフト事業において“天才プログラマー”認定 (2006)
 GPU Technology Conference Japan 2017でInception Awardを受賞
PG-Stromとは?
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
3
【機能】
 集計/検索ワークロードの透過的なGPU高速化
 GPU-Direct SQLによるI/Oの高速化。ほぼH/W理論値でデータを読み出し。
 Apache Arrow対応によるデータ交換、インポート時間をほぼゼロに。
 PostGIS関数のサポート(一部)。位置情報分析を高速化。
 GPUメモリにデータを常駐。OLTPワークロードとの共存。
PG-Strom: GPUとNVMEの能力を最大限に引き出し、
TB級のデータを高速処理するPostgreSQL向け拡張モジュール
App
GPU
off-loading
➢ GPU-code generator on the fly
➢ GPU-Direct SQL
➢ NVME-oF/NFSoRDMA support
➢ Columnar Store (Arrow_Fdw)
➢ Arrow min/max statistics
➢ GPU Memory Cache
➢ Asymmetric Partition-wise
JOIN/GROUP BY
➢ BRIN-Index Support
➢ PostGIS Support
➢ Pg2Arrow / MySQL2Arrow
NEW
NEW
UPDATE
UPDATE
時系列データ
リアルタイムデータ
GPUDirect
Storage
GPUとはどんなプロセッサなのか?
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
4
主にHPC分野で実績があり、機械学習用途で爆発的に普及
NVIDIA A100
スーパーコンピュータ
(東京工業大学 TSUBAME3.0) CG(Computer Graphics) 機械学習
数千コアの並列処理ユニット、TB/sに達する広帯域メモリを
ワンチップに実装した半導体デバイス
➔ “同じ計算を大量のデータに並列実行” を最も得意とする
シミュレーション
PG-Stromのターゲット: IoT/M2Mログデータ処理
Manufacturing Home electronics Logistics Mobile
DB Admin
BI Tools
(Visualization)
GPU-Direct SQL
PG-Strom v3.0
AI/ML Applications
(Anomaly detections, ...)
時系列の大量ログデータ
WHERE
JOIN
GROUP BY
PostGIS
JSONB
GPU
Cache
位置情報を含む
リアルタイムデータ
✓ GPUによる数千並列でのSQL実行
✓ GPU-Direct SQLで、NVMEデバイスの
理論限界速度で処理を実行
✓ GPU版PostGISによる
地理情報分析のサポート
✓ Apache Arrow形式を介した、
インポートなしでのデータ交換
✓ 使い慣れた PostgreSQL で
GPUを意識することなく
透過的にSQLを高速化
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
5
PG-Strom v3.0をリリースしました
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
6
本日のトピック
1. NVIDIA GPUDirect Storageへの対応
2. GPU-Direct SQLとNFS-over-RDMAの併用
3. Apache Arrow版BRIN-Index対応
PG-Strom v3.0新機能が、どう大量ログデータ処理を”爆速化”するか
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
7
① NVIDIA GPUDirect Storageへの対応
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
8
背景:SSD-to-GPUダイレクトSQL(1/2)
CPU RAM
SSD GPU
PCIe
PostgreSQL
データブロック
NVME-Strom
CPU/RAMを介することなく、
Peer-to-PeerのDMAを用いて
SSD上のデータブロックを直接
GPUに転送するLinux kernel module
WHERE句
JOIN
GROUP BY
GPUでSQLを処理し、
データ量を削減する
データ量:小
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
9
背景:SSD-to-GPUダイレクトSQL(2/2)
 クエリ実行スループット = (879GB DB-size) / (クエリ応答時間 [sec])
 SSD-to-GPU Direct SQLの場合、ハードウェア限界(8.5GB/s)に近い性能を記録
 CPU+Filesystemベースの構成と比べて約3倍強の高速化
➔ 従来のDWH専用機並みの性能を、1Uサーバ上のPostgreSQLで実現
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
10
2,443 2,406 2,400 2,348 2,325 2,337 2,346 2,383 2,355 2,356 2,327 2,333 2,313
8,252 8,266 8,266 8,154 8,158 8,186
7,933
8,094
8,240 8,225
7,975 7,969 8,107
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
8,000
9,000
Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3
Query
Execution
Throughput
[MB/s]
Star Schema Benchmark (s=1000, DBsize: 879GB) on Tesla V100 x1 + DC P4600 x3
PostgreSQL 11.5 PG-Strom 2.2 (Row data)
NVIDIA GPUDirect Storageとは?
 6/29にリリースされた CUDA Toolkit 11.4 の新機能
 NVMEデバイスから、GPUへの直接のデータ転送が可能
 データ転送のパフォーマンスは、ほぼほぼ NVME-Strom と同等
 NVME-oFデバイスや、NFS-over-RDMAにも対応
 OSの対応は、RHEL8.3~、Ubuntu 18.04/20.04
出典)https://developer.nvidia.com/gpudirect-storage
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
11
NVME-Strom と NVIDIA GPUDirect Storage を比較
NVME-Strom GPUDirect Storage
提供元 HeteroDB NVIDIA
公開日 5th-Sep-2016 29th-Jun-2021
対応OS RHEL7.x, RHEL8.x RHEL8.3~、Ubuntu 18.04/20.04
対応FS Ext4 Ext4, NFS, 商用の分散FS
PCI-E NVME-SSD 〇 (INBOX + Patch) 〇 (MOFED + Patch)
NVME-over-Fabric 実験的対応 〇 (MOFED + Patch)
RAID Support md-raid (RAID0) md-raid (RAID0)
その他デバイス - SDS(Software Defined Storage)、
ロジック搭載SSDなど
その他制約 I/Oサイズは PAGE_SIZE の倍数のみ O_DIRECT必須
PG-Stromでの対応 v2.0~ v3.0~
パフォーマンス ほぼ同じ(デバイスの SeqRead 性能による)
RHEL7.x以外では NVIDIA GPUDirect Storage を推奨
※ MOFED = Mellanox Open Fabric Enterprise Driver
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
12
GPU-Direct SQLの性能測定
クエリ実行中の読み出し速度は、理論値に近い10.0GB/s
0
2,000
4,000
6,000
8,000
10,000
0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380
Total
Storage
Read
Throughput
[MB/sec]
Elapsed Time [sec]
Total Storage Read Throughput
during Query Execution [Q1_1]
Query Execution
with GPUDirect Storage
Query Execution with PostgreSQL Heap Storage
nvme1
nvme2
nvme3
nvme4
nvme1
nvme2
nvme3
nvme4
 測定に用いたIntel DC P4510のカタログスペックは SeqRead: 2750MB/s
➔ 4本で理論速度 11.0GB/s に対し、クエリ実行中の読み出し速度 10.0GB/s を達成。
(ファイルシステムだと高々3.8GB/s程度)
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
13
GPUDirect Storage対応とシステム構成
3rd-Party
Solutions
Local NVME-SSD
NVME-over-Fabric
(NVME-oF)
Software Defined
Storages (SDS)
HeteroDB
NVME-
Strom
PostgreSQL
heap
Apache
Arrow
WHERE-clause
GPU-Join
GPU Group-By
NFS-over-RDMA
従来は、GPUとNVME-SSDを
同一筐体に収めるのが、
H/W選定上の大きな制約
NVIDIA
GPUDirect Storage
高速ネットワーク (100Gb) 経由の
分散ストレージにも対応する
↓
H/W選定の自由と、
拡張性を両立できる。
価格的には少し…。
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
14
② GPU-Direct SQLとNFS-over-RDMAの併用
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
15
NFS-over-RDMAを試す(1/5)
RAM
NFSサーバ
DBサーバ(NFSクライアント)
RDMA対応NIC※
※ Mellanox社製 Connect X5シリーズなど
RDMA対応NIC※
RoCE (RDMA-over-Converged Ethernet)
NFSサーバ
DB/GPUサーバ
(NFSクライアント)
RDMA対応NIC※ RDMA対応NIC※
RoCE (RDMA-over-Converged Ethernet)
GPU上のデバイスメモリに、
NICを介してリモートから
直接のデータ転送
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
16
NFS-over-RDMAを試す(2/5)
SYS-4029GP-TRT
SYS-1019GP-TT
100G-NIC
100G-NIC
GPU1
(A100)
CPU0
GPU0
(A100)
NVME
HCA
CPU0
PCIE-SW PCIE-SW
CPU1
開発用PC端末
192.168.80.106/24
192.168.80.108/24
オフィスLAN)
192.168.77.0/24
PCI-ENC8G-08A
(U.2 NVME-SSD x8)
Mellanox
connect-X5
Mellanox
connect-X5
NVME
HCA
NFSサーバ
DB/GPUサーバ
(NFSクライアント)
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
17
NFS-over-RDMAを試す(3/5)
NFSサーバ側の設定
# modprobe svcrdma
# modinfo svcrdma
filename: /lib/modules/4.18.0-240.22.1.el8_3.x86_64/extra/mlnx-nfsrdma/svcrdma.ko
:
# echo rdma 20049 > /proc/fs/nfsd/portlist
# cat /proc/fs/nfsd/portlist
rdma 20049
rdma 20049
tcp 2049
tcp 2049
NFSクライアント側の設定
# modprobe rpcrdma
# modinfo rpcrdma
filename: /lib/modules/4.18.0-240.22.1.el8_3.x86_64/extra/mlnx-nfsrdma/rpcrdma.ko
:
# grep nvfs_ops /proc/kallsyms
ffffffffc319ddc8 b nvfs_ops [rpcrdma]
ffffffffc0c256c0 b nvfs_ops [nvme_rdma]
ffffffffc00dc718 b nvfs_ops [nvme]
# mount -o rdma,port=20049 192.168.80.106:/mnt/nfsroot /opt/nvme1
# dd if=/opt/nvme1/100GB of=/dev/null iflag=direct bs=32M
3106+1 records in
3106+1 records out
104230305696 bytes (104 GB, 97 GiB) copied, 11.8926 s, 8.8 GB/s
MOFEDドライバ版を使用
MOFEDドライバ版を使用
※但し、自分で再ビルドしないと
GPUDirect Storage対応機能が有効になっていない
nvidia-fsモジュールとの連携が有効になっている。
rdmaオプションをつけてNFSマウント
NFS-over-RDMAあり: 8.8GB/s
NFS-over-RDMAなし: 3.2GB/s
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
18
NFS-over-RDMAを試す(4/5)
 SF=500 (DB: 453GB) の Star Schema Benchmark データに対してクエリを実行
 スループット = 453.6GB / (クエリ応答時間)
➔ ローカルのNVME-SSDには劣るものの、最大で 8.2GB/s 程度の処理レートを達成
(ただし、NFSサーバ側のH/Wが原因で律速している可能性はある。
Skylake-SPの場合、P2P-DMAが8.5GB/s程度で頭打ちになっていた。)
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3
Query
Execution
Throughput
[MB/s]
SSBM Query Execution Throughput with GPUDirect SQL
(Local NVME vs NFS over RDMA)
PG-Strom v3.0 [PCI-E NVME] PG-Strom v3.0 [NFSoRDMA]
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
19
NFS-over-RDMAを試す(5/5)
 Star Schema Benchmark実行中のI/O帯域を計測(iostat, nfsstat使用)
 Local NVME-SSD実行時に謎の速度変化があるが、概ねクエリの
実行スループットと同等のデータ読み出し速度
➔ 性能10%ダウン程度で、共有ファイルシステムが使えるなら十分アリでは?
0
2000
4000
6000
8000
10000
0 20 40 60 80 100
Storage
Read
Throughput
[MB/s]
Elapsed Time [sec]
Storage Read throughput under GPUDirect SQL
(Local NVME vs NFS-over-RDMA)
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
20
GPU-Direct SQL と NFS-over-RDMAで何が嬉しくなるか?
Manufacturing Home electronics Mobile & Vehicles
DB Admin
BI Tools
(Visualization)
GPU-Direct SQL
PG-Strom v3.0
AI/ML Applications
(Anomaly detections, ...)
時系列の大量ログデータ
WHERE
JOIN
GROUP BY
PostGIS
JSONB
超高速ストレージ読み出し
GPU-Direct SQL + NFS-over-RDMA
ログの収集
NFS共有フォルダに Arrow ファイルを
放り込めば、即、分析に回せる
GPUによる検索/集計処理
WHERE句、JOIN、GROUP BYを
数千コアの並列実行で処理
プレゼンテーション層
リアルタイムデータに対する
処理結果をビジュアライズ
わざわざDBにインポート
したり、クラウドに
アップロードの必要がない。
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
21
③ Apache Arrow版 BRIN-Index対応
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
22
Apache Arrowとは
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
23
▌特徴
 列指向で分析用途向けに設計されたデータ形式
 アプリケーションによらず、共通のデータ交換形式として利用可能
 整数、実数、日付時刻、文字列など基本的なデータ型を定義
NVIDIA GPU
PostgreSQL / PG-Strom
ログデータ処理に Apache Arrow を使うメリット
① 列データなので、クエリで参照された列だけをロードすればよい
➔ I/Oの量が減り、それに伴いクエリ応答時間が短くなる。
② DBへデータをインポートする必要がない
➔ OS上でファイルコピーすれば、それで準備完了。
21.13 20.54 20.43 18.88 18.65 18.30 16.08 20.70 19.36 20.00 19.05 19.73 19.35
64.98 64.88 65.39 63.48 58.08 64.28 58.16 60.27 58.32 62.36 58.30 58.86 58.24
587.16
463.37 467.69
324.90
198.93
328.96
192.64
245.48 247.13
228.83
164.63 173.41 163.08
0.0
100.0
200.0
300.0
400.0
500.0
600.0
Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3
Number
of
rows
processed
per
second
[million
rows/sec]
Star Schema Benchmark
(SF=999 [875GB], 1xTesla A100 (PCI-E; 40GB), 4xDC P4510(1.0TB; U.2)
PostgreSQL v13.3 [Heap; row-data] PG-Strom v3.0 [Heap; row-data] PG-Strom v3.0 [Apache Arrow; column-data]
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
24
Apache Arrowが不得意なワークロード
Footer
Apache Arrow File
RecordBatch-2
RecordBatch-N
RecordBatch-1
Schema column-1 null-bitmap
column-1 values-array
column-2 values-array
column-3 null-bitmap
column-3 offset-array
column-3 extra buffer
column-4 values-array
固定長データ列(NULL可)
非NULL・固定長データ列
可変長データ列
非NULL・固定長データ列
① 更新・削除を伴うデータには向かない
② 特定の1行を抽出する事には不向き
➔ 基本、全件スキャンになるのだが、、、実は…。
RecordBatch-2が50万行とすると、
50万個の固定長データの配列と、
同じ長さのNULL-bitmap
INSERT-Onlyのデータを
バルクで書き込み続けるタイプの
ワークロードに向いたデータ構造
(IoT/M2Mログデータが典型)
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
25
関連機能:PostgreSQL BRINインデックス
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
26
▌BRIN ... Block Range Index
 一定範囲のブロック(8KB x 128個)で、対象列の最大値/最小値を記録するインデックス
 検索条件にマッチしない事が明らかなブロックを読み飛ばす事ができる。
➔ RAM/SSD~GPU間のデータ転送量/処理すべきレコード数を削減する事ができる。
時系列データ
データの発生した時刻順にレコードがINSERTされるため、
タイムスタンプが近いレコードは、物理的に近しい位置に
格納されるという特徴を持つ。
BRIN インデックス
条件句:
WHERE ymd BETWEEN ‘2016-01-01’
AND ‘2016-12-31’
False
True
True
True
False
min: ‘2015-01-01’
max: ‘2015-09-30’
min: ‘2015-10-01’
max: ‘2016-03-15’
min: ‘2016-03-15’
max: ‘2016-07-31’
min: ‘2016-08-01’
max: ‘2017-02-01’
min: ‘2017-02-01’
max: ‘2017-05-15’
必要最小限のデータだけをGPUに転送
タイムスタンプ
+αの条件句を並列に評価する。
Apache Arrowファイルに統計情報を埋め込む(1/2)
Apache Arrow File
Header “ARROW1¥0¥0”
Schema Definition
RecordBatch-1
RecordBatch-k
Footer
• Schema Definition (copy)
• RecordBatch[0] (offset, size)
:
• RecordBatch[k] (offset, size)
• Terminator “ARROW1”
RecordBatch-0
ArrowSchema
_num_fields = 3
ArrowField
name = “device_id”
type=Uint32
ArrowField
name = “attribute”
type=Float64
ArrowField
name = “ts”
type=TimeStamp
custom_metadata[]
ArrowKeyValue
key = “min_values”
value=“…”
ArrowKeyValue
key = “max_values”
value=“…”
 Apache Arrowデータ形式は、
Schema(表に相当)とField(列に相当)に
カスタムの Key-Value 値を埋め込む事を許容する。
➔ 標準のデータ形式に一切手を加えることなく、
Record-Batch毎の最小値/最大値を記録する事ができる。
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
27
Apache Arrowファイルに統計情報を埋め込む(2/2)
統計情報付き Apache Arrow ファイルの生成
$ pg2arrow -d postgres -o /dev/shm/flineorder_sort.arrow ¥
-t lineorder_sort --stat=lo_orderdate --progress
RecordBatch[0]: offset=1640 length=268437080 (meta=920, body=268436160) nitems=1303085
:
RecordBatch[9]: offset=2415935360 length=55668888 (meta=920, body=55667968) nitems=270231
$ ls -lh /dev/shm/flineorder_sort.arrow
-rw-r--r--. 1 kaigai users 2.4G 7月 19 10:45 /dev/shm/flineorder_sort.arrow
生成された統計情報の確認
$ python3
>>> import pyarrow as pa
>>> X = pa.RecordBatchFileReader('/dev/shm/flineorder_sort.arrow')
>>> X.schema
lo_orderkey: decimal(30, 8)
:
lo_suppkey: decimal(30, 8)
lo_orderdate: int32
-- field metadata --
min_values: '19920101,19920919,19930608,19940223,19941111,19950730,1996' + 31
max_values: '19920919,19930608,19940223,19941111,19950730,19960417,1997' + 31
lo_orderpriority: fixed_size_binary[15]
:
lo_shipmode: fixed_size_binary[10]
-- schema metadata --
sql_command: 'SELECT * FROM lineorder_sort'
RecordBatch ごと、最小値/最大値を埋め込み
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
28
統計情報を利用したクエリの最適化(1/3)
Arrowのスキーマ定義を利用したArrow_Fdw外部テーブルの定義
postgres=# IMPORT FOREIGN SCHEMA flineorder_sort
FROM SERVER arrow_fdw INTO public
OPTIONS (file '/dev/shm/flineorder_sort.arrow');
IMPORT FOREIGN SCHEMA
Arrowのmin/max statisticsを利用した問合せ例
postgres=# EXPLAIN ANALYZE
SELECT count(*) FROM flineorder_sort
WHERE lo_orderpriority = '2-HIGH'
AND lo_orderdate BETWEEN 19940101 AND 19940630;
QUERY PLAN
------------------------------------------------------------------------------------------
Aggregate (cost=33143.09..33143.10 rows=1 width=8) (actual time=115.591..115.593 rows=1loops=1)
-> Custom Scan (GpuPreAgg) on flineorder_sort (cost=33139.52..33142.07 rows=204 width=8)
(actual time=115.580..115.585 rows=1 loops=1)
Reduction: NoGroup
Outer Scan: flineorder_sort (cost=4000.00..33139.42 rows=300 width=0)
(actual time=10.682..21.555 rows=2606170 loops=1)
Outer Scan Filter: ((lo_orderdate >= 19940101) AND
(lo_orderdate <= 19940630) AND (lo_orderpriority = '2-HIGH'::bpchar))
Rows Removed by Outer Scan Filter: 2425885
referenced: lo_orderdate, lo_orderpriority
Stats-Hint: (lo_orderdate >= 19940101), (lo_orderdate <= 19940630) [loaded: 2, skipped: 8]
files0: /dev/shm/flineorder_sort.arrow (read: 217.52MB, size: 2357.11MB)
Planning Time: 0.210 ms
Execution Time: 153.508 ms
(11 rows)
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
29
統計情報を利用したクエリの最適化(2/3)
列方向だけでなく、行方向での絞り込みと同義
Full Table Scan of Row-Data
(PostgreSQL Heap)
Full Table Scan of Column-Data
(Arrow_Fdw; no Stats-Hint)
Full Table Scan of Column-Data
with Min/Max Stats Hint
Only referenced
columns
ts BETWEEN ‘2021-04-01’
AND ‘2021-06-30’
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
30
統計情報を利用したクエリの最適化(3/3)
 ログデータの“タイムスタンプ“に統計情報を付加するのがお勧め。
 Pg2Arrowだけでなく、他のツールが生成した Arrow ファイルに、
後付けで統計情報を埋め込むためのツールを準備中。
列/行双方の絞り込みで、上手くハマれば強烈に速くなる
254.905
99.587
10.052
1.191
0
50
100
150
200
250
300
Query
Response
Time
[sec]
(shorter
is
better)
Query response time of SSBM Q1_2 [mod]
PostgreSQL v13.3 PG-Strom v3.1dev [Row-Data]
PG-Strom v3.1dev [Apache Arrow; No Stats Hint] PG-Strom v3.1dev [Apache Arrow; with Stats Hint]
select sum(lo_extendedprice*lo_discount) as revenue
from flineorder_sort, date1
where lo_orderdate = d_datekey
and d_yearmonthnum = 199401
and lo_discount between 4 and 6
and lo_quantity between 26 and 35;
select sum(lo_extendedprice*lo_discount) as revenue
from flineorder_sort, date1
where lo_orderdate = d_datekey
and d_yearmonthnum = 199401
and lo_discount between 4 and 6
and lo_quantity between 26 and 35;
and lo_orderdate between 19940101 and 19940131;
GPU-Direct SQLの効果
Apache Arrowの効果
min/max statisticsの効果
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
31
まとめ
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
32
PG-Stromのターゲット: IoT/M2Mログデータ処理
Manufacturing Home electronics Logistics Mobile
DB Admin
BI Tools
(Visualization)
GPU-Direct SQL
PG-Strom v3.0
AI/ML Applications
(Anomaly detections, ...)
時系列の大量ログデータ
WHERE
JOIN
GROUP BY
PostGIS
JSONB
GPU
Cache
位置情報を含む
リアルタイムデータ
 GPU-Direct SQL
ストレージの性能を最大限に引き出し、
さらに、NVME-oFやNFS-over-RDMAなど、
GPUとストレージを分離する事で更に
使いやすく。
 NFS-over-RDMAサポート
NVIDIA GPUDirect Storageの対応により、
多様なストレージデバイスを、
ログデータ分析のソースとして利用
できるように。
 Arrowの統計情報サポート
「タイムスタンプ」という
ログデータの特性を活かした
検索範囲の絞り込み。
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
33
おまけ
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
34
各種リソース
▌ソフトウェア
 GitHub: https://github.com/heterodb/pg-strom
 Document: http://heterodb.github.io/pg-strom/ja/
 Packages: https://github.com/heterodb/swdc
▌問合せ先
 e-mail: contact@heterodb.com (お仕事の相談など)
 twitter: @kkaigai (気軽な質問など)
OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能
35
オモシロ技術を、カタチにする。

Contenu connexe

Tendances

20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstromKohei KaiGai
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpuKohei KaiGai
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10Kohei KaiGai
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdwKohei KaiGai
 
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】Kohei KaiGai
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望Kohei KaiGai
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1Kohei KaiGai
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdwKohei KaiGai
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGISKohei KaiGai
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?Kohei KaiGai
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...Insight Technology, Inc.
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]Kohei KaiGai
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャKohei KaiGai
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)NTT DATA Technology & Innovation
 
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編Takekazu Omi
 

Tendances (20)

20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpu
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
 
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
[20170922 Sapporo Tech Bar] 地図用データを高速処理!オープンソースGPUデータベースMapDってどんなもの?? by 株式会社...
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
Cuda
CudaCuda
Cuda
 
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
 

Similaire à 20210731_OSC_Kyoto_PGStrom3.0

20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStromKohei KaiGai
 
20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_HistoryKohei KaiGai
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDBKohei KaiGai
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
俺的 Ignite update 萌えポイント portal&arm, compute, network -
俺的 Ignite update 萌えポイント   portal&arm, compute, network -俺的 Ignite update 萌えポイント   portal&arm, compute, network -
俺的 Ignite update 萌えポイント portal&arm, compute, network -Yui Ashikaga
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_FdwKohei KaiGai
 
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...Insight Technology, Inc.
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!Minoru Naito
 
Snr005 レノボだから実現
Snr005 レノボだから実現Snr005 レノボだから実現
Snr005 レノボだから実現Tech Summit 2016
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProXToru Makabe
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)NTT DATA Technology & Innovation
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリースTech Summit 2016
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリースTech Summit 2016
 
Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報NVIDIA Japan
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure最新技術アップデート編 - 20150123もっとわかる Microsoft Azure最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123Kuninobu SaSaki
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプTech Summit 2016
 
DRBD 8.3の開発終了に伴う今後の対応について
DRBD 8.3の開発終了に伴う今後の対応についてDRBD 8.3の開発終了に伴う今後の対応について
DRBD 8.3の開発終了に伴う今後の対応について株式会社サードウェア
 
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Masahiro Tsuji
 

Similaire à 20210731_OSC_Kyoto_PGStrom3.0 (20)

20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
俺的 Ignite update 萌えポイント portal&arm, compute, network -
俺的 Ignite update 萌えポイント   portal&arm, compute, network -俺的 Ignite update 萌えポイント   portal&arm, compute, network -
俺的 Ignite update 萌えポイント portal&arm, compute, network -
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
Snr005 レノボだから実現
Snr005 レノボだから実現Snr005 レノボだから実現
Snr005 レノボだから実現
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリース
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリース
 
Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure最新技術アップデート編 - 20150123もっとわかる Microsoft Azure最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプ
 
DRBD 8.3の開発終了に伴う今後の対応について
DRBD 8.3の開発終了に伴う今後の対応についてDRBD 8.3の開発終了に伴う今後の対応について
DRBD 8.3の開発終了に伴う今後の対応について
 
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
 

Plus de Kohei KaiGai

20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_APIKohei KaiGai
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_countKohei KaiGai
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_IndexKohei KaiGai
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGISKohei KaiGai
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_ProcessingKohei KaiGai
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_FdwKohei KaiGai
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGaiKohei KaiGai
 
20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - EnglishKohei KaiGai
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LTKohei KaiGai
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigDataKohei KaiGai
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA UnconferenceKohei KaiGai
 
20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQLKohei KaiGai
 
20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multi20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multiKohei KaiGai
 
20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdw20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdwKohei KaiGai
 
20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_EN20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_ENKohei KaiGai
 
20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JPKohei KaiGai
 

Plus de Kohei KaiGai (16)

20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_count
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai
 
20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference
 
20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL
 
20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multi20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multi
 
20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdw20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdw
 
20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_EN20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_EN
 
20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP
 

Dernier

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Dernier (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

20210731_OSC_Kyoto_PGStrom3.0

  • 2. 自己紹介/HeteroDB社について OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 2 会社概要  商号 ヘテロDB株式会社  創業 2017年7月4日  拠点 品川区北品川5-5-15 大崎ブライトコア4F  事業内容 高速データベース製品の販売 GPU&DB領域の技術コンサルティング ヘテロジニアスコンピューティング技術を データベース領域に適用し、 誰もが使いやすく、安価で高速なデータ解析基盤を提供する。 代表者プロフィール  海外 浩平(KaiGai Kohei)  OSS開発者コミュニティにおいて、PostgreSQLやLinux kernelの 開発に10年以上従事。主にセキュリティ・FDW等の分野でアッ プストリームへの貢献。  IPA未踏ソフト事業において“天才プログラマー”認定 (2006)  GPU Technology Conference Japan 2017でInception Awardを受賞
  • 3. PG-Stromとは? OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 3 【機能】  集計/検索ワークロードの透過的なGPU高速化  GPU-Direct SQLによるI/Oの高速化。ほぼH/W理論値でデータを読み出し。  Apache Arrow対応によるデータ交換、インポート時間をほぼゼロに。  PostGIS関数のサポート(一部)。位置情報分析を高速化。  GPUメモリにデータを常駐。OLTPワークロードとの共存。 PG-Strom: GPUとNVMEの能力を最大限に引き出し、 TB級のデータを高速処理するPostgreSQL向け拡張モジュール App GPU off-loading ➢ GPU-code generator on the fly ➢ GPU-Direct SQL ➢ NVME-oF/NFSoRDMA support ➢ Columnar Store (Arrow_Fdw) ➢ Arrow min/max statistics ➢ GPU Memory Cache ➢ Asymmetric Partition-wise JOIN/GROUP BY ➢ BRIN-Index Support ➢ PostGIS Support ➢ Pg2Arrow / MySQL2Arrow NEW NEW UPDATE UPDATE 時系列データ リアルタイムデータ GPUDirect Storage
  • 4. GPUとはどんなプロセッサなのか? OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 4 主にHPC分野で実績があり、機械学習用途で爆発的に普及 NVIDIA A100 スーパーコンピュータ (東京工業大学 TSUBAME3.0) CG(Computer Graphics) 機械学習 数千コアの並列処理ユニット、TB/sに達する広帯域メモリを ワンチップに実装した半導体デバイス ➔ “同じ計算を大量のデータに並列実行” を最も得意とする シミュレーション
  • 5. PG-Stromのターゲット: IoT/M2Mログデータ処理 Manufacturing Home electronics Logistics Mobile DB Admin BI Tools (Visualization) GPU-Direct SQL PG-Strom v3.0 AI/ML Applications (Anomaly detections, ...) 時系列の大量ログデータ WHERE JOIN GROUP BY PostGIS JSONB GPU Cache 位置情報を含む リアルタイムデータ ✓ GPUによる数千並列でのSQL実行 ✓ GPU-Direct SQLで、NVMEデバイスの 理論限界速度で処理を実行 ✓ GPU版PostGISによる 地理情報分析のサポート ✓ Apache Arrow形式を介した、 インポートなしでのデータ交換 ✓ 使い慣れた PostgreSQL で GPUを意識することなく 透過的にSQLを高速化 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 5
  • 6. PG-Strom v3.0をリリースしました OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 6
  • 7. 本日のトピック 1. NVIDIA GPUDirect Storageへの対応 2. GPU-Direct SQLとNFS-over-RDMAの併用 3. Apache Arrow版BRIN-Index対応 PG-Strom v3.0新機能が、どう大量ログデータ処理を”爆速化”するか OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 7
  • 8. ① NVIDIA GPUDirect Storageへの対応 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 8
  • 9. 背景:SSD-to-GPUダイレクトSQL(1/2) CPU RAM SSD GPU PCIe PostgreSQL データブロック NVME-Strom CPU/RAMを介することなく、 Peer-to-PeerのDMAを用いて SSD上のデータブロックを直接 GPUに転送するLinux kernel module WHERE句 JOIN GROUP BY GPUでSQLを処理し、 データ量を削減する データ量:小 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 9
  • 10. 背景:SSD-to-GPUダイレクトSQL(2/2)  クエリ実行スループット = (879GB DB-size) / (クエリ応答時間 [sec])  SSD-to-GPU Direct SQLの場合、ハードウェア限界(8.5GB/s)に近い性能を記録  CPU+Filesystemベースの構成と比べて約3倍強の高速化 ➔ 従来のDWH専用機並みの性能を、1Uサーバ上のPostgreSQLで実現 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 10 2,443 2,406 2,400 2,348 2,325 2,337 2,346 2,383 2,355 2,356 2,327 2,333 2,313 8,252 8,266 8,266 8,154 8,158 8,186 7,933 8,094 8,240 8,225 7,975 7,969 8,107 0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 9,000 Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3 Query Execution Throughput [MB/s] Star Schema Benchmark (s=1000, DBsize: 879GB) on Tesla V100 x1 + DC P4600 x3 PostgreSQL 11.5 PG-Strom 2.2 (Row data)
  • 11. NVIDIA GPUDirect Storageとは?  6/29にリリースされた CUDA Toolkit 11.4 の新機能  NVMEデバイスから、GPUへの直接のデータ転送が可能  データ転送のパフォーマンスは、ほぼほぼ NVME-Strom と同等  NVME-oFデバイスや、NFS-over-RDMAにも対応  OSの対応は、RHEL8.3~、Ubuntu 18.04/20.04 出典)https://developer.nvidia.com/gpudirect-storage OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 11
  • 12. NVME-Strom と NVIDIA GPUDirect Storage を比較 NVME-Strom GPUDirect Storage 提供元 HeteroDB NVIDIA 公開日 5th-Sep-2016 29th-Jun-2021 対応OS RHEL7.x, RHEL8.x RHEL8.3~、Ubuntu 18.04/20.04 対応FS Ext4 Ext4, NFS, 商用の分散FS PCI-E NVME-SSD 〇 (INBOX + Patch) 〇 (MOFED + Patch) NVME-over-Fabric 実験的対応 〇 (MOFED + Patch) RAID Support md-raid (RAID0) md-raid (RAID0) その他デバイス - SDS(Software Defined Storage)、 ロジック搭載SSDなど その他制約 I/Oサイズは PAGE_SIZE の倍数のみ O_DIRECT必須 PG-Stromでの対応 v2.0~ v3.0~ パフォーマンス ほぼ同じ(デバイスの SeqRead 性能による) RHEL7.x以外では NVIDIA GPUDirect Storage を推奨 ※ MOFED = Mellanox Open Fabric Enterprise Driver OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 12
  • 13. GPU-Direct SQLの性能測定 クエリ実行中の読み出し速度は、理論値に近い10.0GB/s 0 2,000 4,000 6,000 8,000 10,000 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 Total Storage Read Throughput [MB/sec] Elapsed Time [sec] Total Storage Read Throughput during Query Execution [Q1_1] Query Execution with GPUDirect Storage Query Execution with PostgreSQL Heap Storage nvme1 nvme2 nvme3 nvme4 nvme1 nvme2 nvme3 nvme4  測定に用いたIntel DC P4510のカタログスペックは SeqRead: 2750MB/s ➔ 4本で理論速度 11.0GB/s に対し、クエリ実行中の読み出し速度 10.0GB/s を達成。 (ファイルシステムだと高々3.8GB/s程度) OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 13
  • 14. GPUDirect Storage対応とシステム構成 3rd-Party Solutions Local NVME-SSD NVME-over-Fabric (NVME-oF) Software Defined Storages (SDS) HeteroDB NVME- Strom PostgreSQL heap Apache Arrow WHERE-clause GPU-Join GPU Group-By NFS-over-RDMA 従来は、GPUとNVME-SSDを 同一筐体に収めるのが、 H/W選定上の大きな制約 NVIDIA GPUDirect Storage 高速ネットワーク (100Gb) 経由の 分散ストレージにも対応する ↓ H/W選定の自由と、 拡張性を両立できる。 価格的には少し…。 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 14
  • 15. ② GPU-Direct SQLとNFS-over-RDMAの併用 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 15
  • 16. NFS-over-RDMAを試す(1/5) RAM NFSサーバ DBサーバ(NFSクライアント) RDMA対応NIC※ ※ Mellanox社製 Connect X5シリーズなど RDMA対応NIC※ RoCE (RDMA-over-Converged Ethernet) NFSサーバ DB/GPUサーバ (NFSクライアント) RDMA対応NIC※ RDMA対応NIC※ RoCE (RDMA-over-Converged Ethernet) GPU上のデバイスメモリに、 NICを介してリモートから 直接のデータ転送 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 16
  • 17. NFS-over-RDMAを試す(2/5) SYS-4029GP-TRT SYS-1019GP-TT 100G-NIC 100G-NIC GPU1 (A100) CPU0 GPU0 (A100) NVME HCA CPU0 PCIE-SW PCIE-SW CPU1 開発用PC端末 192.168.80.106/24 192.168.80.108/24 オフィスLAN) 192.168.77.0/24 PCI-ENC8G-08A (U.2 NVME-SSD x8) Mellanox connect-X5 Mellanox connect-X5 NVME HCA NFSサーバ DB/GPUサーバ (NFSクライアント) OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 17
  • 18. NFS-over-RDMAを試す(3/5) NFSサーバ側の設定 # modprobe svcrdma # modinfo svcrdma filename: /lib/modules/4.18.0-240.22.1.el8_3.x86_64/extra/mlnx-nfsrdma/svcrdma.ko : # echo rdma 20049 > /proc/fs/nfsd/portlist # cat /proc/fs/nfsd/portlist rdma 20049 rdma 20049 tcp 2049 tcp 2049 NFSクライアント側の設定 # modprobe rpcrdma # modinfo rpcrdma filename: /lib/modules/4.18.0-240.22.1.el8_3.x86_64/extra/mlnx-nfsrdma/rpcrdma.ko : # grep nvfs_ops /proc/kallsyms ffffffffc319ddc8 b nvfs_ops [rpcrdma] ffffffffc0c256c0 b nvfs_ops [nvme_rdma] ffffffffc00dc718 b nvfs_ops [nvme] # mount -o rdma,port=20049 192.168.80.106:/mnt/nfsroot /opt/nvme1 # dd if=/opt/nvme1/100GB of=/dev/null iflag=direct bs=32M 3106+1 records in 3106+1 records out 104230305696 bytes (104 GB, 97 GiB) copied, 11.8926 s, 8.8 GB/s MOFEDドライバ版を使用 MOFEDドライバ版を使用 ※但し、自分で再ビルドしないと GPUDirect Storage対応機能が有効になっていない nvidia-fsモジュールとの連携が有効になっている。 rdmaオプションをつけてNFSマウント NFS-over-RDMAあり: 8.8GB/s NFS-over-RDMAなし: 3.2GB/s OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 18
  • 19. NFS-over-RDMAを試す(4/5)  SF=500 (DB: 453GB) の Star Schema Benchmark データに対してクエリを実行  スループット = 453.6GB / (クエリ応答時間) ➔ ローカルのNVME-SSDには劣るものの、最大で 8.2GB/s 程度の処理レートを達成 (ただし、NFSサーバ側のH/Wが原因で律速している可能性はある。 Skylake-SPの場合、P2P-DMAが8.5GB/s程度で頭打ちになっていた。) 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3 Query Execution Throughput [MB/s] SSBM Query Execution Throughput with GPUDirect SQL (Local NVME vs NFS over RDMA) PG-Strom v3.0 [PCI-E NVME] PG-Strom v3.0 [NFSoRDMA] OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 19
  • 20. NFS-over-RDMAを試す(5/5)  Star Schema Benchmark実行中のI/O帯域を計測(iostat, nfsstat使用)  Local NVME-SSD実行時に謎の速度変化があるが、概ねクエリの 実行スループットと同等のデータ読み出し速度 ➔ 性能10%ダウン程度で、共有ファイルシステムが使えるなら十分アリでは? 0 2000 4000 6000 8000 10000 0 20 40 60 80 100 Storage Read Throughput [MB/s] Elapsed Time [sec] Storage Read throughput under GPUDirect SQL (Local NVME vs NFS-over-RDMA) OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 20
  • 21. GPU-Direct SQL と NFS-over-RDMAで何が嬉しくなるか? Manufacturing Home electronics Mobile & Vehicles DB Admin BI Tools (Visualization) GPU-Direct SQL PG-Strom v3.0 AI/ML Applications (Anomaly detections, ...) 時系列の大量ログデータ WHERE JOIN GROUP BY PostGIS JSONB 超高速ストレージ読み出し GPU-Direct SQL + NFS-over-RDMA ログの収集 NFS共有フォルダに Arrow ファイルを 放り込めば、即、分析に回せる GPUによる検索/集計処理 WHERE句、JOIN、GROUP BYを 数千コアの並列実行で処理 プレゼンテーション層 リアルタイムデータに対する 処理結果をビジュアライズ わざわざDBにインポート したり、クラウドに アップロードの必要がない。 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 21
  • 22. ③ Apache Arrow版 BRIN-Index対応 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 22
  • 23. Apache Arrowとは OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 23 ▌特徴  列指向で分析用途向けに設計されたデータ形式  アプリケーションによらず、共通のデータ交換形式として利用可能  整数、実数、日付時刻、文字列など基本的なデータ型を定義 NVIDIA GPU PostgreSQL / PG-Strom
  • 24. ログデータ処理に Apache Arrow を使うメリット ① 列データなので、クエリで参照された列だけをロードすればよい ➔ I/Oの量が減り、それに伴いクエリ応答時間が短くなる。 ② DBへデータをインポートする必要がない ➔ OS上でファイルコピーすれば、それで準備完了。 21.13 20.54 20.43 18.88 18.65 18.30 16.08 20.70 19.36 20.00 19.05 19.73 19.35 64.98 64.88 65.39 63.48 58.08 64.28 58.16 60.27 58.32 62.36 58.30 58.86 58.24 587.16 463.37 467.69 324.90 198.93 328.96 192.64 245.48 247.13 228.83 164.63 173.41 163.08 0.0 100.0 200.0 300.0 400.0 500.0 600.0 Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3 Q3_1 Q3_2 Q3_3 Q3_4 Q4_1 Q4_2 Q4_3 Number of rows processed per second [million rows/sec] Star Schema Benchmark (SF=999 [875GB], 1xTesla A100 (PCI-E; 40GB), 4xDC P4510(1.0TB; U.2) PostgreSQL v13.3 [Heap; row-data] PG-Strom v3.0 [Heap; row-data] PG-Strom v3.0 [Apache Arrow; column-data] OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 24
  • 25. Apache Arrowが不得意なワークロード Footer Apache Arrow File RecordBatch-2 RecordBatch-N RecordBatch-1 Schema column-1 null-bitmap column-1 values-array column-2 values-array column-3 null-bitmap column-3 offset-array column-3 extra buffer column-4 values-array 固定長データ列(NULL可) 非NULL・固定長データ列 可変長データ列 非NULL・固定長データ列 ① 更新・削除を伴うデータには向かない ② 特定の1行を抽出する事には不向き ➔ 基本、全件スキャンになるのだが、、、実は…。 RecordBatch-2が50万行とすると、 50万個の固定長データの配列と、 同じ長さのNULL-bitmap INSERT-Onlyのデータを バルクで書き込み続けるタイプの ワークロードに向いたデータ構造 (IoT/M2Mログデータが典型) OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 25
  • 26. 関連機能:PostgreSQL BRINインデックス OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 26 ▌BRIN ... Block Range Index  一定範囲のブロック(8KB x 128個)で、対象列の最大値/最小値を記録するインデックス  検索条件にマッチしない事が明らかなブロックを読み飛ばす事ができる。 ➔ RAM/SSD~GPU間のデータ転送量/処理すべきレコード数を削減する事ができる。 時系列データ データの発生した時刻順にレコードがINSERTされるため、 タイムスタンプが近いレコードは、物理的に近しい位置に 格納されるという特徴を持つ。 BRIN インデックス 条件句: WHERE ymd BETWEEN ‘2016-01-01’ AND ‘2016-12-31’ False True True True False min: ‘2015-01-01’ max: ‘2015-09-30’ min: ‘2015-10-01’ max: ‘2016-03-15’ min: ‘2016-03-15’ max: ‘2016-07-31’ min: ‘2016-08-01’ max: ‘2017-02-01’ min: ‘2017-02-01’ max: ‘2017-05-15’ 必要最小限のデータだけをGPUに転送 タイムスタンプ +αの条件句を並列に評価する。
  • 27. Apache Arrowファイルに統計情報を埋め込む(1/2) Apache Arrow File Header “ARROW1¥0¥0” Schema Definition RecordBatch-1 RecordBatch-k Footer • Schema Definition (copy) • RecordBatch[0] (offset, size) : • RecordBatch[k] (offset, size) • Terminator “ARROW1” RecordBatch-0 ArrowSchema _num_fields = 3 ArrowField name = “device_id” type=Uint32 ArrowField name = “attribute” type=Float64 ArrowField name = “ts” type=TimeStamp custom_metadata[] ArrowKeyValue key = “min_values” value=“…” ArrowKeyValue key = “max_values” value=“…”  Apache Arrowデータ形式は、 Schema(表に相当)とField(列に相当)に カスタムの Key-Value 値を埋め込む事を許容する。 ➔ 標準のデータ形式に一切手を加えることなく、 Record-Batch毎の最小値/最大値を記録する事ができる。 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 27
  • 28. Apache Arrowファイルに統計情報を埋め込む(2/2) 統計情報付き Apache Arrow ファイルの生成 $ pg2arrow -d postgres -o /dev/shm/flineorder_sort.arrow ¥ -t lineorder_sort --stat=lo_orderdate --progress RecordBatch[0]: offset=1640 length=268437080 (meta=920, body=268436160) nitems=1303085 : RecordBatch[9]: offset=2415935360 length=55668888 (meta=920, body=55667968) nitems=270231 $ ls -lh /dev/shm/flineorder_sort.arrow -rw-r--r--. 1 kaigai users 2.4G 7月 19 10:45 /dev/shm/flineorder_sort.arrow 生成された統計情報の確認 $ python3 >>> import pyarrow as pa >>> X = pa.RecordBatchFileReader('/dev/shm/flineorder_sort.arrow') >>> X.schema lo_orderkey: decimal(30, 8) : lo_suppkey: decimal(30, 8) lo_orderdate: int32 -- field metadata -- min_values: '19920101,19920919,19930608,19940223,19941111,19950730,1996' + 31 max_values: '19920919,19930608,19940223,19941111,19950730,19960417,1997' + 31 lo_orderpriority: fixed_size_binary[15] : lo_shipmode: fixed_size_binary[10] -- schema metadata -- sql_command: 'SELECT * FROM lineorder_sort' RecordBatch ごと、最小値/最大値を埋め込み OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 28
  • 29. 統計情報を利用したクエリの最適化(1/3) Arrowのスキーマ定義を利用したArrow_Fdw外部テーブルの定義 postgres=# IMPORT FOREIGN SCHEMA flineorder_sort FROM SERVER arrow_fdw INTO public OPTIONS (file '/dev/shm/flineorder_sort.arrow'); IMPORT FOREIGN SCHEMA Arrowのmin/max statisticsを利用した問合せ例 postgres=# EXPLAIN ANALYZE SELECT count(*) FROM flineorder_sort WHERE lo_orderpriority = '2-HIGH' AND lo_orderdate BETWEEN 19940101 AND 19940630; QUERY PLAN ------------------------------------------------------------------------------------------ Aggregate (cost=33143.09..33143.10 rows=1 width=8) (actual time=115.591..115.593 rows=1loops=1) -> Custom Scan (GpuPreAgg) on flineorder_sort (cost=33139.52..33142.07 rows=204 width=8) (actual time=115.580..115.585 rows=1 loops=1) Reduction: NoGroup Outer Scan: flineorder_sort (cost=4000.00..33139.42 rows=300 width=0) (actual time=10.682..21.555 rows=2606170 loops=1) Outer Scan Filter: ((lo_orderdate >= 19940101) AND (lo_orderdate <= 19940630) AND (lo_orderpriority = '2-HIGH'::bpchar)) Rows Removed by Outer Scan Filter: 2425885 referenced: lo_orderdate, lo_orderpriority Stats-Hint: (lo_orderdate >= 19940101), (lo_orderdate <= 19940630) [loaded: 2, skipped: 8] files0: /dev/shm/flineorder_sort.arrow (read: 217.52MB, size: 2357.11MB) Planning Time: 0.210 ms Execution Time: 153.508 ms (11 rows) OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 29
  • 30. 統計情報を利用したクエリの最適化(2/3) 列方向だけでなく、行方向での絞り込みと同義 Full Table Scan of Row-Data (PostgreSQL Heap) Full Table Scan of Column-Data (Arrow_Fdw; no Stats-Hint) Full Table Scan of Column-Data with Min/Max Stats Hint Only referenced columns ts BETWEEN ‘2021-04-01’ AND ‘2021-06-30’ OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 30
  • 31. 統計情報を利用したクエリの最適化(3/3)  ログデータの“タイムスタンプ“に統計情報を付加するのがお勧め。  Pg2Arrowだけでなく、他のツールが生成した Arrow ファイルに、 後付けで統計情報を埋め込むためのツールを準備中。 列/行双方の絞り込みで、上手くハマれば強烈に速くなる 254.905 99.587 10.052 1.191 0 50 100 150 200 250 300 Query Response Time [sec] (shorter is better) Query response time of SSBM Q1_2 [mod] PostgreSQL v13.3 PG-Strom v3.1dev [Row-Data] PG-Strom v3.1dev [Apache Arrow; No Stats Hint] PG-Strom v3.1dev [Apache Arrow; with Stats Hint] select sum(lo_extendedprice*lo_discount) as revenue from flineorder_sort, date1 where lo_orderdate = d_datekey and d_yearmonthnum = 199401 and lo_discount between 4 and 6 and lo_quantity between 26 and 35; select sum(lo_extendedprice*lo_discount) as revenue from flineorder_sort, date1 where lo_orderdate = d_datekey and d_yearmonthnum = 199401 and lo_discount between 4 and 6 and lo_quantity between 26 and 35; and lo_orderdate between 19940101 and 19940131; GPU-Direct SQLの効果 Apache Arrowの効果 min/max statisticsの効果 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 31
  • 32. まとめ OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 32
  • 33. PG-Stromのターゲット: IoT/M2Mログデータ処理 Manufacturing Home electronics Logistics Mobile DB Admin BI Tools (Visualization) GPU-Direct SQL PG-Strom v3.0 AI/ML Applications (Anomaly detections, ...) 時系列の大量ログデータ WHERE JOIN GROUP BY PostGIS JSONB GPU Cache 位置情報を含む リアルタイムデータ  GPU-Direct SQL ストレージの性能を最大限に引き出し、 さらに、NVME-oFやNFS-over-RDMAなど、 GPUとストレージを分離する事で更に 使いやすく。  NFS-over-RDMAサポート NVIDIA GPUDirect Storageの対応により、 多様なストレージデバイスを、 ログデータ分析のソースとして利用 できるように。  Arrowの統計情報サポート 「タイムスタンプ」という ログデータの特性を活かした 検索範囲の絞り込み。 OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 33
  • 34. おまけ OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 34
  • 35. 各種リソース ▌ソフトウェア  GitHub: https://github.com/heterodb/pg-strom  Document: http://heterodb.github.io/pg-strom/ja/  Packages: https://github.com/heterodb/swdc ▌問合せ先  e-mail: contact@heterodb.com (お仕事の相談など)  twitter: @kkaigai (気軽な質問など) OSC/Kyoto Online 2021 - “爆速!”を実現する PG-Strom v3.0の新機能 35