connectivity-based garbage collection martin hirzel university of colorado at boulder collaborators:...
TRANSCRIPT
Connectivity-BasedGarbage Collection
Martin HirzelUniversity of Colorado at Boulder
Collaborators: Amer Diwan, Michael Hind, Hal Gabow, Johannes Henkel, Matthew Hertz
2
Garbage Collection Benefits
Garbage collection leads to simpler• Design no complex deallocation protocols
• Implementation automatic deallocation
• Maintenance fewer bugs
Benefits are widely accepted
• Java, C#, Python, …
3
Garbage Collection:Haven’t we solved this problem yet?• For a state-of-the-art garbage collector:
– time ~14% of execution time– space 3x high watermark– pauses 0.8 seconds
• Can reduce any one cost
• Challenge: reduce all three costs
4
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o14
o12o13
Example Heap
Boxes: heap objects
Arrows: pointers
Long box: stack + global variables
s1
s2
g
5
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o14
o12o13
Thesis
1. Objects form distinct data structures
2. Connected objects die together
3. Garbage collectors can exploit 1. and 2. to reclaim objects efficiently
stack +globals
6
Experimental Infrastructure
JikesRVM Research Virtual Machine– From IBM Research– Written in Java– Application and runtime system share heap
Good garbage collection even more important
Benchmarks– SPECjvm98 suite and SPECjbb2000– Java Olden suite– xalan, ipsixql, nfc, jigsaw
7
Outline
• Garbage Collector Design Principles
• Family of Garbage Collectors
• Design Space Exploration
• Pointer Analysis for Java
8
Garbage Collector Design Principles
“Do partial collections.”
Don’t collect the full heap every time
Shorter pause times
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o14
o12o13
stack +globals
9
Garbage Collector Design Principles
“Predict lifetime based on age.”
Generational hypothesis:Most objects die young
Generational garbage collection:– Partition by age– Collect young objects
most often
Low time overhead
That’s the state of the art.
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o14
o12o13
stack +globals
young generation old generation
10
Garbage Collector Design Principles
Generational GC Problems
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o14
o12o13
stack +globals
young generation old generation
Regular full collections Long peak pause
Old-to-young pointers Need bookkeeping
~37.5% long-lived objects Pig in the python
11
Garbage Collector Design Principles
“Collect connected objects together.”Likelihood that two objects die at the same time:
Connectivity Example Likelihood
Any pair 33.1%
Weakly connected 46.3%
Strongly connected 72.4%
Direct pointer 76.4%
o2o1 ?
o2o1
o2o1
o2o1
12
Garbage Collector Design Principles
“Focus on objects with few ancestors.”
Shortlived objects are easy to collect
LifetimeMedian number of ancestor objects
Short 2 objects
Long 83,324 objects
13
Garbage Collector Design Principles
“Predict lifetime based on roots.”
o1
o2
o3
stack +globals
Lifetime
Objects reachable … Short Long
indirectly from stack 25.6% 16.2%
only directly from stack 32.9% 0.8%
from globals 4.0% 20.5%
Total 62.5% 37.5%
o4g
s
For details, see our [ISMM’02] paper.
14
Outline
• Garbage Collector Design Principles
• Family of Garbage Collectors
• Design Space Exploration
• Pointer Analysis for Java
15
CBGC Family of Garbage Collectors:
Connectivity-Based Garbage Collection
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o12o13
p1
p2
p3
p4
o14
stack +globals
• Do partial collections.• Collect connected
objects together.• Predict lifetime based
on age.• Focus on objects with
few ancestors.• Predict lifetime based
on roots.
16
Family of Garbage Collectors
Components of CBGC
Before allocation:1. Partitioning
Decide into which partition to put each object
Collection algorithm:2. Estimator
Estimate dead + live objects for each partition
3. ChooserChoose “good” set of partitions
4. Partial collectionCollect chosen partitions
17
Find fine-grained partitions, where
• Partition edgesrespect pointers
• Objects don’t move between partitions
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o12o13
p1
p2
p3
p4
Family of Garbage Collectors
Partitioning Problem
o14
stack +globals
18
Pointer analysis• Type-based [Harris]
– o1 may point to o2 if o1 has a field of atype compatible to o2
• Constraint-based [Andersen]– We will discuss this
later in the talk
o2
o1
o4o3
o5
o10
o6
o8o9
o7
o11
o15
o12o13
p1
p2
p3
p4
Family of Garbage Collectors
Partitioning Solutions
o14
stack +globals
19
Family of Garbage Collectors
Estimator Problem
For each partition guess
dead – Objects that can be
reclaimed– Pay-off
live– Objects that must be
traversed– Cost
3 dead + 3 live
1 dead + 2 live
2 dead + 0 live
p1
p2
p3
p42 dead + 2 live
stack +globals
20
Family of Garbage Collectors
Estimator Solutions
Heuristics• Connected objects die
together• Most objects die
young• Objects reachable
from globals live long• The past predicts the
future
3 dead + 3 live
1 dead + 2 live
2 dead + 0 live
p1
p2
p3
p42 dead + 2 live
stack +globals
21
Family of Garbage Collectors
Chooser Problem
Pick subset of partitions• Maximize total dead
• Minimize total live
• Closed under predecessor relation
No bookkeeping for external
pointers
p3
p1
p2
p3
p4
7 dead + 5 live
3 dead + 3 live
1 dead + 2 live
2 dead + 0 live
2 dead + 2 live
stack +globals
22
Family of Garbage Collectors
Chooser Solutions
Optimal algorithm based on network flow [TR]
Simpler, greedy algorithm
p3
p1
p2
p3
p4
7 dead + 5 live
3 dead + 3 live
1 dead + 2 live
2 dead + 0 live
2 dead + 2 live
stack +globals
23
o5
o10
o8
o11
Family of Garbage Collectors
Partial Collection Problem
o2
o6
o9
o7
o5
o10
o8
o11
o12o13
o15
p2
p3
p4
rest of heap
o14
Look only at chosen partitions
Traverse reachable objects
Reclaim unreachable objects
stack +globals
o
o
24
o5
o10
o8
o11
Family of Garbage Collectors
Partial Collection Solutions
o2
o6
o9
o7
o5
o10
o8
o11
o12o13
o15
p2
p3
p4
rest of heap
o14
stack +globals
Generalize canonical full-heap algorithms
• Mark and sweep[McCarthy’60]
• Semi-space copying[Cheney’70]
• Treadmill[Baker’92]
25
Outline
• Garbage Collector Design Principles
• Family of Garbage Collectors
• Design Space Exploration
• Pointer Analysis for Java
26
Design Space Exploration
Questions
How good is a naïve CBGC?
How good could CBGC be in 20 years?
How well does CBGC do in a JVM?
27
Design Space Exploration
Simulator MethodologyGarbage collection simulator (under GPL)
– Uses traces of allocations and pointer writesfrom our benchmark runs
Simulator advantages– Easier to implement variety of collector algorithms– Know entire trace beforehand:
can use that for “in 20 years” experiments
Simulator disadvantages– No bottom-line performance numbers
Currently adding CBGC to JikesRVM
28
Design Space Exploration
How good is a naïve CBGC?
Cost in time
Cost in space
Pause times
Full-heapSemi-space
copying
CBGC-naïve• Type-based
partitioning [Harris]• Heuristics
estimator
AppelCopying
generational
jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac1.72
0
0
0
0.87
0.22
29
Cost in time
Cost in space
Pause times
Full-heapSemi-space
copying
CBGC-oraclesPartitioning
and estimatorbased on trace
AppelCopying
generational
jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac
Design Space Exploration
How good could CBGC be in 20 years?1.72
0
0
0
0.87
0.22
30
CBGC with oracles beats Appel– We did not find a “performance wall”– CBGC has potential
The performance gap between CBGC with oracles and naïve CBGC is large
– Research challenges
Design Space Exploration
How good could CBGC be in 20 years?
31
How well does CBGC doin a Java virtual machine?
Implementation in progress
Need a pointer analysis for the partitioning
32
Outline
• Garbage Collector Design Principles
• Family of Garbage Collectors
• Design Space Exploration
• Pointer Analysis for Java
33
Pointer Analysis for Java
Which analysis do we need?
jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac
Cost in time
Full-heap CBGC AppelSemi-space
copyingType-based partitioning
[Harris]
Type-based partitioning (oracles)
Allocation site partitioning (oracles)
Copying generational
[Andersen]
1.7
0
34
Pointer Analysis for Java
Andersen’s Analysis
What When
Constraint generation
Model flow of pointers
Ahead-of-timecompilation
Constraint propagation
Find fixed-point solution
Ahead-of-time compilation
• Allocation-site granularity• Set-inclusion constraints• Flow and context insensitive
can’t analyze Javaahead of time!
35
Pointer Analysis for Java
Andersen for all of Java
What When
Constraint generation
Model flow of pointers
• VM build and start-up• Class loading• Type resolution• Method compilation (JIT)• Execution of reflection• Execution of native code
Constraint propagation
Find next fixed-point solution
Points-to information used (before garbage collection)
Doas little as possibleas late as possible
36
Pointer Analysis for Java
Correctness Properties
Can not do any better for Java!
time… …
Constraintgeneration
Constraintpropagation
If there is a pointer
then the results predict it
37
Pointer Analysis for Java
Analysis Cost
Expensive, but once behavior stabilizes,costs diminish to zero
Constraint Constraint propagation
generation Eager At GC At EndSeconds Count Seconds Count Seconds Count Seconds
compress 21.4 130 3.2 5 40.4 1 67.4
db 20.1 143 3.6 5 42.9 1 71.4
mtrt 20.3 265 2.1 5 46.2 1 68.1
mpegaudio 20.6 319 2.2 5 46.1 1 66.6
jack 21.2 397 4.2 7 49.0 1 78.2
jess 22.3 733 6.8 8 49.7 1 85.7
javac 21.1 1,107 5.9 10 87.4 1 187.6
xalan 20.1 1,728 4.9 8 85.7 1 215.7
38
Pointer Analysis for Java
ValidationLots of corner cases
– Dynamic class loading– Reflection– Native code
Missing any one leads to nasty bugs– CBGC relies on conservative results
We performed validation runs– Check analysis results against pointers in
heap during garbage collection
40
Related Work: Using Program Analysis for Garbage Collection
Stack allocation [ParkGoldberg’92, …]
Regions [TofteTalpin’97, …]
Liveness analysis [AgesenDetlefsMoss’98, …]
Early reclamation [Harris’99]
Thread-local heaps [Steensgaard’00, …]
Object inlining [DolbyChien’00]
Write-barrier removal [ZeeRinard’02, Shuf’02]
…
41
Related Work:Pointer analyses for Java
Andersen’s analysis for “static Java”[RountevMilanovaRyder’01][LiangPenningsHarrold’01][WhaleyLam’02][LhotakHendren’03]
Weaker analyses with dynamic class loadingDOIT – [PechtchanskiSarkar’01]XTA – [QianHendren’04]Ruf’s escape analysis – [BogdaSingh’01, King’03]
Demand-driven / incremental analysis
42
Other Research Interests
Accuracy of Garbage Collection[M.S.Thesis,ISMM’00,ECOOP’01,TOPLAS’02]
Profiling[FDDO’01,Patent’01a]
Dynamic Optimizations, Prefetching[PLDI’02,Patent’02b]
Future directions:
More techniques for performance improvement
Reducing bugs, improving productivity