SlideShare a Scribd company logo
1 of 34
Download to read offline
不揮発 WAL バッファ
2020/05/21 // 第13回 PostgreSQL アンカンファレンス
毛受 崇 (NTT ソフトウェアイノベーションセンタ)
• 名前・所属・連絡先
– 毛受 崇 (めんじょう たかし)
– NTT ソフトウェアイノベーションセンタ
– takashi.menjou.vg@hco.ntt.co.jp
• お仕事
– 以前:分散ブロックストレージの研究開発 (Sheepdog)
– 現在:PMEM (後述) を活用するソフトウェア技術の研究開発
• PostgreSQL 歴3年
– 2017年:PostgreSQL Conference Japan 2017
– 2018年:PGCon 2018
2
自己紹介
3
今年1月に投稿したパッチの話をします
https://www.postgresql.org/message-id/002f01d5d28d$23c01430$6b403c90$@hco.ntt.co.jp_1
Persistent memory
(PMEM)
4
今日のキーワード
• DIMM スロットに挿して使う不揮発なメモリ
– 電源断の前後で内容が保持される
– CPU がバイト単位でロード・ストアできる
– ディスクと比べて高速でランダムアクセスに強い
– 既に製品も出ている
• NVDIMM-N 規格のもの (同容量の DRAM と NAND Flash を搭載)
• Intel Optane DC Persistent Memory Module (DCPMM) (3D XPoint 技術を
使用しており、記憶素子自体が永続性を持つ)
• プログラミングパラダイムの変革
– 「永続的なデバイスはメモリと比べて遅い」という前提が崩れる
– メモリにアクセスするようにデータを永続化する利用技術が必要
5
Persistent memory (PMEM)
• Filesystem DAX
– OS とファイルシステムの機能
• Linux では今のところ ext2, ext4, xfs がサポート
– 実データの読み書き時にページキャッシュをバイパスする
• メタデータの読み書きは従来と同様にページキャッシュを経由する
– アプリケーションの変更なく PMEM を高速に利用できる
• Persistent Memory Development Kit (PMDK)
– ユーザ空間ライブラリ
• Intel 主導で OSS として開発が進んでいる†
– Filesystem DAX 上のメモリマップドファイルに対する操作を提供する
– 実データの読み書きはカーネルをバイパスしてさらに高速になるが、
アプリケーションの変更が必要
6
PMEM を高速に使うための技術
† https://pmem.io/pmdk/
7
PMEM を高速に使うための技術 (続き)
PMEM
メモリマップド
ファイル
:ユーザ実データの流れ
「メモリのように」使う
アプリケーション
ページキャッシュ
ブロックデバイス
PMDK
ファイルシステム ファイルシステム (DAX)
ユ
ー
ザ
空
間
カ
ー
ネ
ル
空
間
ペナルティ!
ペナルティ!
read/write
システムコール
read/write
システムコール メモリコピー
HDDやSSDなどと同じように使う
• PGCon 2018 では I/O 処理に PMDK を適用した
– 対象は WAL と Relation
– open と read/write をメモリマップとメモリコピーに置換え
– DRAM と PMEM に同じデータが重複
• その後、PG の設計に踏み込んだ適用を検討してきた
– DRAM 上のデータ構造を PMEM 上に置いて操作できないか
8
PGCon 2018 とその後
不揮発 WAL バッファ
(Non-volatile WAL buffer)
• PMEM 上に置いた WAL バッファで永続化を完結させる
– セグメントファイルへの出力は原則として行わない
– バッファは十分に大きなサイズとする (数GB~)
• コピー回数が2回から1回に減り、性能改善が期待できる
9
不揮発 WAL バッファ
DRAM
共有バッファ
PMEM
表 索引
WAL バッファ
セグ
メント
PMEM にコピー
D
R
A
M
に
コ
ピ
ー
DRAM
共有バッファ
PMEM
表 索引
不揮発 WAL
バッファ
P
M
E
M
に
コ
ピ
ー
• PGCon 2016 で堀川隆さんが発表された Non-volatile Memory
Logging[1] 版の PostgreSQL[2] をベースとした
– PMEM を模擬する特別なカーネルモジュールあり
– PMEM 上の WAL バッファ (~80MB) へコピー後、ディスクへ非同期に書出し
• DAX Filesystem と PMDK を使用して実装した
– カーネルモジュールの代わりに、Filesystem DAX 上の指定ファイルを不揮発
WAL バッファとしてメモリマップ
– コミット、チェックポイント、クラッシュリカバリの処理を改造
• WAL セグメントファイルを使う機能の互換性はなるべく維持している
– クラッシュリカバリ
– WAL アーカイブと PITR (タイムラインIDの処理はまだ怪しい…)
– (ストリーミングレプリケーションは現在対応中…)
10
実装
[1] https://www.pgcon.org/2016/schedule/track/Performance/945.en.html
[2] https://github.com/meistervonperf/postgresql-NVM-logging
性能測定
11
• 不揮発 WAL バッファの性能優位性を評価する
• 比較対象は既存の PostgreSQL とする
– 無改造の PostgreSQL に加えて、PGCon 2018 で発表した改造のパッ
チを適用したものも含む
• PMEM として NVDIMM-N と Intel DCPM を用いる
– 注意:各 PMEM の搭載マシンは別々である
• pgbench のスループットおよび平均レイテンシを指標とする
– 全てのテーブルに対して、測定前に pg_prewarm を実施
– クライアントの並列度を変化させて測定 (接続数 c, スレッド数 j)
– 30分×3回測定してスループットが中央値となった回の結果を採用
性能測定 – 概要
12
名称 PostgreSQL
の改造
WAL の
永続化
WAL を永続化
するデバイスと
ファイルシステム
補足説明
Original なし する PMEM
+ ext4 DAX
ベースライン
PGCon
2018
PGCon
2018 版*1
する PMEM
+ ext4 DAX
Non-volatile
WAL buffer
不揮発 WAL
バッファ*2
する PMEM
+ ext4 DAX
UNLOGGED
+ async
なし しない*3
PMEM
+ ext4 DAX
性能限界の
参考値
13
性能測定 – 比較対象
*1: https://www.postgresql.org/message-id/C20D38E97BCB33DAD59E3A1@lab.ntt.co.jp
*2: https://www.postgresql.org/message-id/002f01d5d28d$23c01430$6b403c90$@hco.ntt.co.jp_1
*3: UNLOGGED テーブルと非同期コミットを使用
postgres
PMEM
PCIe
SSD
14
性能測定 – 構成
pgbench
WAL
Seg.
Shared
buffer
WAL
buffer
Relation
postgres
PMEM
PCIe
SSD
WAL
Seg.
Shared
buffer
WAL
buffer
Relation
postgres
PMEM
PCIe
SSD
Shared
buffer
Relation
WAL buffer
NV
WAL
(mmap) (mmap)
write
memcpy
memcpy
memcpy memcpy
pgbench pgbench
Original ※ PGCon 2018 Non-volatile
WAL buffer
NUMAノード1
NUMAノード0
※ "UNLOGGED + async" の構成は "Original (PMEM)" と同じだが、WAL の永続化有無が異なる。
2ソケットで 2
NUMA ノード
のマシン1台を
使用し、一方の
ノードでサーバ
を、他方でクラ
イアントを稼働。
ノードあたり18
コア。WALと
Relationの保存
先には別々のデ
バイスを使用。
HW/SW スペッ
クとコンフィグ
は巻末に。
15
性能測定 – 結果 (NVDIMM-N)
16
性能測定 – 結果 (DCPMM)
性能解析
17
• 不揮発 WAL バッファの効果のあらわれ方を明らかにする
– 特に、WAL の複製回数を削減した効果を確認する
• サーバプロセスの CPU 時間を関数ごとに解析する
– 解析には VTune を用いる
– 並列度は (c, j)=(36,18) とする
• 関数の中でも WAL の処理に注目する
– XLogInsert (WALバッファへのレコードのメモリコピー)
– XLogFlush (WALの永続化)
• pgbench で定量または定時の負荷をかける
– 定量:各クライアントが 67,500 トランザクションを実行 (t=67,500)
– 定時:実時間で30秒間実行 (T=30)
18
性能解析 – 概要
19
性能解析 – NVDIMM-N・定量 (1/3)
20
性能解析 – NVDIMM-N・定量 (2/3)
21
性能解析 – NVDIMM-N・定量 (3/3)
22
性能解析 – NVDIMM-N・定時
23
性能解析 – DCPMM・定量 (1/3)
24
性能解析 – DCPMM・定量 (2/3)
25
性能解析 – DCPMM・定量 (3/3)
26
性能解析 – DCPMM・定時
• スループットとレイテンシの両方を改善した
– 性能限界の参考値 (UNLOGGED + async) に近づいた
• WAL 処理時間の短縮により、レイテンシを改善した
– セグメントファイルへの書出しを削減
– 書出しにともなうロック処理も削減
• クエリ読込みの時間が増え、スループットが改善した
– これまで WAL 処理に要していた時間を充てられるようになった
• ホットスポットが WAL 処理以外に移りつつある?
27
結果と考察
• パッチの使い方
– まずはパッチに含まれる README を読んでみてください
– 実物の PMEM がなくても DRAM でエミュレーションできます
• パッチの internal
28
今日話せなかったこと (またの機会に話したいこと)
測定環境
29
Item Value
System HPE ProLiant DL380 Gen10
CPU Intel Xeon Gold 6154 x2 sockets
DRAM DDR4 2666MHz 192GiB†/socket x2 sockets
NVDIMM-N DDR4 2666MHz 96GiB‡/socket x2 sockets
Optane SSD DC P4800X Series SSDPED1K750GA
30
Hardware (NVDIMM-N server)
† 32 GB/channel x 6 channels/socket
‡ 16 GB/channel x 6 channels/socket; interleaving enabled
Item Value
System HPE ProLiant DL380 Gen10
CPU Intel Xeon Gold 6240M x2 sockets
DRAM DDR4 2933MHz 192GiB†/socket x2 sockets
DCPMM DDR4 2666MHz 1.5TiB‡/socket x2 sockets
Optane SSD DC P4800X Series SSDPED1K750GA
31
Hardware (DCPMM server)
† 32 GB/channel x 6 channels/socket
‡ 256 GB/channel x 6 channels/socket; interleaving enabled
32
Software
Item Value
Distro Ubuntu 18.04
C compiler gcc 7.4.0
libc glibc 2.27
Linux kernel 5.4 (vanilla)
PMDK 1.7
PostgreSQL 12.0 (refs/tags/REL_12_0)
VTune 2019 Update 6 (build 602217)
Item Value
max_connections 300
shared_buffers 32GB
checkpoint_timeout 12min
checkpoint_completion_target 0.7
{max,min}_wal_size 80GB
random_page_cost 1.0
effective_cache_size 96GB
autovacuum_max_workers 4
autovacuum_freeze_max_age 2000000000 (2×109)
autovauum_vacuum_cost_limit 400
Scale factor (pgbench -i -s ...) 1000
Database connection Unix domain socket
Query mode (pgbench -M ...) prepared
33
Common PostgreSQL configuration
wal_sync_
method
synchronous_
commit
Use UNLOGGED table
(pgbench –i --unlogged-tables)
Original fdatasync on No
PGCon
2018
pmem_drain on No
Non-volatile
WAL buffer
fdatasync on No
UNLOGGED
+ async
fdatasync off Yes
34
Specific PostgreSQL configuration

