SlideShare a Scribd company logo
1 of 22
Download to read offline
Performing SQL with SSD-to-GPU P2P Transfer
かぴばらの旦那 / Herr.Wasserschwein
<kaigai@kaigai.gr.jp>
The PG-Strom Project
Feedbacks under the PG-Strom v1.0 development
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer2
Application
Storage
Query
Optimizer
Query
Executor
PG-Strom
Extension
SQL Parser
Storage Manager
GPU
計算集約的ワークロード
computing intensive workloads
• 統計解析、科学技術計算、
マーケティング、etc...
• statistics, science, marketing, ...
 by PL/CUDA + Matrix-Array
I/O集約的ワークロード
(i/o intensive workloads)
• DWH, ETL, Reporting, ...
 by SSD-to-GPU P2P DMA
The PG-Strom Project
x86サーバのアーキテクチャ / Architecture of x86 server
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer3
RAMRAM
PCI Bus
NVMe-SSD GPU
PCIe x16PCIe x4~x8
PCH
その他低速デバイス
(other slow devices)
The PG-Strom Project
x86サーバのアーキテクチャ / Architecture of x86 server
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer4
PCH
RAMRAM
PCI Bus
NVMe-SSD GPU
PCIe x16PCIe x4~x8
I/O READ
disk
block
disk
buffer
カタログスペック
(catalog spec)
2GB~6GB/s
その他低速デバイス
(other slow devices)
The PG-Strom Project
x86サーバのアーキテクチャ / Architecture of x86 server
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer5
PCH
RAMRAM
PCI Bus
NVMe-SSD GPU
PCIe x16PCIe x4~x8
disk
buffer
その他低速デバイス
(other slow devices)
The PG-Strom Project
やりたい事 / What I want to do
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer6
PCH
RAMRAM
PCI Bus
NVMe-SSD GPU
PCIe x16PCIe x4~x8
result
buffer
disk
block
その他低速デバイス
(other slow devices)
The PG-Strom Project
やりたい事 / What I want to do
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer7
PCH
RAM
PCI Bus
NVMe-SSD GPU
PCIe x16PCIe x4~x8
Large PostgreSQL Tables
Small Inner Tables
WHERE句
JOIN
GROUP BY
データサイズが
すごく小さく!
(making data-size
much smaller!)
その他低速デバイス
(other slow devices)
The PG-Strom Project
やりたい事 / What I want to do
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer8
PCH
RAM
PCI Bus
NVMe-SSD GPU
PCIe x16PCIe x4~x8
Large PostgreSQL Tables
Small Inner Tables
WHERE句
JOIN
GROUP BY
ここまで完成
(works completed)
その他低速デバイス
(other slow devices)
The PG-Strom Project
要素技術 / Element Technology: GPUDirect RDMA by NVIDIA
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer9
GPUのデバイスメモリを、物理アドレス空間
にマップするためのAPI
(API to map GPU’s device memory
on physical address space of the host system)

