SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Se Kwon Lee et al, “RECIPE:
Converting Concurrent DRAM
Indexes to Persistent-Memory
Indexes”
SOSP 2019
データベースコア輪読会、第2回、2020/04/21
東京⼤学⼤学院情報理⼯学研究科 吉岡弘隆
hyoshiok@tkl.iis.u-tokyo.ac.jp @hyoshiok
1
概要
• DRAM IndexをPersistent-Memory (PM 不揮発性メモリ) Index
に変換することを提案している
• DRAM IndexをPM Indexの変換する時の条件を⽰し、事例とし
て次のデータ構造をPMを利⽤したものに変換した。B+ tree、
Trie、radix tree、Hash
• 変換は30⾏から200⾏で⼩規模。Intel DC Persistent Memory
で評価した。その結果、最⼤で5.2倍の性能向上を確認した。
2
はじめに
• Introduction
• Background
• Motivation
• The RECIPE Approach
• Testing Crash recovery of PM
• Case Studies
• Evaluation
• Discussion
• Related Work
• conclusion
3
Introduction
• Persistent Memory (PM、不揮発性メモリ)
• Intel DC Persistent Memory, 2019 April
• 様々な研究がされている
• FAST & FAIR, Level Hashing, CCeH, NV-Tree, wB+Tree, WOART, FPTree
• PM向けのindexの設計は複雑である。(バグの温床)
• RECIPE; DRAM indexが正しければ、RECIPEアプローチで正しく変換
したものも正しい。
• 例えば、以前に挿⼊したキーの値が失われていないならば、検索はそれを返す。
• consistencyはcrash recovery と関連性が深い
• DRAM indexをPM indexに変換するのはPM indexをゼロから作るより
複雑ではない。障害回復⽤の新規のアルゴリズムが必要となるわけで
はない。
4
RECIPEによるPM Index構築の利点
• DRAM indexを変更するので複雑ではない
• もとのDRAM indexが⾼性能ならば、その性能をそのまま受け
継ぐ
• 5つのDRAM indexをPM indexに変換してみた
5
DRAM
index
Data structure RECIPE
condition
lines lines core lines
modified
CLHT Hash Table #1 12.6K 2.8K 30(1%)
HOT Trie #1 36K 2K 38(2%)
BwTree B+Tree #2 13K 5.2K 85(1.6%)
ART Radix Tree #3 4.5K 1.5K 52(3.4%)
Masstree B+Tree & Trie #3 25K 2.2K 200(9%)
Background
• DRAM Indexの基本操作
• insert(key, value)
• update(key, value)
• lookup(key)
• range_query(key1, key2)
• delete(key)
• Structural Modification Operation (SMO)
• データそのものの変更ではなくて、索引の作成、更新など
• 性能
• 正しさ
6
Concurrency, Isolation
• ⼀貫性をたもつためにblocking(ロックなど)、non blocking
の⽅式がある。
• PM
• DRAMとstorageの中間の性質を持つ
• intel x86の場合8 byteの単位で書く、 “mfence”は格納の順番を保証する
• x86にはキャッシュフラッシュ⽤に”clflush”, “clwb”, “clflushopt”命令がある
• Crash Consistent PM Index
• PM indexはDRAMより⼤容量化できる。レイテンシーもDRAM程度
• DRAMはクラッシュ(電源断、カーネルクラッシュなど)からのリカ
バリが必要。PMは不必要ないしは軽量。多くのPM index が提案され
ている。
• 電源断からの復帰。フラッシュをしておく
7
補⾜資料、clflush vs clflushopt
8
Intel 64 and IA-32 Architectures Optimization Reference Manual,
Chapter 8, Order Number: 248966-042b September 2019
Motivation & The RECIPE Approach
• 既存のPM Indexとの⽐較
• FAST & FAIR
• PM B+Tree
• 設計と実装にバグを発⾒した
• 性能も低かった
• CCEH
• PM Hash table
• 2つのバグを発⾒した
• PM Indexの設計は難しい。
• principled design (原理原則に基づいた設計)
• テスト
9
The RECIPE Approach
• 障害⼀貫性を持った原理原則に基づいた設計
• もしDRAM indexの設計が正しいのならば、それを変換したPM index
も正しい。
• 条件1
• アトミックな格納で更新する
• PMへの変更。キャッシュ・フラッシュ、メモリフェンス命令を挿⼊
• すべてのダーティーデータはPMにフラッシュされる
• 条件2
• writerはinconsistencyを修正する(writerがinconsistencyを発⾒した場
合)
• reader/writerともにnon-blockingの場合
10
The RECIPE Approach
• 条件3
• writerはinconsistencyを修正しない
• readerがnon-blockingでwriterがblockingの場合
• PMへの変更。writerがinconsistencyを発⾒できる機構を導⼊する。
inconsistencyを修正する補助機能(helper mechanism)を導⼊する
11
PM Indexのクラッシュリカバリテスト
• クラシュリカバリテストは下記をテストする
• ⼀貫性のある状態に復元しているか
• 永続性のあるデータを消失していないか
• どの段階でクラッシュさせるか
• テスト空間が膨⼤になるので⼯夫が必要
• 少数のアトミックな格納に注⽬
• 各アトミックな格納後にクラッシュさせてテストする
• 他のPMテストツールはランダムにクラッシュさせている
• ⼀貫性のテスト
• 負荷をかける
• PMリカバリ
• 結果確認
12
事例研究
DRAM index reader writer Non-SMO SMO
CLHT Non-Blocking Blocking #1 #1
HOT Non-Blocking Blocking #1 #1
BwTree Non-Blocking Non-Blocking #1 #2
ART Non-Blocking Blocking #1 #3
Masstree Non-Blocking Blocking #1 #3
13
Table 2. Categorizing conversion actions
Trie: Height Optimized Trie (HOT)
• 空間効率性に優れた trie
• Non-SMO
• copy-on-write
• 挿⼊削除はアトミック。親のポインタを交換することによって原⼦性
を確保
• SMO
• prefixビットがミスマッチした時のツールがある
• PMへの変更法
• #1、アトミックなポインタの交換。store命令とフラッシュ命令で正し
さが保証される
• P-HOT、38⾏変更
14
Hash Table: Cache-Line Hash Table CLHT
• キャッシュフレンドリーなハッシュテーブル。各バケットは 64
bytes。non-blocking readerのためアトミックは key-value を
持つ
• Non-SMO
• SMO
• PMへの変更
• HOT同様に、挿⼊、削除、リハッシュは単⼀のアトミック store
• 30⾏変更(全体2.8K)
15
B+ TREE: BwTree
• B+Treeの拡張
• Non-SMO
• SMO
• PMへの変更
• キャッシュへのフラッシュとメモリフェンス
• 85⾏変更(全体5.2K)
16
Radix Tree: Adaptive Radix Tree (ART)
• Radix Treeの実装
• Non-SMO
• SMO
• PMへの変更
• Condition #1
• 52⾏変更(全体1.5K)
17
Hybrid Index: Masstree
• キャッシュフレンドリーなTrieとB+treeの拡張
• Non-SMO
• SMO
• PMへの変更
• Condition #3
• 200⾏変更(全体2.2K)
18
評価
• 実験環境
• Intel Optane DC Persistent Memory Module (DCPMM), 768GB
• DRAM 375GB
• 2 socket, 96 core machine (CPU型番は不明)
• 32MB Last Level Cache (LLC)
• Linux Kernel 4.17, Fedora
• Filesystem, ext4 DAX, App Direct mode
• NUMA node で single socketに pin して計測
• フラッシュは clwb を利⽤
• libvmmaloc library, PMDKを利⽤
• perfを利⽤してハードウェアイベントを計測
• workload は YCSB (Yahoo! Cloud Serving Benchmark)
19
Ordered Index
20
21
22
関連研究
• 過去5年間、15件のPM indexが提案されている
• 3件、open source
• FAST & FAIR, CCEH, Level Hashing
• RECIPEは principled approach (他はad hoc)
• testing
• ランダムないしは虱潰し型のテスト
• RECIPEは効率的で強⼒。
23
おわりに
• https://github.com/utsaslab/RECIPE
• 通常のデータ構造をPM対応にするメソッドについて⾔及し、
実際に変更をして、その効果を⽰した。
• 本研究に従って、既存のB+Treeの実装やKVS実装に⼿を⼊れ
てみたくなった。
• 他者の研究についてもオープンソースの場合、深堀りできる。
ベンチマークを取るだけでなく、バグの発⾒などもするので貢
献度は⾼いと思った。先⾏研究が丸裸になるイメージだ。
24

