Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each...

40
Write-Optimized and High-Performance Hashing Index Scheme for Persistent Memory Pengfei Zuo, Yu Hua, Jie Wu Huazhong University of Science and Technology, China OSDI 2018

Transcript of Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each...

Page 1: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-Optimized and High-Performance

Hashing Index Scheme for Persistent Memory

Pengfei Zuo, Yu Hua, Jie Wu

Huazhong University of Science and Technology, China

OSDI 2018

Page 2: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Persistent Memory (PM)

➢ Non-volatile memory as PM is expected to replace

or complement DRAM as main memory

– Non-volatility, low power, large capacity

PCM ReRAM DRAM

Read (ns) 20-70 20-50 10

Write (ns) 150-220 70-140 10

Non-volatility √ √ ×

Standby Power ~0 ~0 High

Density (Gb/cm2) 13.5 24.5 9.1

PCM

ReRAM

K. Suzuki and S. Swanson. “A Survey of Trends in Non-Volatile Memory Technologies: 2000-2014”, IMW 2015.

C. Xu et al. “Overcoming the Challenges of Crossbar Resistive Memory Architectures”, HPCA, 2015.

2

Page 3: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Index Structures in DRAM vs PM

➢ Index structures are critical for memory&storage systems

➢ Traditional indexing techniques originally designed for

DRAM become inefficient in PM

– Hardware limitations of NVM

• Limited cell endurance

• Asymmetric read/write latency and energy

• Write optimization matters

– The requirement of data consistency

• Data are persistently stored in PM

• Crash consistency on system failures

Pers

ist

CPU

3

Page 4: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Tree-based vs Hashing Index Structures

➢ Tree-based index structures– Pros: good for range query

– Cons: O(log(n)) time complexity

for point query

– Ones for PM have been widely

studied

• CDDS B-tree [FAST’11]

• NV-Tree [FAST’15]

• wB+-Tree [VLDB’15]

• FP-Tree [SIGMOD’16]

• WORT [FAST’17]

• FAST&FAIR [FAST’18]

4

Page 5: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Tree-based vs Hashing Index Structures

➢ Tree-based index structures– Pros: good for range query

– Cons: O(log(n)) time complexity

for point query

– Ones for PM have been widely

studied

• CDDS B-tree [FAST’11]

• NV-Tree [FAST’15]

• wB+-Tree [VLDB’15]

• FP-Tree [SIGMOD’16]

• WORT [FAST’17]

• FAST&FAIR [FAST’18]

➢ Hashing index structures– Pros: constant time complexity for

point query

– Cons: do not support range query

– Widely used in main memory

• Main memory databases

• In-memory key-value stores, e.g.,

Memcached and Redis

– When maintained in PM, multiple

non-trivial challenges exist

• Rarely touched by existing work

5

Page 6: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Challenges of Hashing Indexes for PM

① High overhead for consistency guarantee

– Ordering memory writes

• Cache line flush and memory fence instructions

– Avoiding partial updates for non-atomic writes

• Logging or copy-on-write (CoW) mechanisms

CPU Memory Bus

Volatile caches Non-volatile memory

8-byte width

6

Page 7: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Challenges of Hashing Indexes for PM

① High overhead for consistency guarantee

② Performance degradation for reducing writes

– Hashing schemes for DRAM usually cause many extra

writes for dealing with hash collisions [INFLOW’15, MSST’17]

– Write-friendly hashing schemes reduce writes but at the

cost of decreasing access performance

• PCM-friendly hash table (PFHT) [INFLOW’15]

• Path hashing [MSST’17]

7

Page 8: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Challenges of Hashing Indexes for PM

① High overhead for consistency guarantee

② Performance degradation for reducing writes

③ Cost inefficiency for resizing hash table

− Double the table size and iteratively rehash all items

− Take O(N) time to complete

− N insertions with cache line flushes & memory fences

8

Old Hash Table New Hash Table

Rehash all items

Page 9: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Existing Hashing Index Schemes for PM

Bucketized

Cuckoo (BCH)

PFHT1 Path

Hashing2

Memory efficiency √ √ √

Search √ -- --

Deletion √ -- --

Insertion × -- --

NVM writes × √ √

Resizing × × ×

Consistency × × ×

[1] B. Debnath et al. “Revisiting hash table design for phase change memory”, INFLOW, 2015.

[2] P. Zuo and Y. Hua. “A write-friendly hashing scheme for non-volatile memory systems”, MSST, 2017.

(“×”: bad, “√”: good , “--”: moderate)

9

Page 10: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Existing Hashing Index Schemes for PM

Bucketized

Cuckoo (BCH)

PFHT1 Path

Hashing2

Level

Hashing

Memory efficiency √ √ √ √

Search √ -- -- √

Deletion √ -- -- √

Insertion × -- -- √

NVM writes × √ √ √

Resizing × × × √

Consistency × × × √

[1] B. Debnath et al. “Revisiting hash table design for phase change memory”, INFLOW, 2015.

[2] P. Zuo and Y. Hua. “A write-friendly hashing scheme for non-volatile memory systems”, MSST, 2017.

