Investigating the Effects of Using Different Nursery Sizing Policies on Performance Tony Guan, Witty Srisa-an, and Neo Jia Department of Computer Science & Engineering University of Nebraska-Lincoln
Throughput performance of SPECjAppServer2004 JBoss application server HotSpot VM released as part of OpenJDK1.7 –Parallel generational collector with 8 minor and 8 major collection threads –256 MB heap for this example (very little paging) –Nursery and mature spaces are set to 1:2 and periodically resized to maximize throughput 2 Setting the Stage …
Setting the Stage Performance of the generational collector has something to do with such throughput behavior –Higher workload often results in higher GC overhead –More GC work means less useful work done by an application 3
4 Not all generational collectors are created equal!
Motivation One factor that differs among different generational collector implementations is nursery sizing policy –There are multiple ways to size the nursery and mature space –Performance ramifications of using each policy have not been widely investigated 5
Research Goals Can performance be affected by using different sizing policies? –Modify a VM to support multiple sizing policies If so, how can it be affected? –Perform analysis by observing various metrics including execution time, throughput, GC behavior, and minimum mutator utilization 6
Agenda Overview of investigated sizing policies Experimental methodology Results of our evaluation Introducing a hybrid policy Conclusions 7
Sizing Policy: Fixed Ratio Nursery (33%) Mature (66%) Nursery (33%) Mature (66%) Size enlarged by 20% 8
Sizing Policy: Heap Availability Nursery Used Mature Nursery Used Mature Nursery Used Mature Nursery Initial After Minor_GC1 After Minor_GC2 After Minor_GCn 9
Sizing Policy: GC Ergonomics Nursery (33%) Mature (66%) Nursery (48%) Mature (52%) Nursery (40%) Mature (60%) Size and ratio are adjusted to meet performance goal(s) 10
Terminology: Copy-Reserve* Nursery Initial After a Minor GC After a few Minor GC Copy- Reserve Copy-Reserve = 100% of nursery *Sizing policy = FR 11 … Mature Used Mature Used Mature
Experimental Setting Three nursery sizing policies –GC Ergonomics Policy (Default) –Fixed Ratio Policy (FR) –Heap Availability Policy (HA) Multithreaded benchmarks –SPECjvm2008 (17) –Multithreaded benchmarks from DaCapo (eclipse,hsqldb,lusearch,xalan) –SPECjbb2005 & SPECjAppServer
Experimental Setting JVM (Hotspot) settings: –Memory: Old:Young=2:1 2 times minimum heap for each application 256MB for jAppServer2004 and 1GB for jbb2005 –GC : 8 threads for both minor & full GC, policy modification based on parallel collector Platform: Intel Xeon 8 cores, 16GB, running Linux Methodology: 5 runs, report best, worst, and average 13
Result: jvm2008 & DaCapo 14 The remaining thirteen benchmarks show little sensitivity to different policies
Analysis: jvm2008 & DaCapo AppDefaultHAFR MinorFullMinorFullMinorFull Com.sunflow Derby Crypto.aes Using different sizing policies can affect the garbage collection performance
Result: jAppServer
Analysis: jAppServer ConfigDefaultHAFR MinorFullMinorFullMinorFull 25 Tx Tx
Analysis: jAppServer2004 Current heap usage Copy-Reserve = 100% of nursery Sizing policy = FR or Default 18 Used Mature Copy- Reserve Nursery Used Mature Copy- Reserve Nursery Mature heap usage after full collection Full Collection Used Mature Copy- Reserve Nursery Full Collection Mature heap usage after full collection
Analysis: jAppServer2004 InitialAfter a Minor GC Nursery Copy- Reserve Used Mature Nursery Copy- Reserve After a few Minor GC Copy-Reserve = 100% of nursery Sizing policy = HA 19 Used Mature Nursery Copy- Reserve Minor Collection Minor Collection
MMU: jAppServer2004 at 25tx 20
MMU: jAppServer2004 at 40tx 21
MMU: jAppServer2004 at 50tx 22
Result: jbb
MMU: jbb2005 at 8whs 24
MMU: jbb2005 at 23whs 25
Summary HA does not do as well as the other two policies when the workload is light HA allows the server to respond to requests significantly longer under heavy workload 26
A Hybrid Policy Use default policy for the peak performance during light workload Use HA as soon as the GC behavior has reached a critical point –number of consecutive FullGC >= consecFailure (e.g., 2) 27
Preliminary Evaluation: jbb
Preliminary Evaluation: jAppServer
Preliminary Evaluation: Switching Between 30
Conclusions Three nursery sizing policies are investigated using 23 benchmarks –Sizing policy does matter! It can impact performance and serviceability of large servers –Up to 36% performance differences have been observed in some benchmarks The hybrid policy can be useful in large servers to better handle heavy workload 31
Investigating the Effects of Using Different Nursery Sizing Policies on Performance For source of modified hotspot & modified jbb2005 see: Thanks!