Presentation is loading. Please wait.

Presentation is loading. Please wait.

Highly Available ACID Memory Vijayshankar Raman. Introduction §Why ACID memory? l non-database apps: want updates to critical data to be atomic and persistent.

Similar presentations


Presentation on theme: "Highly Available ACID Memory Vijayshankar Raman. Introduction §Why ACID memory? l non-database apps: want updates to critical data to be atomic and persistent."— Presentation transcript:

1 Highly Available ACID Memory Vijayshankar Raman

2 Introduction §Why ACID memory? l non-database apps: want updates to critical data to be atomic and persistent synchronization useful when multiple threads are accessing critical data l databases concurrency control and recovery logic runs through most of database code. Extremely complicated, and hard to get right bugs lead to data loss -- disastrous!

3 Project goal §Take recovery logic out of apps l Build a simple user-level library that provides recoverable, transactional memory.  all the logic in one place => easy to debug, maintain  easy to to make use of hardware advances l use replication and persistent memory for recovery -- instead of writing logs +simpler to implement +simpler for applications to use ??

4 Questions to answer §program simplicity vs. performance l how much do we lose by replicating instead of logging? §on a cluster, can we use replication directly for availability? l traditionally availability handled on top of the recovery system

5 Outline §Introduction §Acid Memory API §Single Node design & implementation §Evaluation §High Availability: multiple node design and implementation §Evaluation §Conclusion

6 Acid Memory API  Transaction manager interface TransactionManager(database name, acid memory area)  Transaction interface beginTransaction() getLock(memory region1, READ/WRITE) getLock(memory region2, READ/WRITE)... –memory region = virtual address prefix commit/abort() -- all locks released §combine concurrency control with recovery recovery done on write-locked regions §supports fine granularity locking => cannot use VM for recovery §applications can modify data directly

7 Implementation §assume non-volatile memory ( NVRAM, battery backup) §assume persistent file cache §acid memory area mmap’d from file §persistence => writes are permanent §getLock(WRITE) -- copy the region onto mirror area §transaction abort / system crash l undo changes on all writelocked regions using copy in mirror area §only overhead of recovery is a memcpy on each write lock Disk file master copy mirror Acid memory area mmap

8 Evaluation §Overhead of acid memory l read lock:  35usec (lock manager overhead) l write lock:  35usec + 5.5usec/KB (memcpy cost) l much lesser than methods that write log to disk §Ease of programming l application needs to only acquire locks to become recoverable l can manipulate the data directly -- do not have to call special function on every update

9 Example: suppose I want to transfer 1M $ from A’s account to B’s With ACID memory /* a points to A’s account */ /* b points to B’s account */ trans = new Transaction(transMgr); trans->getLock(a, WRITE); trans->getLock(b, WRITE); a = a - 1000000; b = b + 1000000; trans->commit(); Using logging BeginTransaction(); getLock(A’s account, WRITE); getLock(B’s account, WRITE); read(A’s account, a); read(B’s account, b); a = a - 1000000; b = b + 1000000; Update(A’s account, a); Update(B’s account, b); commit(); (Update() creates the needed logs)

10 §Performance comparison: acid memory vs. logging l consider a transaction updating integers in a 1KB data-structure l logging each individual update is a bit faster, to an extent l acid memory gives okay performance with very easy programmability Number of integer writes Time (in microseconds) Acid memory: write-lock the data-structure Logging: write-lock the structure and update each integer separately

11 Outline §Introduction §Acid Memory API §Single Node design & implementation §Evaluation §High Availability: multiple node design and implementation §Evaluation §Conclusion

12 Replication for availability § traditionally, availability has been handled in a separate layer -- above recovery §can we handle both recovery and availability via same mechanism? Transaction processing monitor DBMS replicate

13 Architecture §Transactions run by transaction handler §all lock requests must go to owner §data in all replicas must be kept in sync §balance load by partitioning data l different owner for each partition §failure model l fail-stop: nodes never send incorrect messages to others l failed nodes never recover data after crash l network never fails Owner data lock manager data Transaction handler replicas client

14 §Reads: client gets data from random replica §Writes: must update all replicas l on commit, transaction sends new data to owner l owner propagates update atomically to all replicas 3 phase non-blocking commit protocol. Always ensure that there is someone to take over the propagation if you crash §if owner crashes, fail-over to a replica Owner data lock manager data client Transaction handler

15 Evaluation  Very fast recovery -- 424 usecs +get fast transactions without non-volatile memory  writes are slower  4n messages at commit if n replicas  still, this is faster than logging to disk –homogeneous software: susceptible to bugs

16 Conclusions §Acid memory easier to use §Performance relative to logging not too bad §replication gives fast recovery §Using cache for replication §when/how much to replicate? Future Work

17 Additional Slides

18 Evaluation, w.r.t. logging based approach §Ease of implementation l very little to code, mostly lock manager stuff l whereas in a traditional dbms specialized buffer manager log manager complex recovery mechanism

19 How to make file cache persistent §Rio (Chen et. Al, 1996) §place file cache in non-volatile memory §protect it against OS crashes using VM protection §flush pages in file cache to disk files on reboot


Download ppt "Highly Available ACID Memory Vijayshankar Raman. Introduction §Why ACID memory? l non-database apps: want updates to critical data to be atomic and persistent."

Similar presentations


Ads by Google