Mais conteúdo relacionado

Semelhante a Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory Indexes. "

Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素Arichika TANIGUCHI
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなしOonishi Takaaki
 
Windows Server 2019 の Hyper-Converged Infrastructure (HCI)
Windows Server 2019 の Hyper-Converged Infrastructure (HCI) Windows Server 2019 の Hyper-Converged Infrastructure (HCI)
Windows Server 2019 の Hyper-Converged Infrastructure (HCI) Hiroshi Matsumoto
 
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Web Services Japan
 
Awamoto master thesis
Awamoto master thesisAwamoto master thesis
Awamoto master thesispflab
 
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...Insight Technology, Inc.
 
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~griddb
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)Masayuki Kanou
 
[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)
[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)
[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)Insight Technology, Inc.
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodbRyuji Tamagawa
 
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」VirtualTech Japan Inc.
 
ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較
ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較
ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較griddb
 
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKSDeep Learning JP
 
Data Center As A Computer 2章前半
Data Center As A Computer 2章前半Data Center As A Computer 2章前半
Data Center As A Computer 2章前半Akinori YOSHIDA
 
DynamoDBを利用したKPI保存システム
DynamoDBを利用したKPI保存システムDynamoDBを利用したKPI保存システム
DynamoDBを利用したKPI保存システムgree_tech
 
Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19Keisuke Suzuki
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編Takekazu Omi
 
