wtm’12, bern, april 10, 2012 in-place metainfo support in deucestm ricardo j. dias, tiago m. vale...

23
WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa 1

Upload: marybeth-grant

Post on 17-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 1

In-Place Metainfo Support in DeuceSTM

Ricardo J. Dias, Tiago M. Vale and João M. LourençoCITI / Universidade Nova de Lisboa

Page 2: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 2

Motivation

• Fair comparison of different STM algorithms

• Require a flexible framework to support different STM implementations– Multi-version, lock-based, …

– Same transactional interface

– Same benchmarking applications

Page 3: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 3

The DeuceSTM

• Transactions defined by a single Java method annotation: @Atomic

• Well-defined API for implementing STM algorithms

• Efficient implementation of some STM algorithms, e.g., TL2, LSA, …

• Macro-benchmarks available

• Does not allow the efficient implementation of other STM algorithms, e.g., multi-version

• Fair comparison is not possible

Page 4: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 4

Transactional Information

Thread 1

Thread 2

Thread 3

1

2

3

4

TxRead

TxWrite

TxRead

Tx Desc.Clock = 3

Tx Desc.Clock = 2

Tx Desc.Clock = 3

Lock, version …

Lock, version …

Lock, version …

Lock, version …

Metainfo

MemoryThread-local

Data

Data

Data

Data

Page 5: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 5

Out-place: N-1

1

2

3

4

Lock

Lock

Lock

Memory• Efficient implementation

using an hash function

• False sharing

• Algorithms:

– TL2, SwissTM, LSA

ExternalMapping Table

Lock

Data

Data

Data

Data

Page 6: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 6

Out-place: 1-1

1

2

3

4

Version List

Version List

Version List

Memory

Version List

• Hash table with collision list

• Bad performance

• Algorithms:

– Multi-version algorithms

ExternalMapping Table

Data

Data

Data

Data

Page 7: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 7

In-place: 1-1

1

2

3

4

Version List

Version List

Version List

Version List

• Direct access to metainfo using memory reference

• Mostly used in managed runtimes (OO languages)

• Algorithms:

– TL2, SwissTM, LSA, Multi-version algorithms

Memory

Data

Data

Data

Data

Add support for In-place in DeuceSTM

Page 8: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 8

Transactional Interface

Out-place in DeuceSTM

(obj1,field)

(obj2,field)

(obj3,field)

[metainfo1

][metainfo2

][metainfo3

]

Metainfo table

TxRead(obj, field)TxWrite(obj, field, val)

Object instance

Field offset

Table Key

Page 9: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 9

class C { int x; static int x_off = Offset(x);

@Atomic foo() { int t = TxRead(this, x_off ); TxWrite(this, x_off , t+1); }}

Out-place Instrumentation

class C { int x;

@Atomic foo() { x = x+1; }}

Page 10: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 10

TxRead(obj, field)TxWrite(obj, field, val)

Object A

field1field1m

fields*methods()*

Our In-place Approach

Object A

field1fields*methods()*

Object B

fields*methods()*

Object M

[metainfo]

TxRead(metainfo)TxWrite(metainfo, val)

Transactional Interface

Page 11: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 11

Our In-place Approach

class C { int x;

@Atomic foo() { x = x+1; }}

class C { int x; TxField x_m = new TxField();

@Atomic foo() { int t = TxRead(x_m); TxWrite(x_m, t+1); }}

Page 12: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 12

Metainfo and arrays

5[0]

3[1]

8[2]

Original array: int[]

New array: TxArrField[][0]

[1]

[2]

TxArrField

arrayindex = 0[metainfo]

TxArrField

arrayindex = 1[metainfo]

TxArrField

arrayindex = 2[metainfo]

Page 13: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 13

Metainfo and arraysclass C { int[] a = new int[10];

@Atomic foo() { a[1] = a[2]+1; }

void bar() { a[2] = 3;

}}

class C { TxArrInt[] a = new TxArrInt[10]; { int[] t = new int[10]; for (int i=0; i < 10; i++) { a[i] = new TxArrInt(i, t); } } TxField a_m = new TxField();

@Atomic foo() { int t = TxRead(a[2]); TxWrite(a[1], t+1); }

void bar() { a[0].array[3] = 3;

}}

Page 14: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 14

Experimental EvaluationOverhead

• Benchmarking algorithm: TL2 using a lock table

• Base case:– Using out-place strategy (original DeuceSTM)

• Comparing case:– Using in-place strategy• Metainfo objects are created for each field• We use the metainfo object as the key for the external

lock table

Page 15: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 15

Experimental EvaluationOverhead

Write-Update: 0% Using Arrays

No arrays: overhead 3%

With arrays: overhead 20%

Not using Arrays

Overhead in %

Page 16: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 16

Experimental EvaluationOverhead

Write-Update: 10%

No arrays: overhead 7%

With arrays: overhead 25%

Overhead in %

Using ArraysNot using Arrays

Page 17: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 17

Experimental ResultsIn-place vs. Out-place for Multi-version

• Two implementations of JVSTM in DeuceSTM – Out-place strategy• Versions kept in external table with collision list

– In-place strategy• No external table• Versions kept in meta-info field

• How much faster is the in-place implementation?

Page 18: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 18

Experimental EvaluationMulti-version

Average 5 times faster

Speedup in X faster

Using ArraysNot using Arrays Write-Update: 10%

Page 19: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 19

Experimental ResultsMulti-version

• JVSTM algorithm has a performance bottleneck in garbage collection of unused versions– Is it limiting the speedup for in-place?

• JVSTM-noGC: an extension of JVSTM where– Version lists are fixed sized– No garbage collection of unused versions

Page 20: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 20

Experimental EvaluationMulti-version

Average 20—25 times faster

Speedup in X faster

Using ArraysNot using Arrays Write-Update: 10%

Page 21: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 21

Experimental EvaluationJVSTM vs TL2

Using ArraysNot using ArraysWrite-Update: 10%

Page 22: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 22

Concluding Remarks

• In-place strategy support allows:– Efficient support of primitive types• Avoids boxing and unboxing

– Efficient Implementation of multi-version algorithms

– Fair comparison of different kinds of STM algorithms

– Support for distributed STM algorithms• Ongoing work

Page 23: WTM’12, Bern, April 10, 2012 In-Place Metainfo Support in DeuceSTM Ricardo J. Dias, Tiago M. Vale and João M. Lourenço CITI / Universidade Nova de Lisboa

WTM’12, Bern, April 10, 2012 23

The End