an adaptive, region-based allocator for java feng qian, laurie hendren {fqian, hendren}@cs.mcgill.ca...

32
An Adaptive , Region- based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill University

Upload: miles-foster

Post on 29-Dec-2015

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

An Adaptive, Region-based Allocator for Java

Feng Qian, Laurie Hendren{fqian, hendren}@cs.mcgill.ca

Sable Research GroupSchool of Computer Science

McGill University

Page 2: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Motivation

● Reduce GC work by object stack-allocation

● Drawbacks of previous approach for Java– whole-program escape analyses

– restrictions on stackable objects:● trivial finalize method

● limited sizes of arrays

● non-overlapping lifetime in a loop

Page 3: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Goals● Reduce GC work by cheaply reclaiming

non-escaping objects, but:– should not rely on expensive program

analyses

– overcome restrictions of stack-allocation

● Preserve full semantics of Java Virtual Machines

● Explore runtime information of Java programs

Page 4: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Road Map

● Motivation & Introduction

Region-based Allocator

● Experimental Results

● Conclusion & Future work

Page 5: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Proposal● Use write barriers to dynamically

categorize allocation sites as local or non-local

● Allocate objects in regions instead of stack frames

● Adaptively change allocation decisions

Page 6: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

R2

Th

read S

tack

From

Sp

ace

To S

pace

Heap

Global Region

R1 R2R2

Page 7: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Th

read S

tack

From

Sp

ace

To S

pace

Heap

R1

Global Region

R2

Page 8: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Definitions

● Escaping Object: An object escapes its allocation region if and only if it is referenced by an object in another region

● Non-local Allocation Site: An allocation site becomes non-local when an object created by that site escapes

Page 9: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Heap Organization

● Heaps are managed as regions consisting of a set of pages: – A Global region contains escaping objects

and objects created from non-local sites

– A Free list links free pages

– Local regions act as extensions of stack frames, allocate spaces for objects created from local sites

Page 10: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Allocation Sites and Objects

● Each allocation site has one unique index, with one of two states:– local, creates objects in local regions– non-local, creates object in the Global

region● An object header contains:

– the index of its allocation site (sharing space with thin locks)

– an escaping bit

Page 11: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

a = new A();

a.1

1: a = local_new A();

b.f = a

1: a = global_new A();

ba.1

Page 12: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Region Allocation

● Method prologue and epilogue have instructions allocating and releasing regions

● A region has one of two states: – clean: pages are reclaimed when the host

stack frame popped– dirty: pages are appended to the Global

region collected by GC

Page 13: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Write Barriers

● Objects may escape local regions by four types of byte codes: putstatic, putfield, aastore, and areturn

● Write barriers capturing escaping objects have two purposes:– safety: marking regions as dirty

– adaptation: marking allocation sites as non-local

Page 14: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Put Them Together

● Initially, all allocation sites in a method are in the local state

● As the program proceeds, some become non-local, and will create future objects in the Global region

● The local regions of future activations are more likely to be clean

● Write barriers guarantee the safety

Page 15: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Specific Issues for Java

● areturn instruction● exceptions (and athrow instruction)● finalize method

Page 16: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Road Map

● Motivation & Introduction

● Region-based Allocator

Experimental Results

● Conclusion & Future work

Page 17: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Prototype Implementation

● Jikes RVM: we choose the baseline compiler, and a semi-space copying collector

● Settings:– Fixed page size – Did not use large object heap– Objects straddling multiple pages

Page 18: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Experimental Results

● Behavior study of SPECjvm98 & soot-c: – Allocation behavior– Effect of regions and page sizes on

collections and fragmentation– Behavior of write barriers– Effect of adaptation– Impact on thin locks

Page 19: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

R2 R1R1R1b

a

c

Page 20: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Allocation DistributionAllocation Behavior

80%

85%

90%

95%

100%

256

1K 4K 256

1K 4K 256

1K 4K 256

1K 4K

javac jess mtrt soot-c

Dis

trib

uti

on

firstpage nextpages searching

Page 21: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Effect of Regions and Page Sizes

Dynamic measurement of:● number of collections● froth rate (unused bytes on pages)

Page 22: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

# collections froth rateBASE 256 1K 4K 256 1K 4K

compress 7 7 7 (13%) 7 0.03% 0.11% 0.47%

db 4 4 4 ( 0%) 4 0.05% 0.23% 1.05%

jack 9 7 8 (23%) 9 1.29% 5.97% 27.52%

javac 12 12 15 ( 9%) 25 4.96% 29.41% 130.42%

jess 12 11 11 ( 7%) 11 0.13% 0.53% 2.19%

mpeg 0 0 0 (28%) 0 0.62% 2.10% 9.05%

mtrt 7 1 1 (81%) 1 0.03% 0.09% 0.38%

soot-c 15 13 13 (19%) 15 1.09% 4.89% 23.49%

* 50M total heap space with ~25M in each semi-space

Page 23: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Behavior of Write BarriersWrite barriers for putfield, aastore :

80%

85%

90%

95%

100%

Dis

trib

uti

on

escaped

sameregion

samepage

null

quick

Page 24: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Region Allocation at Runtime

0%

20%

40%

60%

80%

100%

1 21 41 61 81 101 121 141 161 181 201 221 241 261

Bytes Allocated (per 1M)

Allo

ca

ted

on

Lo

ca

l R

eg

ion

s

soot-c

javac

jess

mtrt

Page 25: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Effect of AdaptationJavac: ratio of clean regions 498K/499K

80%

85%

90%

95%

100%

1 51 101 151 201 251 301 351 401 451

Released Regions (per 1,000)

Ra

tio

of

Cle

an

Re

gio

ns

Page 26: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Effect of Adaptation (Cont.)

Javac: ratio of clean regions with/without adaptation

0%

20%

40%

60%

80%

100%

1 21 41 61 81 101 121 141 161 181

Released Regions (per 10,000)

Rati

o o

f C

lean

Reg

ion

s adaptation

no adaptation

Page 27: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

More on Adaptation

with adaptation without adaptation

#collections

froth #collections

froth

javac 15 29% 96 589%

jess 11 1% 2 9%

•Current scheme predicts future objects will escape after one object from that site escapes

•Without adaptation predicts future objects non-escaping

Page 28: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Impact on Thin Locks

● Share space with thin locks in a two-word object header.

● Less than 5% of thin locks require one additional check on common path

● One additional check on uncommon path

(see the paper for details)

Page 29: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Related Work

● Escape analysis and stack allocation for Java programs– Gay et.al. [CC’00], Choi et.al. [OOPSLA’99],

Blanchet [OOPSLA’99], Whaley et.al. [OOPSLA’99], …

● Memory Management with Regions (Scoped memory regions)– Tofte et.al.[IC’97], Gay et.al. [PLDI’98],

Deters et.al. [ISMM’02], …

Page 30: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Conclusions

● We have presented the idea of using regions to reduce the work of GC in Java Virtual Machines

● We have implemented the prototype in a real virtual machine and proposed several techniques to reduce the overhead

● Our study of allocation behavior validates the idea

Page 31: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

Future Work

● Relax definition of escaping by using stack discipline and region hierarchy

● Look for better prediction schemes (calling context)

● Optimize write barriers with cheap analyses

● Combine the allocator with other types of GC

Page 32: An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill

?