第2回Web技術勉強会 webパフォーマンス改善編
第2回Web技術勉強会 webパフォーマンス改善編第2回Web技術勉強会 webパフォーマンス改善編
第2回Web技術勉強会 webパフォーマンス改善編tzm_freedom
 

Semelhante a Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory Indexes. " (20)

Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
Windows Server 2019 の Hyper-Converged Infrastructure (HCI)
Windows Server 2019 の Hyper-Converged Infrastructure (HCI) Windows Server 2019 の Hyper-Converged Infrastructure (HCI)
Windows Server 2019 の Hyper-Converged Infrastructure (HCI)
 
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)
 
Awamoto master thesis
Awamoto master thesisAwamoto master thesis
Awamoto master thesis
 
HBaseCon 2012 参加レポート
HBaseCon 2012 参加レポートHBaseCon 2012 参加レポート
HBaseCon 2012 参加レポート
 
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
 
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
 
[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)
[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)
[INSIGHT OUT 2011] C27 今こそBCPを考える ~コスト・要件に応じたデータベースのディザスタ・リカバリを提案しよう!~(kishida)
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodb
 
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
仮想化専門コンサルタントが教える「成功する仮想化導入のポイント」
 
ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較
ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較
ビッグデータ×IoT時代のデータベースのアーキテクチャとメカニズムの比較
 
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
 
20150513 legobease
20150513 legobease20150513 legobease
20150513 legobease
 
Data Center As A Computer 2章前半
Data Center As A Computer 2章前半Data Center As A Computer 2章前半
Data Center As A Computer 2章前半
 
DynamoDBを利用したKPI保存システム
DynamoDBを利用したKPI保存システムDynamoDBを利用したKPI保存システム
DynamoDBを利用したKPI保存システム
 
Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19Fundamentals of Relational Database Management Systems chapter19
Fundamentals of Relational Database Management Systems chapter19
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
 
第2回Web技術勉強会 webパフォーマンス改善編
第2回Web技術勉強会 webパフォーマンス改善編第2回Web技術勉強会 webパフォーマンス改善編
第2回Web技術勉強会 webパフォーマンス改善編
 

Mais de Hiro Yoshioka

Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活Hiro Yoshioka
 
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」Hiro Yoshioka
 
不揮発性メモリ(NVM)とはなにか
不揮発性メモリ(NVM)とはなにか不揮発性メモリ(NVM)とはなにか
不揮発性メモリ(NVM)とはなにかHiro Yoshioka
 
続・人生100年時代の学び方
続・人生100年時代の学び方続・人生100年時代の学び方
続・人生100年時代の学び方Hiro Yoshioka
 
人生100年時代における学び方 定年後の学生生活
人生100年時代における学び方 定年後の学生生活人生100年時代における学び方 定年後の学生生活
人生100年時代における学び方 定年後の学生生活Hiro Yoshioka
 
人生100年時代の学び方、脳には可塑性がある
人生100年時代の学び方、脳には可塑性がある人生100年時代の学び方、脳には可塑性がある
人生100年時代の学び方、脳には可塑性があるHiro Yoshioka
 
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7Hiro Yoshioka
 
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演Hiro Yoshioka
 
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】Hiro Yoshioka
 
