• No results found

NV-Heaps: Making Persistent Objects Fast and Safe with Next-Generation, Non-Volatile Memories Joel Coburn

N/A
N/A
Protected

Academic year: 2021

Share "NV-Heaps: Making Persistent Objects Fast and Safe with Next-Generation, Non-Volatile Memories Joel Coburn"

Copied!
31
0
0

Loading.... (view fulltext now)

Full text

(1)

1

NV-Heaps:

Making Persistent Objects Fast and

Safe with Next-Generation,

Non-Volatile Memories

Joel Coburn

Work done at UCSD with Adrian M. Caulfield, Ameen Akel,

(2)

2

Spin-torque MRAM

Emerging Non-volatile Memories

Phase change memory

Memristor

Device characteristics

– As fast as DRAM – As dense as flash – Non-volatile – Reliable

Applications

– DRAM replacements – Fast storage
(3)

3

The Future of Storage

Lat.: 7.1ms

1x

BW: 2.6MB/s

1x

68us

104x

250MB/s

96x

8.2us

865x

1.6GB/s

669x

1.5us

4733x

14GB/s

5384x

Hard Drives PCIe-Flash

2007

NVM

PCIe-NVM 2013?

NVM

DDR-NVM 2016?

= 2.5x/yr

= 2.6x/yr

*Random 4KB reads from user space
(4)

4

Overhead of Software

1 10 100 1000 10000

Disk Flash Fast NVM

Lo g R eque st La te nc y (us) File System OS Hardware

(5)

5

Redefining Persistence for the

Programmer

Physical Storage Low-level IO File System Process Isolation Applications

Old Way: Treat it like disk

- Build an NVRAM “disk” - Read/Write via the OS

and file system

New Way: Treat it like

Memory

-Avoid the OS!

-Create classes

-Use pointers/references

-Leverage strong types

Physical Storage Low-level IO

File System Process Isolation Applications

(6)

6

Overview

Motivation

Requirements for NV-Heaps

System Implementation

Benchmark performance

Conclusion

(7)

7

Expose NVMs as raw storage

Map into virtual

address space

Access through

loads and stores

DRAM NV Heap Volatile Heap NV Memory Virtual Physical

(8)

8

The Dangers of Direct Access

All existing programming errors are still

possible

– Memory leaks

– Multiple frees

– Locking errors

Programmers will get this stuff wrong

(9)

9 Volatile Non-Volatile

New Types of Bugs

NV-Heap NV-Heap Volatile Heap Pointer Type V-to-V V-to-NV NV-to-V Inter-heap NV-to-NV Intra-heap NV-to-NV Valid?     

? ?

(10)

10

Existing Primitives are Error Prone

Is

a

volatile? Is

l

?

Are they in the same heap?

void Insert(Object * a, List<Object> * l) {

... }

(11)

11

Memory Management, Locking, and

NV Pointers

Manual memory management and locking

disciplines are well-known sources of errors

Both rely on a program-wide invariant that is…

– Not specified in the source

– Not enforced by the system

NV pointer safety relies on a similar invariant

Programmers will get it wrong

(12)

12

How hard is it to get right?

Example: BPFS [SOSP 09]

– Transactional file system for NVM on memory bus

– Carefully engineered NV data structure

– Exploits FS tree structure and limited operations

– Well worth the effort for a file system

Methodology does not scale for writing your

average application!

(13)

13

Persistent Object Systems

• Slow but safe