(“×”: bad, “√”: good , “--”: moderate)

10

Page 11: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Level Hashing

x0 1 2 3 4 5 N-1N-2N-3N-4

TL:

BL:

One movement

One movement

Write-optimized & High-performance Hash Table Structure

Cost-efficient

In-place Resizing Scheme

Low-overhead Consistency

Guarantee Scheme

Resizing

support

Consistency

support

11

Page 12: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-optimized Hash Table Structure

① Multiple slots per bucket

② Two hash locations for each key

③ Sharing-based two-level structure

④ At most one movement for each

successful insertion

12

Page 13: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-optimized Hash Table Structure

① Multiple slots per bucket

② Two hash locations for each key

③ Sharing-based two-level structure

④ At most one movement for each

successful insertion

x

0 1 2 3 4 5 N-1N-2N-3N-4

TL:

2.2%0%

20%

40%

60%

80%

100%

D1 D1+D2 D1+D2+D3 All

Ma

xim

um

Lo

ad

F

acto

r

13

Page 14: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-optimized Hash Table Structure

① Multiple slots per bucket

② Two hash locations for each key

③ Sharing-based two-level structure

④ At most one movement for each

successful insertion

x

0 1 2 3 4 5 N-1N-2N-3N-4

TL:

2.2%

47.6%

0%

20%

40%

60%

80%

100%

D1 D1+D2 D1+D2+D3 All

Ma

xim

um

Lo

ad

F

acto

r

14

Page 15: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-optimized Hash Table Structure

① Multiple slots per bucket

② Two hash locations for each key

③ Sharing-based two-level structure

④ At most one movement for each

successful insertion

x

0 1 2 3 4 5 N-1N-2N-3N-4

TL:

BL:

2.2%

47.6%

82.5%

0%

20%

40%

60%

80%

100%

D1 D1+D2 D1+D2+D3 All

Ma

xim

um

Lo

ad

F

acto

r

15

Page 16: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-optimized Hash Table Structure

① Multiple slots per bucket

② Two hash locations for each key

③ Sharing-based two-level structure

④ At most one movement for each

successful insertion

x

0 1 2 3 4 5 N-1N-2N-3N-4

TL:

BL:

One movement

One movement

2.2%

47.6%

82.5% 91.1%

0%

20%

40%

60%

80%

100%

D1 D1+D2 D1+D2+D3 All

Ma

xim

um

Lo

ad

F

acto

r

16

Page 17: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Write-optimized Hash Table Structure

x

0 1 2 3 4 5 N-1N-2N-3N-4

TL:

BL:

One movement

One movement

➢ Write-optimized: only 1.2% of insertions incur one movement

➢ High-performance: constant-scale time complexity for all operations

➢ Memory-efficient: achieve high load factor by evenly distributing items

17

Page 18: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Cost-efficient In-place Resizing

➢ Put a new level on top of the old hash table and

only rehash items in the old bottom level

TL:

BL:

0 1 2 3 N-1N-2

18

Page 19: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Cost-efficient In-place Resizing

➢ Put a new level on top of the old hash table and

only rehash items in the old bottom level

2 3 4 5 6 7 2N-22N-32N-40 1 2N-1

TL:

TL:

BL:

19

Page 20: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Cost-efficient In-place Resizing

➢ Put a new level on top of the old hash table and

only rehash items in the old bottom level

2 3 4 5 6 7 2N-22N-32N-40 1 2N-1

TL:

BL:

IL:

(the interim level )20

Page 21: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Cost-efficient In-place Resizing

➢ Put a new level on top of the old hash table and

only rehash items in the old bottom level

2 3 4 5 6 7 2N-22N-32N-40 1 2N-1

TL:

BL:

IL:

(the interim level )

Rehashing

21

Page 22: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Cost-efficient In-place Resizing

➢ Put a new level on top of the old hash table and

only rehash items in the old bottom level

2 3 4 5 6 7 2N-22N-32N-40 1 2N-1

TL:

BL:

22

Page 23: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Cost-efficient In-place Resizing

➢ Put a new level on top of the old hash table and

only rehash items in the old bottom level– The new hash table is exactly double size of the old one

– Only 1/3 buckets (i.e., the old bottom level) are rehashed

2 3 4 5 6 7 2N-22N-32N-40 1 2N-1

TL:

BL:

23

Page 24: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Low-overhead Consistency Guarantee

➢ A token associated with each slot in the open-

addressing hash tables

– Indicate whether the slot is empty

– A token is 1 bit, e.g., “1” for non-empty, “0” for empty

KV1KV00011

Tokens

A bucket:

Slots 24

Page 25: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Low-overhead Consistency Guarantee

➢ A token associated with each slot in the open-

addressing hash tables

– Indicate whether the slot is empty

– A token is 1 bit, e.g., “1” for non-empty, “0” for empty

➢ Modifying the token area only needs an atomic write

– Leveraging the token to perform log-free operations

KV1KV00011

Tokens Slots

A bucket:

25

