investigating the effects of using different nursery sizing policies on performance tony guan, witty...
TRANSCRIPT
Investigating the Effects of Using Different Nursery Sizing Policies on Performance
Tony Guan, Witty Srisa-an, and Neo JiaDepartment of Computer Science & Engineering
University of Nebraska-Lincoln
{xguan,witty,cjia}@cse.unl.edu
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
Nursery(33%)
Mature(66%)
Nursery(33%)
Mature(66%)
Size enlarged by 20%
8
Sizing Policy: Heap Availability
Nursery
Used Mature
Nursery
UsedMature
Nursery
UsedMature
Nursery
InitialAfter
Minor_GC1After
Minor_GC2After
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 aMinor GC
After a fewMinor GC
Copy-Reserve
Copy-Reserve = 100% of nursery*Sizing policy = FR
11
…
Mature UsedMature
UsedMature
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 & SPECjAppServer2004
12
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
App Default HA FR
Minor Full Minor Full Minor Full
Com.sunflow 3001 344 2693 301 3034 354
Derby 2639 3 5422 3 2622 3
Crypto.aes 6308 1010 2785 1540 6300 1023
15
Using different sizing policies can affect the garbage collection performance
Result: jAppServer2004
16
Analysis: jAppServer2004
17
Config Default HA FR
Minor Full Minor Full Minor Full
25 Tx 2523 99 11196 70 2527 86
50 Tx 205 2599 22664 238 164 2706
Analysis: jAppServer2004
Currentheap usage
Copy-Reserve = 100% of nurserySizing policy = FR or Default
18
UsedMature
Copy-Reserve
Nursery
UsedMature
Copy-Reserve
Nursery
Mature heapusage after full
collection
FullCollection Used
Mature
Copy-Reserve
Nursery
FullCollection
Mature heapusage after full
collection
Analysis: jAppServer2004
Initial After aMinor GC
Nursery
Copy-Reserve Used
Mature
Nursery
Copy-Reserve
After a fewMinor GC
Copy-Reserve = 100% of nurserySizing policy = HA
19
UsedMature
Nursery
Copy-Reserve
MinorCollection
MinorCollection
MMU: jAppServer2004 at 25tx
20
MMU: jAppServer2004 at 40tx
21
MMU: jAppServer2004 at 50tx
22
Result: jbb2005
23
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: jbb2005
28
Preliminary Evaluation: jAppServer2004
29
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:
http://cse.unl.edu/~xguan
Thanks!