– Database frontends (Java Persistence, C# LINQ)

– Object-oriented databases (Objectstore [CACM 91], Texas

[POS 92], Quickstore [SIGMOD 94], Thor [SIGMOD 96])

– Transactional storage library (Stasis [OSDI 06]) – Single-level stores (as400, Opal, etc.)

– Orthogonally persistent Java [SIGMOD 96]

• Fast but unsafe

– Recoverable Virtual Memory [SOSP 93]

– Rio Vista (battery backed DRAM) [SOSP 97]

• Fast and safer

(14)

14

NV-Heaps: Safe Persistent Objects

1. Safety

– Garbage collection – Pointer safety

– Transactions

2. Performance

– Approach raw NVM performance

3. Scalability

– Operations are O(touched data) not O(storage size)

4. Easy to use

– Familiar interface

– Leverage existing file systems and tools

(15)

15

Overview

Motivation

Requirements for NV-Heaps

System Implementation

Benchmark performance

Conclusion

(16)

16

Example Code – Linked List

class NVList : public NVObject {

DECLARE_POINTER_TYPES(NVList); public: DECLARE_MEMBER(int, value); DECLARE_PTR_MEMBER(NVList::NVPtr, next); }; void remove(int k) { NVHeap * nv = NVHOpen(“foo.nvheap”); NVList::VPtr a = nv->GetRoot<NVList::NVPtr>(); AtomicBegin {

while (a->get_next() != NULL) {

if (a->get_next()->get_value() == k) { a->set_next(a->get_next()->get_next()); } a = a->get_next(); } } AtomicEnd; }

(17)

17

NV-Heaps

Implementation

Locking, logging, and recovery Reference counting Pointer assignments

Pointer type enforcement Reclamation

Memory mapping

Allocation and deallocation Relocatability

NVM Allocation

Garbage Collection

Pointer Safety

Transaction

Management

(18)

18

NVM Allocator

Raw allocation and de-allocation

– Per-thread free lists

– Fixed-sized, write-ahead logging for atomicity and

durability

– Epoch barriers for consistency [SOSP 09] or

combination of mfence and clflush

Mapping

– “Execute in place” support in Linux

(19)

19

Garbage Collection + Pointer Safety

Reference-counting

– Per-object locks protect reference counts

– Weak references for cycles

Dynamic type system prevents dangerous NV

pointers

– Wide pointers allow run-time checks on

assignments

(20)

20

Challenge: Scalable locking

NV-heaps require per-object locks

Volatile locks don’t scale

– Volatile storage rises with NV-heap size

Non-volatile locks don’t scale

– On recovery, all locks need to be released

(21)

21

Generational Locks

<

Lock Generation 4 4 Unlocked

Acquire the lock 5

Locked

Open the heap: Move to the

next generation

All locks released!

5

(22)

22

General, ACID Transactions

Software transactional memory system

– Object-based, undo logging

– Eager conflict detection with locks and version

numbers

Logging

– Per-thread NV write logs and V read logs

(23)

23

Overview

Motivation

Requirements for NV-Heaps

System Implementation

Benchmark performance

Conclusion

(24)

24 0.1 1 10 100 1000 10000

Btree SPS Hash 6-Degrees Average

Lo g Sp ee du p Re la tiv e to S ta sis R am Disk Stasis RamDisk BDB RamDisk NV-Heaps PCM NV-Heaps STTM NV-Heaps DRAM

Comparison to Other Systems

6.5X

13 to 1110X speedup over Stasis 2 to 643X speedup over BDB

(25)

25

NV-Heaps

NVM Allocation

Garbage Collection

Pointer Safety

Transaction

Management

Layers of Safety

Base

Safe

TX

C-TX

(26)

26

Price of Safety

0 0.5 1 1.5 2 2.5 Bt re e B as e Bt ree S af e Bt ree T X Bt ree C -T X SP S B ase SP S S af e SP S T X SP S C -T X Has h B as e Ha sh S af e Has h TX Has h C -TX RB tr ee B as e RB tr ee S af e RB tr ee T X RB tr ee C -T X 6-Deg rees B as e 6-Deg rees S af e 6-Deg rees T X 6-Deg rees C -T X SSC A B ase SSC A S afe SSC A T X SS CA C -T X Av e B as e Av e S afe Av e T X Av e C -T X Spe edup v s. B as e 8 threads 4 threads 2 threads 1 thread 30% 11X 8.4X
(27)

27 0 20000 40000 60000 80000 100000 120000 Memcachedb NV-heaps

PCM NV-heapsSTTM NV-heapsDRAM Memcached

O per ati on s/ sec

Application: Memcachedb

39X 8 to 28% slowdown
(28)

28

Looking Forward

• Worse than DRAM, better than flash

– How do we handle microsecond write times?

– What does the new storage hierarchy look like?

• Hardware support for storage on the memory bus

– Virtual memory overhead is high (TLB misses)

– Costly memory fences and cacheline flushes

• What else do we need to guarantee safety?

– Language support, program verification, application fsck, etc.

• Distributed storage using fast NVMs

(29)

29

Conclusion

NV-heaps give us robust non-volatile data

structures in fast, non-volatile memory

Provide safe, easy to use, persistent objects

Very large application-level improvements

(30)

30

Thank you!

Questions?

(31)

31

References

Related documents

The geological evolution of Europe extends over some 3.8 billion years of Earth history.  The  oldest  rocks  in  Europe  are  found  in  the  Archaean 

Profissionais da rede de ensino do município pesquisado que estão inseridos nesse programa de formação continuada se questionam sobre o porquê de se incluir

We included randomised, quasi-randomised (a method of allocating participants to a treatment that is not strictly random, e.g. by hospital number), or

Heat Consumption (Low Heat Value) of a kiln is the total heat consumed for the whole production of clinker (all types of clinker ) for a specific kiln during a given period..

building with an interior masonry wall that extends from floor to roof, and the exterior walls are plywood shear walls, during a wind or earthquake, the lateral loads will go to

• Installed 30 weather stations and 10 AI wildfire alert cameras in extreme and high fire risk areas to help. improve

With Setup-A, we next vary the write latency of NVRAM to show how overall transaction performance will be im- pacted with NV-Disk, NV-Logging and Distributed Logging.. In

False shuffle and cut - retaining the entire order of the deck - then deal out TEN HANDS of 5 cards each - dealing one card at a time (face-up or face-down as you choose) showing