RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory Indexes
Se Kwon Lee, Jayashree Mohan, Sanidhya Kashyap*, Taesoo Kim, Vijay Chidambaram
1
*On the job market
RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory - - PowerPoint PPT Presentation
RECIPE : Converting Concurrent DRAM Indexes to Persistent-Memory Indexes Se Kwon Lee, Jayashree Mohan, Sanidhya Kashyap * , Taesoo Kim, Vijay Chidambaram *On the job market 1 Persistent Memory (PM) New storage class memory technology
1
*On the job market
2
Intel Optane DC Persistent Memory
3
4
PM
PM
5
PM
6
PM
7
log
commit Core Cache
8
Volatile Persistent
Program order write (log); write (commit);
commit
log
commit Core Cache
9
Volatile Persistent
Persistence reordering write (log); write (commit); log Reordered
commit
commit commit Core Cache
10
Volatile Persistent
Persistence reordering write (log); write (commit); log
commit
Inconsistency Crash
Core Cache
11
Volatile Persistent commit
log Consistent persistence ordering write (log) flush (log) fence () write (commit) flush (commit) fence ()
12
Correct Concurrency Correct Crash Consistency Consistent Data Conflict Crash
13
Bug Concurrency Bug Crash Consistency Data Loss Conflict Crash
14
15
16
17
Concurrency Cache Efficiency T-Tree CSS- Tree CSB+ Tree BD- Tree FAST Bw- Tree ART HOT Mass tree 1986 CLHT 2010 2019
Time
18
Concurrency Cache Efficiency Crash Vulnerable
19
DRAM Index
Volatile Concurrency Cache Efficiency
PM Index
Concurrency Cache Efficiency Crash Consistency
Conversion
20
1. Steven Pelley et al., Memory Persistency, ISCA’14
21
1. Steven Pelley et al., Memory Persistency, ISCA’14
22
RECIPE
https://github.com/utsaslab/RECIPE
23
24
25
26
Inconsistency
Tolerate Detect
27
Inconsistency
28
Inconsistency
1. Keren Censor-Hillel et al., Help!, PODC’15 2. Ryan Berryhill et al., Robust shared objects for non-volatile main memory, OPODIS’15
29
30
31
32
33
Atomic Store
Step 1 Step 2 Step N
Step 1 Step 2 Step N
Invisible Visible
34
Atomic Store
Step 1 Step 2 Step N
Step 1 Step 2 Step N
Flushes Flush Fence Fence
35
36
Step 1 Step 2 Step 3
Update Writer 1
A sequence of ordered deterministic steps Commit Step
Step 3
37
Step 1 Step 2
Commit Step
Tolerate
38
Step 1 Step 2
Step 3
Fix Detect
Commit Step
39
Step 1 Step 2 Step 3
Writer 1
Commit Step
40
Step 1 Step 2 Step 3
Writer 1
Commit Step
41
Step 1 Step 2
Thread
Step 3
Recover
Commit Step
42
Step 2
Thread
Step 3
Flushes Flushes Flushes Flushes Fence Fence Fence
Step 1 Commit Step
43
44
Step 1 Step 2 Step 3
Writer 1
Step 1 Step 2 Step 3
Writer 2 Update
A sequence of ordered deterministic steps
Update
Commit Step Commit Step A sequence of ordered deterministic steps
45
Step 1 Step 2 Step 3
Writer 1
Step 1 Step 2 Step 3
Writer 2
Commit Step Commit Step
46
Step 1 Step 2
Writer 1
Step 1 Step 2 Step 3
Writer 2
Commit Step
Writer 2
47
Step 1 Step 2 Step 3
Thread
Step 1 Step 2
Detect Fix
Commit Step
48
49
High Key High Key
50
51
Intermediate state
52
53
Detect (25 > 15) >>>> Tolerate
54
Crash Permanent Inconsistency
55
Detect
56
57
DRAM Index PM Index Condition CLHT P-CLHT #1 HOT P-HOT #1 BwTree P-BwTree #1, #2 ART P-ART #1, #3 Masstree P-Masstree #1, #3
58
59
60
61
62
63
64
RECIPE-converted Indexes Lines of Code Index Core Modified P-CLHT 2.8K 30 (1%) P-HOT 2K 38 (2%) P-BwTree 5.2K 85 (1.6%) P-ART 1.5K 52 (3.4%) P-Masstree 2.2K 200 (9%)
65
RECIPE-converted Indexes Lines of Code Index Core Modified P-CLHT 2.8K 30 (1%) P-HOT 2K 38 (2%) P-BwTree 5.2K 85 (1.6%) P-ART 1.5K 52 (3.4%) P-Masstree 2.2K 200 (9%)
66
67
Load Workload A Workload B Workload C Workload E Insertion 100% Insertion 50% Point Lookup 50% Insertion 5% Point Lookup 95% Point Lookup 100% Insertion 5% Range Scan 95%
68
69
1 2 3 4 5 6 Load A B C E
Normalized throughput
FAST&FAIR P-HOT
70
RECIPE