software transactional objects guy eddon maurice herlihy tramp 2007

17
Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

Upload: xavier-mcnulty

Post on 27-Mar-2015

219 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

Software Transactional Objects

Guy EddonMaurice Herlihy

TRAMP 2007

Page 2: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

2

Language/Library supportfor Transactions

• Lots of worn on unmanaged languages– “word-based”

• What about managed languages?– Objects, GC, bounds checks,

structured exceptions?– Java™, C#?

• Different concerns

Page 3: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

3

Prior STM Work

• Awkward user interface– Long-lived transactional “wrappers” vs– Short-lived “versions”

• Programmer conventions– List element points to wrapper which

points to list ….– Don’t use short-lived objects beyond

lifetime ….

Page 4: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

4

public class List { public int item; public TMObject<List> next;}

Old-School Atomic Classes

Next field is explicit wrapper

Page 5: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

5

List next = list.next.OpenRead();

Old-School Atomic Classes

Explicit open(specify read or write)

Page 6: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

6

List next = list.next.OpenRead();

Old-School Atomic Classes

Must discard after transaction, don’t modify,

etc…

Page 7: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

7

List rVersion = list.next.OpenRead();

Old-School Atomic Classes

Read version unchangedRead

version changed

List wVersion = list.next.OpenWrite();wVersion.item++;

List wVersion = list.next.OpenWrite();

List rVersion = list.next.OpenRead();

Page 8: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

8Software Transactional Memory

Library approach

• Intercept field accesses– SXM (C#)– DSTM2 (Java™)

• Programmer use factories– Input is interface– Synthesize code to intercept field

accesses

Page 9: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

9

Examples

node.Key = 42; // C# property style

Node.setKey(42); // Java EJB style

Page 10: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

10

Examples

node.Key = 42; // C# property style

Node.setKey(42); // Java EJB style

try { T version = (T) start.get().newVersion; final Method method = version.getClass().getMethod(methodName, _class); return new Adapter.Setter<V>() { public void call(V value) { try { ThreadState state = Thread.getLocalState(); …

Page 11: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

11

Advantages

• Strong Atomicity– Detects transactional/non-

transactional race conditions

• Natural programming style– Almost sequential– No complex conventions

Page 12: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

12

Disadvantages

• Efficiency, efficiency, efficiency– Even with fast-path optimizations

• Solution– Use flow analysis to remove

synchronization– Use MSFT Phoenix compiler

Page 13: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

13

Lock-Based Runtime

0

200,000

400,000

600,000

800,0001,000,000

1,200,000

1,400,000

SXM 1

.1

Libr

ary

Opts

Compil

er

Cons

tLo

cal

RWPr

omo

Subs

eque

nt

PreO

pen

List

RBTree

SkipList

HashTable

Buff er

Page 14: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

14

Obstruction-Free Run-Time

0

200,000

400,000

600,000

800,000

1,000,000

SXM 1

.1

Libr

ary

Opts

Compil

er

Cons

tLo

cal

RWPr

omo

Subs

eque

nt

PreO

pen

List

RBTree

SkipList

HashTable

Buff er

Page 15: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

15

Locking vs Obstruction-Free

0

50,000

100,000

150,000

200,000

Ofree

Locking

Page 16: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

16

Conclusions

• Managed languages are also important

• Simple flow analysis goes a long way

• Do not rule out non-blocking algorithms yet

Page 17: Software Transactional Objects Guy Eddon Maurice Herlihy TRAMP 2007

17

Clip Art