More Related Content

What's hot

[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...Tomoya Hibi
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1Tomoya Hibi
 
NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07Tomoya Hibi
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Tomoya Hibi
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばYoshihiro Nakajima
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会Tomoya Hibi
 
QUICとNATと
QUICとNATとQUICとNATと
QUICとNATとYuya Rin
 
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介Takeshi Take
 

What's hot (20)

[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
Troveコミュニティ動向
Troveコミュニティ動向Troveコミュニティ動向
Troveコミュニティ動向
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
OpsからみたOpenStack Summit
OpsからみたOpenStack SummitOpsからみたOpenStack Summit
OpsからみたOpenStack Summit
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
Lagopus Router
Lagopus RouterLagopus Router
Lagopus Router
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
 
Lagos running on small factor machine
Lagos running on small factor machineLagos running on small factor machine
Lagos running on small factor machine
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
Upstream University
Upstream UniversityUpstream University
Upstream University
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
Spring I/O 2018 報告会
Spring I/O 2018 報告会Spring I/O 2018 報告会
Spring I/O 2018 報告会
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会
 
QUICとNATと
QUICとNATとQUICとNATと
QUICとNATと
 
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
 

Similar to 不揮発WALバッファ

機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編Daiyu Hatakeyama
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速するKohei KaiGai
 
MemoryPlus Workshop
MemoryPlus WorkshopMemoryPlus Workshop
MemoryPlus WorkshopHitoshi Sato
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryAtsushi Koshiba
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介NTT Communications Technology Development
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向Shinya Takamaeda-Y
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄Yukio Saito
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...Insight Technology, Inc.
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料Shin-ya Koga
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータShinya Takamaeda-Y
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価Toshiaki Hishinuma
 

Similar to 不揮発WALバッファ (20)

機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
MemoryPlus Workshop
MemoryPlus WorkshopMemoryPlus Workshop
MemoryPlus Workshop
 
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent MemoryASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
ASPLOS2017: Building Durable Transactions with Decoupling for Persistent Memory
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
20130126 sc12-reading
20130126 sc12-reading20130126 sc12-reading
20130126 sc12-reading
 
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CCMSI計算科学技術特論A (2015) 第7回 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料
 
Cmc cmd slim
Cmc cmd slimCmc cmd slim
Cmc cmd slim
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価PEZY-SC2上における倍々精度Rgemmの実装と評価
PEZY-SC2上における倍々精度Rgemmの実装と評価
 

More from NTT Software Innovation Center

A Global Data Infrastructure for Data Sharing Between Businesses
A Global Data Infrastructure for Data Sharing Between BusinessesA Global Data Infrastructure for Data Sharing Between Businesses
A Global Data Infrastructure for Data Sharing Between BusinessesNTT Software Innovation Center
 
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤NTT Software Innovation Center
 
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤NTT Software Innovation Center
 
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...NTT Software Innovation Center
 
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
2-in-1 Cluster Integration: Batch and Interactive GPU Computing2-in-1 Cluster Integration: Batch and Interactive GPU Computing
2-in-1 Cluster Integration: Batch and Interactive GPU ComputingNTT Software Innovation Center
 
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
Hybrid Sourcing for Overcoming “Digital Cliff 2025”Hybrid Sourcing for Overcoming “Digital Cliff 2025”
Hybrid Sourcing for Overcoming “Digital Cliff 2025”NTT Software Innovation Center
 
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~NTT Software Innovation Center
 
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Network Implosion: Effective Model Compression for ResNets via Static Layer P...Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Network Implosion: Effective Model Compression for ResNets via Static Layer P...NTT Software Innovation Center
 
Why and how Edge Computing matters enterprise IT strategy
Why and how Edge Computing matters enterprise IT strategyWhy and how Edge Computing matters enterprise IT strategy
Why and how Edge Computing matters enterprise IT strategyNTT Software Innovation Center
 
外部キー制約を考慮した特徴量削減手法
外部キー制約を考慮した特徴量削減手法外部キー制約を考慮した特徴量削減手法
外部キー制約を考慮した特徴量削減手法NTT Software Innovation Center
 
デジタルサービスプラットフォーム実現に向けた技術課題
デジタルサービスプラットフォーム実現に向けた技術課題デジタルサービスプラットフォーム実現に向けた技術課題
デジタルサービスプラットフォーム実現に向けた技術課題NTT Software Innovation Center
 
Building images efficiently and securely on Kubernetes with BuildKit
Building images efficiently and securely on Kubernetes with BuildKitBuilding images efficiently and securely on Kubernetes with BuildKit
Building images efficiently and securely on Kubernetes with BuildKitNTT Software Innovation Center
 
Real-time spatiotemporal data utilization for future mobility services
Real-time spatiotemporal data utilization for future mobility servicesReal-time spatiotemporal data utilization for future mobility services
Real-time spatiotemporal data utilization for future mobility servicesNTT Software Innovation Center
 
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービスNTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービスNTT Software Innovation Center
 
Challenges for Implementing PMEM Aware Application with PMDK
Challenges for Implementing PMEM Aware Application with PMDKChallenges for Implementing PMEM Aware Application with PMDK
Challenges for Implementing PMEM Aware Application with PMDKNTT Software Innovation Center
 
RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...NTT Software Innovation Center
 

More from NTT Software Innovation Center (20)

A Global Data Infrastructure for Data Sharing Between Businesses
A Global Data Infrastructure for Data Sharing Between BusinessesA Global Data Infrastructure for Data Sharing Between Businesses
A Global Data Infrastructure for Data Sharing Between Businesses
 
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
 
企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤企業間データ流通のための国際データ基盤
企業間データ流通のための国際データ基盤
 
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
 
企業間データ流通のための国際基盤
企業間データ流通のための国際基盤企業間データ流通のための国際基盤
企業間データ流通のための国際基盤
 
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
Hybrid Computing Platform for Combinatorial Optimization with the Coherent Is...
 
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
2-in-1 Cluster Integration: Batch and Interactive GPU Computing2-in-1 Cluster Integration: Batch and Interactive GPU Computing
2-in-1 Cluster Integration: Batch and Interactive GPU Computing
 
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
Hybrid Sourcing for Overcoming “Digital Cliff 2025”Hybrid Sourcing for Overcoming “Digital Cliff 2025”
Hybrid Sourcing for Overcoming “Digital Cliff 2025”
 
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
データ分析をビジネスに活かす!データ創出・活用から、分析、課題解決までのDX時代のデータ活用事例のご紹介 ~不揃いのデータとの格闘~
 
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Network Implosion: Effective Model Compression for ResNets via Static Layer P...Network Implosion: Effective Model Compression for ResNets via Static Layer P...
Network Implosion: Effective Model Compression for ResNets via Static Layer P...
 
Why and how Edge Computing matters enterprise IT strategy
Why and how Edge Computing matters enterprise IT strategyWhy and how Edge Computing matters enterprise IT strategy
Why and how Edge Computing matters enterprise IT strategy
 
外部キー制約を考慮した特徴量削減手法
外部キー制約を考慮した特徴量削減手法外部キー制約を考慮した特徴量削減手法
外部キー制約を考慮した特徴量削減手法
 
デジタルサービスプラットフォーム実現に向けた技術課題
デジタルサービスプラットフォーム実現に向けた技術課題デジタルサービスプラットフォーム実現に向けた技術課題
デジタルサービスプラットフォーム実現に向けた技術課題
 
Building images efficiently and securely on Kubernetes with BuildKit
Building images efficiently and securely on Kubernetes with BuildKitBuilding images efficiently and securely on Kubernetes with BuildKit
Building images efficiently and securely on Kubernetes with BuildKit
 
Real-time spatiotemporal data utilization for future mobility services
Real-time spatiotemporal data utilization for future mobility servicesReal-time spatiotemporal data utilization for future mobility services
Real-time spatiotemporal data utilization for future mobility services
 
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
 
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービスNTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
NTTのR&Dを支えるNTTコミュニケーションズのIT基盤サービス
 
Challenges for Implementing PMEM Aware Application with PMDK
Challenges for Implementing PMEM Aware Application with PMDKChallenges for Implementing PMEM Aware Application with PMDK
Challenges for Implementing PMEM Aware Application with PMDK
 
RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...
 
Introducing PMDK into PostgreSQL
Introducing PMDK into PostgreSQLIntroducing PMDK into PostgreSQL
Introducing PMDK into PostgreSQL
 

不揮発WALバッファ

  • 1. 不揮発 WAL バッファ 2020/05/21 // 第13回 PostgreSQL アンカンファレンス 毛受 崇 (NTT ソフトウェアイノベーションセンタ)
  • 2. • 名前・所属・連絡先 – 毛受 崇 (めんじょう たかし) – NTT ソフトウェアイノベーションセンタ – takashi.menjou.vg@hco.ntt.co.jp • お仕事 – 以前:分散ブロックストレージの研究開発 (Sheepdog) – 現在:PMEM (後述) を活用するソフトウェア技術の研究開発 • PostgreSQL 歴3年 – 2017年:PostgreSQL Conference Japan 2017 – 2018年:PGCon 2018 2 自己紹介
  • 5. • DIMM スロットに挿して使う不揮発なメモリ – 電源断の前後で内容が保持される – CPU がバイト単位でロード・ストアできる – ディスクと比べて高速でランダムアクセスに強い – 既に製品も出ている • NVDIMM-N 規格のもの (同容量の DRAM と NAND Flash を搭載) • Intel Optane DC Persistent Memory Module (DCPMM) (3D XPoint 技術を 使用しており、記憶素子自体が永続性を持つ) • プログラミングパラダイムの変革 – 「永続的なデバイスはメモリと比べて遅い」という前提が崩れる – メモリにアクセスするようにデータを永続化する利用技術が必要 5 Persistent memory (PMEM)
  • 6. • Filesystem DAX – OS とファイルシステムの機能 • Linux では今のところ ext2, ext4, xfs がサポート – 実データの読み書き時にページキャッシュをバイパスする • メタデータの読み書きは従来と同様にページキャッシュを経由する – アプリケーションの変更なく PMEM を高速に利用できる • Persistent Memory Development Kit (PMDK) – ユーザ空間ライブラリ • Intel 主導で OSS として開発が進んでいる† – Filesystem DAX 上のメモリマップドファイルに対する操作を提供する – 実データの読み書きはカーネルをバイパスしてさらに高速になるが、 アプリケーションの変更が必要 6 PMEM を高速に使うための技術 † https://pmem.io/pmdk/
  • 7. 7 PMEM を高速に使うための技術 (続き) PMEM メモリマップド ファイル :ユーザ実データの流れ 「メモリのように」使う アプリケーション ページキャッシュ ブロックデバイス PMDK ファイルシステム ファイルシステム (DAX) ユ ー ザ 空 間 カ ー ネ ル 空 間 ペナルティ! ペナルティ! read/write システムコール read/write システムコール メモリコピー HDDやSSDなどと同じように使う
  • 8. • PGCon 2018 では I/O 処理に PMDK を適用した – 対象は WAL と Relation – open と read/write をメモリマップとメモリコピーに置換え – DRAM と PMEM に同じデータが重複 • その後、PG の設計に踏み込んだ適用を検討してきた – DRAM 上のデータ構造を PMEM 上に置いて操作できないか 8 PGCon 2018 とその後 不揮発 WAL バッファ (Non-volatile WAL buffer)
  • 9. • PMEM 上に置いた WAL バッファで永続化を完結させる – セグメントファイルへの出力は原則として行わない – バッファは十分に大きなサイズとする (数GB~) • コピー回数が2回から1回に減り、性能改善が期待できる 9 不揮発 WAL バッファ DRAM 共有バッファ PMEM 表 索引 WAL バッファ セグ メント PMEM にコピー D R A M に コ ピ ー DRAM 共有バッファ PMEM 表 索引 不揮発 WAL バッファ P M E M に コ ピ ー
  • 10. • PGCon 2016 で堀川隆さんが発表された Non-volatile Memory Logging[1] 版の PostgreSQL[2] をベースとした – PMEM を模擬する特別なカーネルモジュールあり – PMEM 上の WAL バッファ (~80MB) へコピー後、ディスクへ非同期に書出し • DAX Filesystem と PMDK を使用して実装した – カーネルモジュールの代わりに、Filesystem DAX 上の指定ファイルを不揮発 WAL バッファとしてメモリマップ – コミット、チェックポイント、クラッシュリカバリの処理を改造 • WAL セグメントファイルを使う機能の互換性はなるべく維持している – クラッシュリカバリ – WAL アーカイブと PITR (タイムラインIDの処理はまだ怪しい…) – (ストリーミングレプリケーションは現在対応中…) 10 実装 [1] https://www.pgcon.org/2016/schedule/track/Performance/945.en.html [2] https://github.com/meistervonperf/postgresql-NVM-logging
  • 12. • 不揮発 WAL バッファの性能優位性を評価する • 比較対象は既存の PostgreSQL とする – 無改造の PostgreSQL に加えて、PGCon 2018 で発表した改造のパッ チを適用したものも含む • PMEM として NVDIMM-N と Intel DCPM を用いる – 注意:各 PMEM の搭載マシンは別々である • pgbench のスループットおよび平均レイテンシを指標とする – 全てのテーブルに対して、測定前に pg_prewarm を実施 – クライアントの並列度を変化させて測定 (接続数 c, スレッド数 j) – 30分×3回測定してスループットが中央値となった回の結果を採用 性能測定 – 概要 12
  • 13. 名称 PostgreSQL の改造 WAL の 永続化 WAL を永続化 するデバイスと ファイルシステム 補足説明 Original なし する PMEM + ext4 DAX ベースライン PGCon 2018 PGCon 2018 版*1 する PMEM + ext4 DAX Non-volatile WAL buffer 不揮発 WAL バッファ*2 する PMEM + ext4 DAX UNLOGGED + async なし しない*3 PMEM + ext4 DAX 性能限界の 参考値 13 性能測定 – 比較対象 *1: https://www.postgresql.org/message-id/C20D38E97BCB33DAD59E3A1@lab.ntt.co.jp *2: https://www.postgresql.org/message-id/002f01d5d28d$23c01430$6b403c90$@hco.ntt.co.jp_1 *3: UNLOGGED テーブルと非同期コミットを使用
  • 14. postgres PMEM PCIe SSD 14 性能測定 – 構成 pgbench WAL Seg. Shared buffer WAL buffer Relation postgres PMEM PCIe SSD WAL Seg. Shared buffer WAL buffer Relation postgres PMEM PCIe SSD Shared buffer Relation WAL buffer NV WAL (mmap) (mmap) write memcpy memcpy memcpy memcpy pgbench pgbench Original ※ PGCon 2018 Non-volatile WAL buffer NUMAノード1 NUMAノード0 ※ "UNLOGGED + async" の構成は "Original (PMEM)" と同じだが、WAL の永続化有無が異なる。 2ソケットで 2 NUMA ノード のマシン1台を 使用し、一方の ノードでサーバ を、他方でクラ イアントを稼働。 ノードあたり18 コア。WALと Relationの保存 先には別々のデ バイスを使用。 HW/SW スペッ クとコンフィグ は巻末に。
  • 18. • 不揮発 WAL バッファの効果のあらわれ方を明らかにする – 特に、WAL の複製回数を削減した効果を確認する • サーバプロセスの CPU 時間を関数ごとに解析する – 解析には VTune を用いる – 並列度は (c, j)=(36,18) とする • 関数の中でも WAL の処理に注目する – XLogInsert (WALバッファへのレコードのメモリコピー) – XLogFlush (WALの永続化) • pgbench で定量または定時の負荷をかける – 定量:各クライアントが 67,500 トランザクションを実行 (t=67,500) – 定時:実時間で30秒間実行 (T=30) 18 性能解析 – 概要
  • 27. • スループットとレイテンシの両方を改善した – 性能限界の参考値 (UNLOGGED + async) に近づいた • WAL 処理時間の短縮により、レイテンシを改善した – セグメントファイルへの書出しを削減 – 書出しにともなうロック処理も削減 • クエリ読込みの時間が増え、スループットが改善した – これまで WAL 処理に要していた時間を充てられるようになった • ホットスポットが WAL 処理以外に移りつつある? 27 結果と考察
  • 28. • パッチの使い方 – まずはパッチに含まれる README を読んでみてください – 実物の PMEM がなくても DRAM でエミュレーションできます • パッチの internal 28 今日話せなかったこと (またの機会に話したいこと)
  • 30. Item Value System HPE ProLiant DL380 Gen10 CPU Intel Xeon Gold 6154 x2 sockets DRAM DDR4 2666MHz 192GiB†/socket x2 sockets NVDIMM-N DDR4 2666MHz 96GiB‡/socket x2 sockets Optane SSD DC P4800X Series SSDPED1K750GA 30 Hardware (NVDIMM-N server) † 32 GB/channel x 6 channels/socket ‡ 16 GB/channel x 6 channels/socket; interleaving enabled
  • 31. Item Value System HPE ProLiant DL380 Gen10 CPU Intel Xeon Gold 6240M x2 sockets DRAM DDR4 2933MHz 192GiB†/socket x2 sockets DCPMM DDR4 2666MHz 1.5TiB‡/socket x2 sockets Optane SSD DC P4800X Series SSDPED1K750GA 31 Hardware (DCPMM server) † 32 GB/channel x 6 channels/socket ‡ 256 GB/channel x 6 channels/socket; interleaving enabled
  • 32. 32 Software Item Value Distro Ubuntu 18.04 C compiler gcc 7.4.0 libc glibc 2.27 Linux kernel 5.4 (vanilla) PMDK 1.7 PostgreSQL 12.0 (refs/tags/REL_12_0) VTune 2019 Update 6 (build 602217)
  • 33. Item Value max_connections 300 shared_buffers 32GB checkpoint_timeout 12min checkpoint_completion_target 0.7 {max,min}_wal_size 80GB random_page_cost 1.0 effective_cache_size 96GB autovacuum_max_workers 4 autovacuum_freeze_max_age 2000000000 (2×109) autovauum_vacuum_cost_limit 400 Scale factor (pgbench -i -s ...) 1000 Database connection Unix domain socket Query mode (pgbench -M ...) prepared 33 Common PostgreSQL configuration
  • 34. wal_sync_ method synchronous_ commit Use UNLOGGED table (pgbench –i --unlogged-tables) Original fdatasync on No PGCon 2018 pmem_drain on No Non-volatile WAL buffer fdatasync on No UNLOGGED + async fdatasync off Yes 34 Specific PostgreSQL configuration