ストレージからのDMA転送先に
GPU上のデバイスメモリを指定できる。
(GPU’s device memory can be used for the
destination address of DMA from the storage)
The PG-Strom Project
NVMe-Stromドライバ / NVMe-Strom Driver
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer10
pg-strom
NVMe-Strom
VFS
Page Cache
NVMe SSD
Driver
nvidia
driver
PostgreSQL
/proc/nvme-strom
read(2)
User
Space
Kernel
Space
The PG-Strom Project
NVMe-Stromドライバ / NVMe-Strom Driver
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer11
pg-strom
NVMe-Strom
VFS
Page Cache
NVMe SSD
Driver
nvidia
driver
GPU
device
memory
PostgreSQL
cuMemAlloc()
/proc/nvme-strom
read(2)
User
Space
Kernel
Space
The PG-Strom Project
NVMe-Stromドライバ / NVMe-Strom Driver
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer12
pg-strom
NVMe-Strom
VFS
Page Cache
NVMe SSD
Driver
nvidia
driver
GPU
device
memory
GPU
device
memory
PostgreSQL
cuMemAlloc()
/proc/nvme-strom
ioctl(2)
read(2)
User
Space
Kernel
Space
The PG-Strom Project
NVMe-Stromドライバ / NVMe-Strom Driver
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer13
pg-strom
NVMe-Strom
VFS
Page Cache
NVMe SSD
Driver
nvidia
driver
GPU
device
memory
GPU
device
memory
PostgreSQL
file offset
block number
cuMemAlloc()
/proc/nvme-strom
ioctl(2)
read(2)
User
Space
Kernel
Space
The PG-Strom Project
NVMe-Stromドライバ / NVMe-Strom Driver
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer14
pg-strom
NVMe-Strom
VFS
Page Cache
NVMe SSD
Driver
nvidia
driver
GPU
device
memory
GPU
device
memory
PostgreSQL
file offset
DMA
request
block number
cuMemAlloc()
/proc/nvme-strom
ioctl(2)
read(2)
User
Space
Kernel
Space
The PG-Strom Project
NVMe-Stromドライバ / NVMe-Strom Driver
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer15
pg-strom
NVMe-Strom
VFS
Page Cache
NVMe SSD
Driver
nvidia
driver
GPU
device
memory
GPU
device
memory
PostgreSQL
file offset
DMA
request
block number
SSD-to-GPU Peer-to-Peer DMA
cuMemAlloc()
/proc/nvme-strom
ioctl(2)
read(2)
User
Space
Kernel
Space
The PG-Strom Project
単純I/O性能 / Raw I/O Performance
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer16
 32MB x 6個のバッファを使用。バッファが空になる度に非同期DMAをキック
 6 of 32MB buffers were used. Async DMA was kicked per
 測定環境 / Environment
 CPU: Xeon E5-2670 v3, RAM: 64GB
 Intel SSD 750 (400GB; PCI-E x4)
 NVIDIA Tesla K20c (2496core; 706MHz, 5GB GDDR5; 208GB/s)
 OS: CentOS 7 (3.10.0-327.18.2.el7.x86_64), Filesystem: Ext4
カタログスペック!
(catalog spec!!)
The PG-Strom Project
測定に使用したNVMe-SSD / NVMe-SSD for this measurement
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer17
容量
(capacity)
順次128KB
読出し
(Seq Read)
順次128KB
書込み
(Seq Write)
ランダム4KB
読出し
(Random Read)
ランダム4KB
書込み
(Random Write)
インターフェース
(Interface)
400GB 2,200MB/s 900MB/s 430,000 IOPS 230,000 IOPS PCIe 3.0 x4
800GB 2,100MB/s 800MB/s 420,000 IOPS 210,000 IOPS PCIe 3.0 x4
1.2TB 2,500MB/s 1,200MB/s 460,000 IOPS 290,000 IOPS PCIe 3.0 x4
 これ以外に、Samsung PM1725 NVMe SSD (1.6TB, 6GB/s) での動作報告あり。
(working at Samsung PM1725 NVMe SSD (1.6TB, 6GB/s) was reported)
 Raw-I/OのSSD-to-GPUで5634MB/sを記録との報告
(It said the raw-I/O SSD-to-GPU worked with 5634MB/s)
 https://github.com/kaigai/nvme-kmod/issues/1
The PG-Strom Project
SQLスキャン性能 / SQL Scan Performance
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer18
▌この測定結果から分かる事 / What this measurement tells us
 既存ストレージ層の性能限界 / Performance limit of the storage layer
 64GB / 140sec = 468MB/s  Raw-I/O性能(587MB/s)に20%程度の追加コスト
(Extra 20% cost in addition to the raw-i/o throughput (587MB/s))
 NVMe-Stromによる改善 / Improvement by NVMe-Strom
 スループット / Throughput: 64GB / 43sec = 1524MB/s
