andy c. king and richard jones university of kent at canterbury removing gc synchronisation

17
Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Upload: edgardo-askren

Post on 01-Apr-2015

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Andy C. King and Richard Jones

University of Kent at Canterbury

Removing GC Synchronisation

Page 2: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Overview

The Problem

An Observation

L & S Heaplets

Implementation

A Fly in the Ointment

Swatting the Fly

Measurements

Future Work

Page 3: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Concurrency in multi-threaded applications

Synchronisation is necessary

Language level• synchronized

VM level• mutator and garbage collector (GC) threads• suspending threads before collecting

the latter can be quite costly

The Problem

Page 4: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Objects may be thread-local (L)

Reachable only within their allocating thread

do not need synchronisation for such objects

Can manage these objects locally

Place in per-thread heap regions called heaplets

No need to stop other threads to collect such objects

Shared objects (G) go in global heap

An Observation

Page 5: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

T1

T2

G L1

L2

L & G Heaplets

Page 6: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Variation on Steensgaard [Stee00]

Escape analysis technique• automatically determine local objects• mark their allocation sites• patch to use appropriate heaplet

Flow-insensitive

Context-sensitive (specialisation)

performed at runtime

Implementation

Page 7: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Implementation (2)

Operates on a snapshot of the world• set of classes loaded at that point in time

JDK 1.22_06 Production Release for Solaris• new GC with heaplets• support specialisation• patches applied in interpreter• patched/specialised methods can be JIT’ed

Page 8: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Dynamic class loading

Class loaded after snapshot

May override method containing L allocation site

Shares the object

L allocation site now S

(transitive closure)

A Fly in the Ointment

Page 9: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

1 class A {2 public void do(Object o) { }3 }4 class Main {5 public static void main(String[] args) {6 A a = new A();7 foo(a); SNAPSHOT ANALYSIS30 A a’ = new A’(); LOAD CLASS A’31 foo(a’);32 }33 public static void foo(A inA) {34 Object o = new Object();35 inA.do(o);36 }37 }

A Fly in the Ointment (2)

Page 10: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Truly shared (G)• reachable from >1 thread• G heap

Truly local (L)• reachable from exactly 1 thread• can prove type• L heaplet

Optimistically local (OL)• reachable from 1 thread• cannot prove type• OL heaplet

Swatting the Fly

Page 11: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

T1

T2

G L1

L2

OL1

OL2

Swatting the Fly (2)

Page 12: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Analyse new classes immediately

Compare methods

If mismatched, OL sites are broken

Class is non-conforming

OL heaplet becomes G

can be done very cheaply

only OL heaplets of referring threads are affected

Swatting the Fly (3)

Page 13: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

T1

T2

G L1

L2

OL1

OL2

Swatting the Fly (4)

Page 14: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Measurements

Classes (resolved) Methods (resolved)% %

Volano client 396 67.17 2946 94.60Volano server 514 67.70 4309 95.57SPECjbb 642 73.36 5365 96.18

Specs Bytecode +Bloat Compiled +BloatKB % KB %

Volano client 680 112 26.79 580 54.66Volano server 3193 196 82.14 657 181.58SPECjbb 2315 286 43.71 1976 68.67

Page 15: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Measurements (2)

L OL GVolano client 51 307 39Volano server 320 1224 474SPECjbb 281 1374 154

Started Elapsed Memorys s MB

Volano client 10 1.5 2.5Volano server 5 2.3 4.2SPECjbb 30 4.4 6.2

Page 16: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Finally get the bloody numbers from the GC…

Future Work

Page 17: Andy C. King and Richard Jones University of Kent at Canterbury Removing GC Synchronisation

Andy C. King and Richard Jones

University of Kent at Canterbury

Q&A