+ All Categories
Home > Technology > Crafting a Ready-to-Go STM

Crafting a Ready-to-Go STM

Date post: 08-Jul-2015
Category:
Upload: guy-korland
View: 829 times
Download: 0 times
Share this document with a friend
Description:
Crafting a Ready-to-Go Java STM
Popular Tags:
25
Guy Korland Tel Aviv University CRAFTING A READY-TO-GO STM
Transcript
Page 1: Crafting  a Ready-to-Go STM

Guy KorlandTel Aviv University

CRAFTINGA READY-TO-GO STM

Page 2: Crafting  a Ready-to-Go STM
Page 3: Crafting  a Ready-to-Go STM
Page 4: Crafting  a Ready-to-Go STM

Process 1 Process 2

a = acc.get()a = a + 100 b = acc.get()

b = b + 50acc.set(b)

acc.set(a)

... Lost Update! ...

Page 5: Crafting  a Ready-to-Go STM

Process 1 Process 2

lock(A) lock(B)

lock(B) lock(A)

... Deadlock! ...

Page 6: Crafting  a Ready-to-Go STM
Page 7: Crafting  a Ready-to-Go STM

Process 1 Process 2

atomic{ atomic{a = acc.get() b = acc.get()a = a + 100 b = b + 50 acc.set(a) acc.set(b)

} }

... WIIIII ...

Page 8: Crafting  a Ready-to-Go STM
Page 9: Crafting  a Ready-to-Go STM

@atomic public interface INode{

int getValue ();

void setValue (int value );

}

Factory<INode> factory = Thread.makeFactory(INode.class );

final INode node = factory.create();

factory result = Thread.doIt(new Callable<Boolean>() {

public Boolean call () {

return node.setValue(value);

} });

DSTM2MAURICE HERLIHY ET AL, A FLEXIBLE FRAMEWORK … [OOPSLA06]

Page 10: Crafting  a Ready-to-Go STM

public class Account{

private VBox<Long> balance = new VBox<Long>();

public @Atomic void withdraw(long amount) {

balance.put (balance.get() - amount);

}

}

JVSTMJOÃO CACHOPO AND ANTÓNIO RITO-SILVA, VERSIONED BOXES AS THE BASIS FOR MEMORY TRANSACTIONS [SCOOL05]

Page 11: Crafting  a Ready-to-Go STM

public class Bank{

private double commission = 10;

@Atomic

public void transaction( Account ac1, Account ac2, double amount){

ac1.balance -= (amount + commission);

ac2.balance += amount;

}

}

DEUCE STM - APIGuy Korland, Nir Shavit and Pascal Felber, “Noninvasive Java Concurrency with Deuce STM”, [MultiProg '10]

Page 12: Crafting  a Ready-to-Go STM

DEUCE STM - OVERVIEW

Page 13: Crafting  a Ready-to-Go STM

BENCHMARKS (SUN ULTRASPARC T2 PLUS – 2 X QUAD X 8HT)

Page 14: Crafting  a Ready-to-Go STM

BENCHMARKS (AZUL – VEGA2 – 2 X 48)

Page 15: Crafting  a Ready-to-Go STM
Page 16: Crafting  a Ready-to-Go STM
Page 17: Crafting  a Ready-to-Go STM

BENCHMARK - THE DARK SIDE

0

0.2

0.4

0.6

0.8

1

1.2

1 2 3 4 5 6 7 8 9 10

Lock

Deuce

Page 18: Crafting  a Ready-to-Go STM
Page 19: Crafting  a Ready-to-Go STM

• Contention – Retries, Aborts, Contention Manager …

• STM Algorithm – Data structures, optimistic, pessimistic…

• Semantic – Consistency model, Privatization…

• Instrumented Memory access – Linear overhead on every

read/write

OVERHEAD

Page 20: Crafting  a Ready-to-Go STM

STATIC ANALYSIS OPTIMIZATIONS

1. Avoiding instrumentation of accesses to

immutable and transaction-local memory.

2. Avoiding lock acquisition and releases for

thread-local memory.

3. Avoiding readset population in

read-only transactions.

Page 21: Crafting  a Ready-to-Go STM

NEW STATIC ANALYSIS OPTIMIZATIONS

1. Reduce amount of instrumented memory reads using

load elimination.

2. Reduce amount of instrumented memory writes using

scalar promotion.

3. Avoid writeset lookups for memory

not yet written to.

4. Avoid writeset record keeping for memory that

will not be read.

5. Reduce false conflicts by Transaction re-scoping.

6. …

Yehuda Afek, Guy Korland, and Arie Zilberstein, “Lowering STM Overhead with Static Analysis”, LCPC'10

Page 22: Crafting  a Ready-to-Go STM

BENCHMARKS – K-MEANS

Page 23: Crafting  a Ready-to-Go STM

STM FRIENDLY LIBRARIES

• Most of the developers/application only use Data Structures.

@Atomic(retries=64)

public void transaction( Map map1, Map map2, String key){

map2.put(key, map1.remove(key));

}

We should build a set of “STM Friendly” libraries.

Maurice Herlihy, Eric Koskinen: Transactional boosting: a methodology for highly-concurrent transactional objects. PPOPP’08

Page 24: Crafting  a Ready-to-Go STM
Page 25: Crafting  a Ready-to-Go STM

WWW.DEUCESTM.ORG


Recommended