Existing
Limit
The PG-Strom Project
測定に使用したクエリ / Query for the measurement
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer19
CREATE TABLE t_64g (id int not null,
x float not null,
y float not null,
z float not null,
memo text);
INSERT INTO t_64g (SELECT x, random()*1000, random()*1000,
random()*1000, md5(x::text)
FROM generate_series(1,700000000) x);
postgres=# ¥d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------------------+-------+--------+---------+-------------
public | t | table | kaigai | 965 MB |
public | t_64g | table | kaigai | 66 GB |
Query-1) Scan query with a simple WHERE-clause
SELECT * FROM t WHERE x BETWEEN y-2 AND y+2;
Query-2) Scan query with a complicated WHERE-clause
SELECT * FROM t_64g WHERE sqrt((x-200)^2 + (y-300)^2 +
(z-400)^2) < 10;
Query-3) Scan query with text matching
SELECT * FROM t WHERE memo LIKE '%abcd%';
The PG-Strom Project
開発ロードマップ / Development Roadmap
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer20
• GPUデバイスメモリのホストマッピングと、SSD-to-GPU P2P DMA要求の発行
• Host mapping of GPU device memory, and P2P DMA request for SSD-to-GPU transfer
① NVMe-Strom driver: the basic functionality
• PostgreSQL v9.6のCPU並列対応と、NVMe-Stromを使ったP2Pのデータロード
• hybrid parallel, and peer-to-peer data loading by NVMe-StromSupport of CPU+GPU
② PG-Strom: Integration with GpuScan + NVMe-Strom
• PostgreSQL v9.6の新オプティマイザ対応と、スキャン実装のGpuScanとの統合
• Support of new optimizer in PostgreSQL v9.6, and integration with GpuScan for simple scan
③ PG-Strom: JOIN/GROUP BY Support
• RAID-0/1区画に対するストライピングREAD / Striping READ on RAID-0/1 volumes
④ NVMe-Strom driver: RAID-0/1 support
• テスト、テスト、テスト、デバッグ / Test, Test, Test, Debug
⑤ 品質改善・安定化 / Quality improvement and stabilization
⑥ PG-Strom v2.0!! (2017/2Q~3Q)
いまココ!!
The PG-Strom Project
PG-Strom v2.0のターゲット / Target on PG-Strom v2.0
PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer21
PCI-E x8
5.0GB/s
PCI-E
PCI-E x16
~10GB/s
シングルノードで最大20GB/sのデータ処理能力を目指す
(towards 20GB/s data processing capability per node)
Dual NVMe-SSD
+RAID0/1対応
10GB/sのスループットで
SSDブロックをGPUへロード
数千コアによる
GPU並列処理
PCI-E
PCI-E x8
5.0GB/s
PCI-E x8
5.0GB/s
PCI-E x16
~10GB/s
PCI-E x8
5.0GB/s
Dual NVMe-SSD
+RAID0/1 Support
Loading SSD blocks to GPU
with 10GB/s throughput
GPU Parallels by
thousands cores
乞うご期待
don’t miss it

More Related Content

What's hot

What's hot (20)

20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
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
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyo
 
20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom
 
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
SSDとGPUがPostgreSQLを加速する【OSC.Enterprise】
 
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]
 
[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 株式会社...
 
20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介
 
20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
 

Viewers also liked

SSD: Ready for Enterprise and Cloud?
SSD: Ready for Enterprise and Cloud?SSD: Ready for Enterprise and Cloud?
SSD: Ready for Enterprise and Cloud?
IMEX Research
 

Viewers also liked (20)

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
 
SQL+GPU+SSD=∞ (English)
SQL+GPU+SSD=∞ (English)SQL+GPU+SSD=∞ (English)
SQL+GPU+SSD=∞ (English)
 
pgconfasia2016 plcuda en
pgconfasia2016 plcuda enpgconfasia2016 plcuda en
pgconfasia2016 plcuda en
 
20160407_GTC2016_PgSQL_In_Place
20160407_GTC2016_PgSQL_In_Place20160407_GTC2016_PgSQL_In_Place
20160407_GTC2016_PgSQL_In_Place
 
PL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsPL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database Analytics
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
My sql ssd-mysqluc-2012
My sql ssd-mysqluc-2012My sql ssd-mysqluc-2012
My sql ssd-mysqluc-2012
 
SSD vs HDD - A Shift In Data Storage by Todd Dinkelman
SSD vs HDD - A Shift In Data Storage by Todd DinkelmanSSD vs HDD - A Shift In Data Storage by Todd Dinkelman
SSD vs HDD - A Shift In Data Storage by Todd Dinkelman
 
Opportunità per la gestione dei centri fitness in seguito alla Proposta di Le...
Opportunità per la gestione dei centri fitness in seguito alla Proposta di Le...Opportunità per la gestione dei centri fitness in seguito alla Proposta di Le...
Opportunità per la gestione dei centri fitness in seguito alla Proposta di Le...
 
Enterprise SSD: Who is Adopting Them and Why
Enterprise SSD: Who is Adopting Them and WhyEnterprise SSD: Who is Adopting Them and Why
Enterprise SSD: Who is Adopting Them and Why
 
Flash Memory Summit: IT Brand Pulse - SSD Buying Behavior
Flash Memory Summit: IT Brand Pulse - SSD Buying BehaviorFlash Memory Summit: IT Brand Pulse - SSD Buying Behavior
Flash Memory Summit: IT Brand Pulse - SSD Buying Behavior
 
GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)
 
