Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Connectivity-Based Garbage Collection Martin Hirzel University of Colorado at Boulder Collaborators: Amer Diwan, Michael Hind, Hal Gabow, Johannes Henkel, Matthew Hertz 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, … 2 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 3 Example Heap o1 s1 o2 o3 s2 Boxes: heap objects o4 o5 o6 o7 Arrows: pointers o8 o9 g o15 o10 o11 o14 o13 o12 Long box: stack + global variables 4 Thesis o1 o2 o3 o4 o5 o6 o7 o8 o9 o15 o10 o11 o14 o13 stack + globals 1. Objects form distinct data structures 2. Connected objects die together 3. Garbage collectors can exploit 1. and 2. to reclaim objects efficiently o12 5 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 6 Outline • • • • Garbage Collector Design Principles Family of Garbage Collectors Design Space Exploration Pointer Analysis for Java 7 Garbage Collector Design Principles “Do partial collections.” o1 o2 o3 o4 o5 Don’t collect the full heap every time Shorter pause times o6 o7 o8 o9 o15 o10 o11 o14 o13 stack + globals o12 8 Garbage Collector Design Principles “Predict lifetime based on age.” o1 o2 o3 o4 o5 o6 o7 Generational hypothesis: Most objects die young Generational garbage collection: – Partition by age – Collect young objects most often o8 o9 o15 o10 o11 o14 o13 stack + globals o12 young generation Low time overhead That’s the state of the art. old generation 9 Garbage Collector Design Principles Generational GC Problems o1 o2 o3 o4 o5 o6 o7 o8 o9 o15 o10 Regular full collections Long peak pause Old-to-young pointers Need bookkeeping ~37.5% long-lived objects Pig in the python o11 o14 o13 stack + globals o12 young generation old generation 10 Garbage Collector Design Principles “Collect connected objects together.” Likelihood that two objects die at the same time: Connectivity Example Likelihood Any pair o1 o2 33.1% Weakly connected o1 o2 46.3% Strongly connected o1 o2 72.4% Direct pointer o1 o2 76.4% ? 11 Garbage Collector Design Principles “Focus on objects with few ancestors.” Median number of Lifetime ancestor objects Short 2 objects Long 83,324 objects Shortlived objects are easy to collect 12 Garbage Collector Design Principles “Predict lifetime based on roots.” o1 s o2 g o3 Lifetime Objects reachable … Short Long indirectly from stack 25.6% 16.2% only directly from stack 32.9% o4 from globals 0.8% 4.0% 20.5% Total 62.5% 37.5% stack + globals For details, see our [ISMM’02] paper. 13 Outline • • • • Garbage Collector Design Principles Family of Garbage Collectors Design Space Exploration Pointer Analysis for Java 14 CBGC Family of Garbage Collectors: Connectivity-Based Garbage Collection p1 o1 o2 p2 o3 o4 o5 o6 o7 o8 o9 p3 o15 o10 o11 o14 o13 stack + globals o12 p4 • Do partial collections. • Collect connected objects together. • Predict lifetime based on age. • Focus on objects with few ancestors. • Predict lifetime based on roots. 15 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. Chooser Choose “good” set of partitions 4. Partial collection Collect chosen partitions 16 Family of Garbage Collectors Partitioning Problem p1 o1 o2 p2 o3 o4 o5 o6 o7 o8 o9 p3 o15 o10 Find fine-grained partitions, where • Partition edges respect pointers • Objects don’t move between partitions o11 o14 o13 stack + globals o12 p4 17 Family of Garbage Collectors Partitioning Solutions p1 o1 o2 p2 o3 o4 – o1 may point to o2 if o1 has a field of a type compatible to o2 o5 o6 o7 o8 o9 p3 o15 o10 o11 o14 o13 stack + globals o12 Pointer analysis • Type-based [Harris] p4 • Constraint-based [Andersen] – We will discuss this later in the talk 18 Family of Garbage Collectors Estimator Problem p1 1 dead + 2 live p2 – Objects that can be reclaimed – Pay-off 3 dead + 3 live p3 2 dead + 2 live stack + globals For each partition guess dead live 2 dead + 0 live p4 – Objects that must be traversed – Cost 19 Family of Garbage Collectors Estimator Solutions p1 1 dead + 2 live p2 3 dead + 3 live p3 2 dead + 2 live stack + globals 2 dead + 0 live p4 Heuristics • Connected objects die together • Most objects die young • Objects reachable from globals live long • The past predicts the future 20 Family of Garbage Collectors Chooser Problem p1 1 dead + 2 live p2 3 dead + 3 live p3 7 dead + 5 live 2 dead + 2 live stack + globals 2 dead + 0 live Pick subset of partitions • Maximize total dead • Minimize total live • Closed under predecessor relation No bookkeeping for external pointers p4 21 Family of Garbage Collectors Chooser Solutions p1 1 dead + 2 live p2 3 dead + 3 live p3 7 dead + 5 live 2 dead + 2 live stack + globals Optimal algorithm based on network flow [TR] Simpler, greedy algorithm 2 dead + 0 live p4 22 Family of Garbage Collectors Partial Collection Problem rest of heap o2 p2 o55 o6 o7 o88 o9 p3 o15 o10 10 o13 stack + globals o11 11 o12 Look only at chosen partitions Traverse o reachable objects o Reclaim unreachable objects o14 p4 23 Family of Garbage Collectors Partial Collection Solutions rest of heap o2 p2 o55 o6 o7 o88 o9 p3 o15 o10 10 o13 stack + globals o11 11 o12 o14 Generalize canonical full-heap algorithms • Mark and sweep [McCarthy’60] • Semi-space copying [Cheney’70] • Treadmill [Baker’92] p4 24 Outline • • • • Garbage Collector Design Principles Family of Garbage Collectors Design Space Exploration Pointer Analysis for Java 25 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? 26 Design Space Exploration Simulator Methodology Garbage collection simulator (under GPL) – Uses traces of allocations and pointer writes from 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 27 Design Space Exploration How good is a naïve CBGC? jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac 1.72 Cost in time 0 0.87 Cost in space 0 0.22 Pause times 0 Full-heap CBGC-naïve Semi-space copying • Type-based partitioning [Harris] • Heuristics estimator Appel Copying generational 28 Design Space Exploration How good could CBGC be in 20 years? jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac 1.72 Cost in time 0 0.87 Cost in space 0 0.22 Pause times 0 Full-heap CBGC-oracles Appel Semi-space copying Partitioning and estimator based on trace Copying generational 29 Design Space Exploration How good could CBGC be in 20 years? 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 30 How well does CBGC do in a Java virtual machine? Implementation in progress Need a pointer analysis for the partitioning 31 Outline • • • • Garbage Collector Design Principles Family of Garbage Collectors Design Space Exploration Pointer Analysis for Java 32 Pointer Analysis for Java Which analysis do we need? Cost in time jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac jack xalan jbb javac 1.7 0 Full-heap Semi-space copying CBGC Type-based partitioning [Harris] Type-based partitioning (oracles) Appel Allocation site partitioning (oracles) Copying generational [Andersen] 33 Pointer Analysis for Java Andersen’s Analysis • Allocation-site granularity • Set-inclusion constraints • Flow and context insensitive can’t analyze Java ahead of time! What When Constraint generation Model flow of pointers Ahead-of-time compilation Constraint propagation Find fixed-point solution Ahead-of-time compilation 34 Pointer Analysis for Java Andersen for all of Java Do as little as possible as late as possible What Constraint generation Model flow of pointers Constraint propagation Find next fixedpoint solution When • • • • • • VM build and start-up Class loading Type resolution Method compilation (JIT) Execution of reflection Execution of native code Points-to information used (before garbage collection) 35 Pointer Analysis for Java Correctness Properties … Constraint propagation Constraint generation … time If there is a pointer then the results predict it Can not do any better for Java! 36 Pointer Analysis for Java Analysis Cost Constraint generation Constraint propagation Eager At GC At End Seconds 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 Expensive, but once behavior stabilizes, costs diminish to zero 37 Pointer Analysis for Java Validation Lots 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 38 Wrapping Up 39 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] … 40 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 loading DOIT – [PechtchanskiSarkar’01] XTA – [QianHendren’04] Ruf’s escape analysis – [BogdaSingh’01, King’03] Demand-driven / incremental analysis 41 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 42 Contributions presented in this talk Connectivity-based GC design principles [ISMM’02] CBGC, a new family of garbage collectors; Design space exploration with simulator [OOPSLA’03] First non-trivial pointer analysis for Java [ECOOP’04 (to appear)] http://www.cs.colorado.edu/~hirzel 43