未経験プログラマがコボルコンパイラを作った話 #compiler_study
未経験プログラマがコボルコンパイラを作った話 #compiler_study未経験プログラマがコボルコンパイラを作った話 #compiler_study
未経験プログラマがコボルコンパイラを作った話 #compiler_studyHiro Yoshioka
 
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12Hiro Yoshioka
 
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
海外から見た東京 〜人生100年時代の働き方〜 #efsta56海外から見た東京 〜人生100年時代の働き方〜 #efsta56
海外から見た東京 〜人生100年時代の働き方〜 #efsta56Hiro Yoshioka
 
理科系の作文技術
理科系の作文技術理科系の作文技術
理科系の作文技術Hiro Yoshioka
 
Agile Software Development advanced course (PBL) at AIIT, 2015
Agile Software Development advanced course (PBL) at AIIT, 2015Agile Software Development advanced course (PBL) at AIIT, 2015
Agile Software Development advanced course (PBL) at AIIT, 2015Hiro Yoshioka
 
質問される力 #TechGirls
質問される力 #TechGirls質問される力 #TechGirls
質問される力 #TechGirlsHiro Yoshioka
 
Oracle vs Google API 著作権裁判を考える
Oracle vs Google API 著作権裁判を考えるOracle vs Google API 著作権裁判を考える
Oracle vs Google API 著作権裁判を考えるHiro Yoshioka
 
Using oss at an internet company and hacker culture
Using oss at an internet company and hacker cultureUsing oss at an internet company and hacker culture
Using oss at an internet company and hacker cultureHiro Yoshioka
 
Project Based Learning using by PaaS
Project Based Learning using by PaaSProject Based Learning using by PaaS
Project Based Learning using by PaaSHiro Yoshioka
 
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
IT勉強会 Anatomy of IT Study groups, seminars, conferences in JapanIT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
IT勉強会 Anatomy of IT Study groups, seminars, conferences in JapanHiro Yoshioka
 

Mais de Hiro Yoshioka (20)

Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
 
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
 
不揮発性メモリ(NVM)とはなにか
不揮発性メモリ(NVM)とはなにか不揮発性メモリ(NVM)とはなにか
不揮発性メモリ(NVM)とはなにか
 
続・人生100年時代の学び方
続・人生100年時代の学び方続・人生100年時代の学び方
続・人生100年時代の学び方
 
人生100年時代における学び方 定年後の学生生活
人生100年時代における学び方 定年後の学生生活人生100年時代における学び方 定年後の学生生活
人生100年時代における学び方 定年後の学生生活
 
人生100年時代の学び方、脳には可塑性がある
人生100年時代の学び方、脳には可塑性がある人生100年時代の学び方、脳には可塑性がある
人生100年時代の学び方、脳には可塑性がある
 
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
 
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
 
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
 
未経験プログラマがコボルコンパイラを作った話 #compiler_study
未経験プログラマがコボルコンパイラを作った話 #compiler_study未経験プログラマがコボルコンパイラを作った話 #compiler_study
未経験プログラマがコボルコンパイラを作った話 #compiler_study
 
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
 
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
海外から見た東京 〜人生100年時代の働き方〜 #efsta56海外から見た東京 〜人生100年時代の働き方〜 #efsta56
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
 
理科系の作文技術
理科系の作文技術理科系の作文技術
理科系の作文技術
 
Agile Software Development advanced course (PBL) at AIIT, 2015
Agile Software Development advanced course (PBL) at AIIT, 2015Agile Software Development advanced course (PBL) at AIIT, 2015
Agile Software Development advanced course (PBL) at AIIT, 2015
 
質問される力 #TechGirls
質問される力 #TechGirls質問される力 #TechGirls
質問される力 #TechGirls
 
Oracle vs Google API 著作権裁判を考える
Oracle vs Google API 著作権裁判を考えるOracle vs Google API 著作権裁判を考える
Oracle vs Google API 著作権裁判を考える
 
Using oss at an internet company and hacker culture
Using oss at an internet company and hacker cultureUsing oss at an internet company and hacker culture
Using oss at an internet company and hacker culture
 
Be Hacker
Be HackerBe Hacker
Be Hacker
 