SSD: Ready for Enterprise and Cloud?
SSD: Ready for Enterprise and Cloud?SSD: Ready for Enterprise and Cloud?
SSD: Ready for Enterprise and Cloud?
 
UniPlex 1000 Series PCIe NVMe JBOF
UniPlex 1000 Series PCIe NVMe JBOFUniPlex 1000 Series PCIe NVMe JBOF
UniPlex 1000 Series PCIe NVMe JBOF
 
Ssd – Solid State Drive
Ssd – Solid State DriveSsd – Solid State Drive
Ssd – Solid State Drive
 
Solid state drive (ssd)
Solid state drive (ssd)Solid state drive (ssd)
Solid state drive (ssd)
 

Similar to pgconfasia2016 lt ssd2gpu

[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
Insight Technology, Inc.
 

Similar to pgconfasia2016 lt ssd2gpu (20)

20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
Snr005 レノボだから実現
Snr005 レノボだから実現Snr005 レノボだから実現
Snr005 レノボだから実現
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリース
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリース
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB
 
Cmc cmd slim
Cmc cmd slimCmc cmd slim
Cmc cmd slim
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
 
俺的 Ignite update 萌えポイント portal&arm, compute, network -
俺的 Ignite update 萌えポイント   portal&arm, compute, network -俺的 Ignite update 萌えポイント   portal&arm, compute, network -
俺的 Ignite update 萌えポイント portal&arm, compute, network -
 
[Cyber HPC Symposium 2019] Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
[Cyber HPC Symposium 2019]  Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...[Cyber HPC Symposium 2019]  Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
[Cyber HPC Symposium 2019] Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
 
Snr001 azure iaa_s_応用編~実務で
Snr001 azure iaa_s_応用編~実務でSnr001 azure iaa_s_応用編~実務で
Snr001 azure iaa_s_応用編~実務で
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 

More from Kohei KaiGai

More from Kohei KaiGai (15)

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
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
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
 
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
 

Recently uploaded

Recently uploaded (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

pgconfasia2016 lt ssd2gpu

  • 1. Performing SQL with SSD-to-GPU P2P Transfer かぴばらの旦那 / Herr.Wasserschwein <kaigai@kaigai.gr.jp>
  • 2. The PG-Strom Project Feedbacks under the PG-Strom v1.0 development PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer2 Application Storage Query Optimizer Query Executor PG-Strom Extension SQL Parser Storage Manager GPU 計算集約的ワークロード computing intensive workloads • 統計解析、科学技術計算、 マーケティング、etc... • statistics, science, marketing, ...  by PL/CUDA + Matrix-Array I/O集約的ワークロード (i/o intensive workloads) • DWH, ETL, Reporting, ...  by SSD-to-GPU P2P DMA
  • 3. The PG-Strom Project x86サーバのアーキテクチャ / Architecture of x86 server PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer3 RAMRAM PCI Bus NVMe-SSD GPU PCIe x16PCIe x4~x8 PCH その他低速デバイス (other slow devices)
  • 4. The PG-Strom Project x86サーバのアーキテクチャ / Architecture of x86 server PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer4 PCH RAMRAM PCI Bus NVMe-SSD GPU PCIe x16PCIe x4~x8 I/O READ disk block disk buffer カタログスペック (catalog spec) 2GB~6GB/s その他低速デバイス (other slow devices)
  • 5. The PG-Strom Project x86サーバのアーキテクチャ / Architecture of x86 server PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer5 PCH RAMRAM PCI Bus NVMe-SSD GPU PCIe x16PCIe x4~x8 disk buffer その他低速デバイス (other slow devices)
  • 6. The PG-Strom Project やりたい事 / What I want to do PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer6 PCH RAMRAM PCI Bus NVMe-SSD GPU PCIe x16PCIe x4~x8 result buffer disk block その他低速デバイス (other slow devices)
  • 7. The PG-Strom Project やりたい事 / What I want to do PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer7 PCH RAM PCI Bus NVMe-SSD GPU PCIe x16PCIe x4~x8 Large PostgreSQL Tables Small Inner Tables WHERE句 JOIN GROUP BY データサイズが すごく小さく! (making data-size much smaller!) その他低速デバイス (other slow devices)
  • 8. The PG-Strom Project やりたい事 / What I want to do PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer8 PCH RAM PCI Bus NVMe-SSD GPU PCIe x16PCIe x4~x8 Large PostgreSQL Tables Small Inner Tables WHERE句 JOIN GROUP BY ここまで完成 (works completed) その他低速デバイス (other slow devices)
  • 9. The PG-Strom Project 要素技術 / Element Technology: GPUDirect RDMA by NVIDIA PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer9 GPUのデバイスメモリを、物理アドレス空間 にマップするためのAPI (API to map GPU’s device memory on physical address space of the host system)  ストレージからのDMA転送先に GPU上のデバイスメモリを指定できる。 (GPU’s device memory can be used for the destination address of DMA from the storage)
  • 10. The PG-Strom Project NVMe-Stromドライバ / NVMe-Strom Driver PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer10 pg-strom NVMe-Strom VFS Page Cache NVMe SSD Driver nvidia driver PostgreSQL /proc/nvme-strom read(2) User Space Kernel Space
  • 11. The PG-Strom Project NVMe-Stromドライバ / NVMe-Strom Driver PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer11 pg-strom NVMe-Strom VFS Page Cache NVMe SSD Driver nvidia driver GPU device memory PostgreSQL cuMemAlloc() /proc/nvme-strom read(2) User Space Kernel Space
  • 12. The PG-Strom Project NVMe-Stromドライバ / NVMe-Strom Driver PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer12 pg-strom NVMe-Strom VFS Page Cache NVMe SSD Driver nvidia driver GPU device memory GPU device memory PostgreSQL cuMemAlloc() /proc/nvme-strom ioctl(2) read(2) User Space Kernel Space
  • 13. The PG-Strom Project NVMe-Stromドライバ / NVMe-Strom Driver PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer13 pg-strom NVMe-Strom VFS Page Cache NVMe SSD Driver nvidia driver GPU device memory GPU device memory PostgreSQL file offset block number cuMemAlloc() /proc/nvme-strom ioctl(2) read(2) User Space Kernel Space
  • 14. The PG-Strom Project NVMe-Stromドライバ / NVMe-Strom Driver PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer14 pg-strom NVMe-Strom VFS Page Cache NVMe SSD Driver nvidia driver GPU device memory GPU device memory PostgreSQL file offset DMA request block number cuMemAlloc() /proc/nvme-strom ioctl(2) read(2) User Space Kernel Space
  • 15. The PG-Strom Project NVMe-Stromドライバ / NVMe-Strom Driver PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer15 pg-strom NVMe-Strom VFS Page Cache NVMe SSD Driver nvidia driver GPU device memory GPU device memory PostgreSQL file offset DMA request block number SSD-to-GPU Peer-to-Peer DMA cuMemAlloc() /proc/nvme-strom ioctl(2) read(2) User Space Kernel Space
  • 16. The PG-Strom Project 単純I/O性能 / Raw I/O Performance PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer16  32MB x 6個のバッファを使用。バッファが空になる度に非同期DMAをキック  6 of 32MB buffers were used. Async DMA was kicked per  測定環境 / Environment  CPU: Xeon E5-2670 v3, RAM: 64GB  Intel SSD 750 (400GB; PCI-E x4)  NVIDIA Tesla K20c (2496core; 706MHz, 5GB GDDR5; 208GB/s)  OS: CentOS 7 (3.10.0-327.18.2.el7.x86_64), Filesystem: Ext4 カタログスペック! (catalog spec!!)
  • 17. The PG-Strom Project 測定に使用したNVMe-SSD / NVMe-SSD for this measurement PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer17 容量 (capacity) 順次128KB 読出し (Seq Read) 順次128KB 書込み (Seq Write) ランダム4KB 読出し (Random Read) ランダム4KB 書込み (Random Write) インターフェース (Interface) 400GB 2,200MB/s 900MB/s 430,000 IOPS 230,000 IOPS PCIe 3.0 x4 800GB 2,100MB/s 800MB/s 420,000 IOPS 210,000 IOPS PCIe 3.0 x4 1.2TB 2,500MB/s 1,200MB/s 460,000 IOPS 290,000 IOPS PCIe 3.0 x4  これ以外に、Samsung PM1725 NVMe SSD (1.6TB, 6GB/s) での動作報告あり。 (working at Samsung PM1725 NVMe SSD (1.6TB, 6GB/s) was reported)  Raw-I/OのSSD-to-GPUで5634MB/sを記録との報告 (It said the raw-I/O SSD-to-GPU worked with 5634MB/s)  https://github.com/kaigai/nvme-kmod/issues/1
  • 18. The PG-Strom Project SQLスキャン性能 / SQL Scan Performance PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer18 ▌この測定結果から分かる事 / What this measurement tells us  既存ストレージ層の性能限界 / Performance limit of the storage layer  64GB / 140sec = 468MB/s  Raw-I/O性能(587MB/s)に20%程度の追加コスト (Extra 20% cost in addition to the raw-i/o throughput (587MB/s))  NVMe-Stromによる改善 / Improvement by NVMe-Strom  スループット / Throughput: 64GB / 43sec = 1524MB/s Existing Limit
  • 19. The PG-Strom Project 測定に使用したクエリ / Query for the measurement PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer19 CREATE TABLE t_64g (id int not null, x float not null, y float not null, z float not null, memo text); INSERT INTO t_64g (SELECT x, random()*1000, random()*1000, random()*1000, md5(x::text) FROM generate_series(1,700000000) x); postgres=# ¥d+ List of relations Schema | Name | Type | Owner | Size | Description --------+------------------+-------+--------+---------+------------- public | t | table | kaigai | 965 MB | public | t_64g | table | kaigai | 66 GB | Query-1) Scan query with a simple WHERE-clause SELECT * FROM t WHERE x BETWEEN y-2 AND y+2; Query-2) Scan query with a complicated WHERE-clause SELECT * FROM t_64g WHERE sqrt((x-200)^2 + (y-300)^2 + (z-400)^2) < 10; Query-3) Scan query with text matching SELECT * FROM t WHERE memo LIKE '%abcd%';
  • 20. The PG-Strom Project 開発ロードマップ / Development Roadmap PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer20 • GPUデバイスメモリのホストマッピングと、SSD-to-GPU P2P DMA要求の発行 • Host mapping of GPU device memory, and P2P DMA request for SSD-to-GPU transfer ① NVMe-Strom driver: the basic functionality • PostgreSQL v9.6のCPU並列対応と、NVMe-Stromを使ったP2Pのデータロード • hybrid parallel, and peer-to-peer data loading by NVMe-StromSupport of CPU+GPU ② PG-Strom: Integration with GpuScan + NVMe-Strom • PostgreSQL v9.6の新オプティマイザ対応と、スキャン実装のGpuScanとの統合 • Support of new optimizer in PostgreSQL v9.6, and integration with GpuScan for simple scan ③ PG-Strom: JOIN/GROUP BY Support • RAID-0/1区画に対するストライピングREAD / Striping READ on RAID-0/1 volumes ④ NVMe-Strom driver: RAID-0/1 support • テスト、テスト、テスト、デバッグ / Test, Test, Test, Debug ⑤ 品質改善・安定化 / Quality improvement and stabilization ⑥ PG-Strom v2.0!! (2017/2Q~3Q) いまココ!!
  • 21. The PG-Strom Project PG-Strom v2.0のターゲット / Target on PG-Strom v2.0 PGconf.ASIA2017 - LT / Performing SQL with SSD-to-GPU P2P Transfer21 PCI-E x8 5.0GB/s PCI-E PCI-E x16 ~10GB/s シングルノードで最大20GB/sのデータ処理能力を目指す (towards 20GB/s data processing capability per node) Dual NVMe-SSD +RAID0/1対応 10GB/sのスループットで SSDブロックをGPUへロード 数千コアによる GPU並列処理 PCI-E PCI-E x8 5.0GB/s PCI-E x8 5.0GB/s PCI-E x16 ~10GB/s PCI-E x8 5.0GB/s Dual NVMe-SSD +RAID0/1 Support Loading SSD blocks to GPU with 10GB/s throughput GPU Parallels by thousands cores