Page 26: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Log-free Deletion

➢ Delete an existing item

KV1KV00011

Delete

26

Page 27: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Log-free Deletion

➢ Delete an existing item

KV1KV00011

Delete

KV1KV00001

Modify the token in an

atomic write

27

Page 28: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Log-free Deletion

➢ Delete an existing item

KV1KV00011

Delete

KV1KV00001

Modify the token in an

atomic write

➢ Log-free insertion and log-free resizing

– Please find them in our paper28

Page 29: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Consistency Guarantee for Update

➢ If directly update an existing

key-value item in place

– Inconsistency on system failures

KV1KV00011

Update

29

Page 30: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Consistency Guarantee for Update

➢ If directly update an existing

key-value item in place

– Inconsistency on system failures

➢ A straightforward solution is

to use logging KV1KV00011

Update

Expensive!

30

Page 31: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Opportunistic Log-free Update

➢ Our scheme: check whether there is an empty slot in the bucket

storing the old item

– Yes: log-free update

– No: using logging KV1KV00011

KV1’KV1KV00011

KV1’KV1KV00101

Update

① Write KV1’ in an empty slot

②Modify the two tokens in

an atomic write

31

Page 32: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Opportunistic Log-free Update

➢ Our scheme: check whether there is an empty slot in the bucket

storing the old item

– Yes: log-free update

– No: using logging KV1KV00011

KV1’KV1KV00011

KV1’KV1KV00101

Update

① Write KV1’ in an empty slot

②Modify the two tokens in

an atomic write0%

20%

40%

60%

80%

100%

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Lo

g-f

ree

Pro

ba

bili

ty

Load Factor

4 slots/bucket

8 slots/bucket

16 slots/bucket

32

Page 33: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Performance Evaluation

➢ Both in DRAM and simulated PM platforms

– Quartz (Hewlett Packard)

• A DRAM-based performance emulator for PM

➢ Comparisons– Bucketized cuckoo hashing (BCH) [NSDI’13]

– PCM-friendly hash table (PFHT) [INFLOW’15]

– Path hashing [MSST’17]

– In PM, implement their persistent versions using our

proposed log-free consistency guarantee schemes

33

Page 34: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Insertion Latency

➢ Level hashing has the best insertion performance in both DRAM and NVM

600

6000

0.4 0.5 0.6 0.7 0.8 0.9

Inse

rtio

nL

ate

ncy (

ns)

Load Factor

BCH PFHT

Path Level

DRAM NVM read/write latency: 200/600

2400

24000

0.4 0.5 0.6 0.7 0.8 0.9

Inse

rtio

nL

ate

ncy (

ns)

Load Factor

BCH PFHT

Path Level

34

Page 35: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Update Latency

➢ Opportunistic log-free update scheme reduces the update latency by 15%∼52%, i.e., speeding up the updates by 1.2×− 2.1×

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Up

da

te L

ate

ncy (

ns)

Load Factor

BCH PFHT

Path Level

Level w/o Opp

35

Page 36: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Search Latency

➢ The search latency of level hashing is close to that of BCH, which is much

lower than PFHT and path hashing

0

500

1000

1500

2000

Negative Search

0.8 0.80.6

Se

arc

h L

ate

ncy (

ns)

BCH

PFHT

Path

Level

0.6

Positive Search

36

Page 37: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Resizing Time

➢ Level hashing reduces the resizing time by about 76%, i.e., speeding up

the resizing by 4.3×

0

50

100

150

200

250

NVM-200ns/600nsDRAM

The R

esiz

ing T

ime (

s)

BCH

PFHT

Path

Level-Trad

Level

37

Page 38: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Concurrent Throughput

➢ Concurrent level hashing:

Support multiple-reader multiple-

writer concurrency via simply

using fine-grained locking

➢ Concurrent level hashing has

1.6×− 2.1× higher throughput

than libcuckoo1, due to locking

fewer slots for insertions90/10 70/30 50/50 30/70 10/900

3

6

9

12

15

18

Th

rou

gh

pu

t (M

re

qs/s

)

Libcu-2 Level-2 Libcu-4 Level-4

Libcu-8 Level-8 Libcu-16 Level-16

Search/Insertion Ratio (%)

[1] X. Li et al.. “Algorithmic improvements for fast concurrent cuckoo hashing”, Eurosys, 2014. 38

Page 39: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Conclusion

➢ Traditional indexing techniques originally designed for

DRAM become inefficient in PM

➢ We propose level hashing, a write-optimized and high-

performance hashing index scheme for PM

– Write-optimized hash table structure

– Cost-efficient in-place resizing

– Log-free consistency guarantee

➢ 1.4×−3.0× speedup for insertion, 1.2×−2.1× speedup

for update, and over 4.3× speedup for resizing

39

Page 40: Write-Optimized and High-Performance Hashing Index Scheme for ... · A token associated with each slot in the open-addressing hash tables –Indicate whether the slot is empty –A

Thanks! Q&A(Poster #10)

Open-source code: https://github.com/Pfzuo/Level-Hashing