Project Based Learning using by PaaS
Project Based Learning using by PaaSProject Based Learning using by PaaS
Project Based Learning using by PaaS
 
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
IT勉強会 Anatomy of IT Study groups, seminars, conferences in JapanIT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
 

Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory Indexes. "

  • 1. Se Kwon Lee et al, “RECIPE: Converting Concurrent DRAM Indexes to Persistent-Memory Indexes” SOSP 2019 データベースコア輪読会、第2回、2020/04/21 東京⼤学⼤学院情報理⼯学研究科 吉岡弘隆 hyoshiok@tkl.iis.u-tokyo.ac.jp @hyoshiok 1
  • 2. 概要 • DRAM IndexをPersistent-Memory (PM 不揮発性メモリ) Index に変換することを提案している • DRAM IndexをPM Indexの変換する時の条件を⽰し、事例とし て次のデータ構造をPMを利⽤したものに変換した。B+ tree、 Trie、radix tree、Hash • 変換は30⾏から200⾏で⼩規模。Intel DC Persistent Memory で評価した。その結果、最⼤で5.2倍の性能向上を確認した。 2
  • 3. はじめに • Introduction • Background • Motivation • The RECIPE Approach • Testing Crash recovery of PM • Case Studies • Evaluation • Discussion • Related Work • conclusion 3
  • 4. Introduction • Persistent Memory (PM、不揮発性メモリ) • Intel DC Persistent Memory, 2019 April • 様々な研究がされている • FAST & FAIR, Level Hashing, CCeH, NV-Tree, wB+Tree, WOART, FPTree • PM向けのindexの設計は複雑である。(バグの温床) • RECIPE; DRAM indexが正しければ、RECIPEアプローチで正しく変換 したものも正しい。 • 例えば、以前に挿⼊したキーの値が失われていないならば、検索はそれを返す。 • consistencyはcrash recovery と関連性が深い • DRAM indexをPM indexに変換するのはPM indexをゼロから作るより 複雑ではない。障害回復⽤の新規のアルゴリズムが必要となるわけで はない。 4
  • 5. RECIPEによるPM Index構築の利点 • DRAM indexを変更するので複雑ではない • もとのDRAM indexが⾼性能ならば、その性能をそのまま受け 継ぐ • 5つのDRAM indexをPM indexに変換してみた 5 DRAM index Data structure RECIPE condition lines lines core lines modified CLHT Hash Table #1 12.6K 2.8K 30(1%) HOT Trie #1 36K 2K 38(2%) BwTree B+Tree #2 13K 5.2K 85(1.6%) ART Radix Tree #3 4.5K 1.5K 52(3.4%) Masstree B+Tree & Trie #3 25K 2.2K 200(9%)
  • 6. Background • DRAM Indexの基本操作 • insert(key, value) • update(key, value) • lookup(key) • range_query(key1, key2) • delete(key) • Structural Modification Operation (SMO) • データそのものの変更ではなくて、索引の作成、更新など • 性能 • 正しさ 6
  • 7. Concurrency, Isolation • ⼀貫性をたもつためにblocking(ロックなど)、non blocking の⽅式がある。 • PM • DRAMとstorageの中間の性質を持つ • intel x86の場合8 byteの単位で書く、 “mfence”は格納の順番を保証する • x86にはキャッシュフラッシュ⽤に”clflush”, “clwb”, “clflushopt”命令がある • Crash Consistent PM Index • PM indexはDRAMより⼤容量化できる。レイテンシーもDRAM程度 • DRAMはクラッシュ(電源断、カーネルクラッシュなど)からのリカ バリが必要。PMは不必要ないしは軽量。多くのPM index が提案され ている。 • 電源断からの復帰。フラッシュをしておく 7
  • 8. 補⾜資料、clflush vs clflushopt 8 Intel 64 and IA-32 Architectures Optimization Reference Manual, Chapter 8, Order Number: 248966-042b September 2019
  • 9. Motivation & The RECIPE Approach • 既存のPM Indexとの⽐較 • FAST & FAIR • PM B+Tree • 設計と実装にバグを発⾒した • 性能も低かった • CCEH • PM Hash table • 2つのバグを発⾒した • PM Indexの設計は難しい。 • principled design (原理原則に基づいた設計) • テスト 9
  • 10. The RECIPE Approach • 障害⼀貫性を持った原理原則に基づいた設計 • もしDRAM indexの設計が正しいのならば、それを変換したPM index も正しい。 • 条件1 • アトミックな格納で更新する • PMへの変更。キャッシュ・フラッシュ、メモリフェンス命令を挿⼊ • すべてのダーティーデータはPMにフラッシュされる • 条件2 • writerはinconsistencyを修正する(writerがinconsistencyを発⾒した場 合) • reader/writerともにnon-blockingの場合 10
  • 11. The RECIPE Approach • 条件3 • writerはinconsistencyを修正しない • readerがnon-blockingでwriterがblockingの場合 • PMへの変更。writerがinconsistencyを発⾒できる機構を導⼊する。 inconsistencyを修正する補助機能(helper mechanism)を導⼊する 11
  • 12. PM Indexのクラッシュリカバリテスト • クラシュリカバリテストは下記をテストする • ⼀貫性のある状態に復元しているか • 永続性のあるデータを消失していないか • どの段階でクラッシュさせるか • テスト空間が膨⼤になるので⼯夫が必要 • 少数のアトミックな格納に注⽬ • 各アトミックな格納後にクラッシュさせてテストする • 他のPMテストツールはランダムにクラッシュさせている • ⼀貫性のテスト • 負荷をかける • PMリカバリ • 結果確認 12
  • 13. 事例研究 DRAM index reader writer Non-SMO SMO CLHT Non-Blocking Blocking #1 #1 HOT Non-Blocking Blocking #1 #1 BwTree Non-Blocking Non-Blocking #1 #2 ART Non-Blocking Blocking #1 #3 Masstree Non-Blocking Blocking #1 #3 13 Table 2. Categorizing conversion actions
  • 14. Trie: Height Optimized Trie (HOT) • 空間効率性に優れた trie • Non-SMO • copy-on-write • 挿⼊削除はアトミック。親のポインタを交換することによって原⼦性 を確保 • SMO • prefixビットがミスマッチした時のツールがある • PMへの変更法 • #1、アトミックなポインタの交換。store命令とフラッシュ命令で正し さが保証される • P-HOT、38⾏変更 14
  • 15. Hash Table: Cache-Line Hash Table CLHT • キャッシュフレンドリーなハッシュテーブル。各バケットは 64 bytes。non-blocking readerのためアトミックは key-value を 持つ • Non-SMO • SMO • PMへの変更 • HOT同様に、挿⼊、削除、リハッシュは単⼀のアトミック store • 30⾏変更(全体2.8K) 15
  • 16. B+ TREE: BwTree • B+Treeの拡張 • Non-SMO • SMO • PMへの変更 • キャッシュへのフラッシュとメモリフェンス • 85⾏変更(全体5.2K) 16
  • 17. Radix Tree: Adaptive Radix Tree (ART) • Radix Treeの実装 • Non-SMO • SMO • PMへの変更 • Condition #1 • 52⾏変更(全体1.5K) 17
  • 18. Hybrid Index: Masstree • キャッシュフレンドリーなTrieとB+treeの拡張 • Non-SMO • SMO • PMへの変更 • Condition #3 • 200⾏変更(全体2.2K) 18
  • 19. 評価 • 実験環境 • Intel Optane DC Persistent Memory Module (DCPMM), 768GB • DRAM 375GB • 2 socket, 96 core machine (CPU型番は不明) • 32MB Last Level Cache (LLC) • Linux Kernel 4.17, Fedora • Filesystem, ext4 DAX, App Direct mode • NUMA node で single socketに pin して計測 • フラッシュは clwb を利⽤ • libvmmaloc library, PMDKを利⽤ • perfを利⽤してハードウェアイベントを計測 • workload は YCSB (Yahoo! Cloud Serving Benchmark) 19
  • 21. 21
  • 22. 22
  • 23. 関連研究 • 過去5年間、15件のPM indexが提案されている • 3件、open source • FAST & FAIR, CCEH, Level Hashing • RECIPEは principled approach (他はad hoc) • testing • ランダムないしは虱潰し型のテスト • RECIPEは効率的で強⼒。 23
  • 24. おわりに • https://github.com/utsaslab/RECIPE • 通常のデータ構造をPM対応にするメソッドについて⾔及し、 実際に変更をして、その効果を⽰した。 • 本研究に従って、既存のB+Treeの実装やKVS実装に⼿を⼊れ てみたくなった。 • 他者の研究についてもオープンソースの場合、深堀りできる。 ベンチマークを取るだけでなく、バグの発⾒などもするので貢 献度は⾼いと思った。先⾏研究が丸裸になるイメージだ。 24