Jun,

First note that you are using the UseParallelGC collector and it
changes the tenuring threshold and survivor space sizes
differently than the other collectors.  You might find this helpful.

https://blogs.oracle.com/jonthecollector/entry/the_unspoken_the_why_of

In particular turn on -XX:AdaptiveSizePolicyOutputInterval=1 and it
will output reasons why heap sizes and tenuring threshold are being
changed.

On 12/16/2015 01:52 PM, Jun Zhuang wrote:

Hi,

I am trying to gain some knowledge regarding how GC works by running load tests against a java web service, hosted on JBOSS, and adjusting various java startup parameters. One interesting thing I noticed was the tenuring threshold, I thought it would change with size of the survivor space, but I could never make it happen, can someone provide some clue? Following is what I did:

*_JAVA startup parameters:_*

-Xms2g -Xmx2g -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=126

I then changed the SurvivorRatio to 30, 6, and 1, but the “new threshold” in the GC log always stayed at 1 after the first few young GCs, adding -XX:TargetSurvivorRatio=90 did not seem to make any difference:


Use InitialTenuringThreshold to affect the starting threshold.

4.504: [GC

Desired survivor size 16777216 bytes, new threshold 7 (max 15)

[PSYoungGen: 98304K->7553K(114688K)] 98304K->7553K(2080768K), 0.0199500 secs] [Times: user=0.04 sys=0.01, real=0.02 secs]

12.784: [GC

Desired survivor size 16777216 bytes, new threshold 7 (max 15)

[PSYoungGen: 105857K->8979K(114688K)] 105857K->8979K(2080768K), 0.0177280 secs] [Times: user=0.04 sys=0.01, real=0.01 secs]

18.935: [GC

Desired survivor size 16777216 bytes, new threshold 7 (max 15)

[PSYoungGen: 107283K->13322K(114688K)] 107283K->13322K(2080768K), 0.0282660 secs] [Times: user=0.06 sys=0.00, real=0.02 secs]

22.944: [GC

Desired survivor size 16777216 bytes, new threshold 7 (max 15)

[PSYoungGen: 111626K->11304K(114688K)] 111626K->11377K(2080768K), 0.0255770 secs] [Times: user=0.08 sys=0.00, real=0.03 secs]

24.089: [GC

Desired survivor size 16777216 bytes, new threshold 6 (max 15)

[PSYoungGen: 109608K->16377K(114688K)] 109681K->17678K(2080768K), 0.0373650 secs] [Times: user=0.10 sys=0.01, real=0.04 secs]

24.801: [GC

Desired survivor size 16777216 bytes, new threshold 5 (max 15)

[PSYoungGen: 114681K->16358K(114688K)] 115982K->21621K(2080768K), 0.0627800 secs] [Times: user=0.21 sys=0.01, real=0.06 secs]

25.500: [GC

Desired survivor size 16777216 bytes, new threshold 4 (max 15)

[PSYoungGen: 114662K->16359K(114688K)] 119925K->30181K(2080768K), 0.0577540 secs] [Times: user=0.17 sys=0.01, real=0.06 secs]

26.280: [GC

Desired survivor size 16777216 bytes, new threshold 3 (max 15)

[PSYoungGen: 114663K->16354K(114688K)] 128485K->37506K(2080768K), 0.0539360 secs] [Times: user=0.15 sys=0.01, real=0.05 secs]

27.330: [GC

Desired survivor size 16777216 bytes, new threshold 2 (max 15)

[PSYoungGen: 114658K->14928K(114688K)] 135810K->42581K(2080768K), 0.0588730 secs] [Times: user=0.20 sys=0.01, real=0.06 secs]

28.108: [GC

Desired survivor size 16777216 bytes, new threshold 1 (max 15)

[PSYoungGen: 113232K->16363K(114688K)] 140972K->59269K(2080768K), 0.0586460 secs] [Times: user=0.15 sys=0.01, real=0.06 secs]

. . .

1538.726: [GC

Desired survivor size 3932160 bytes, new threshold 1 (max 15)

[PSYoungGen: 129280K->1792K(125184K)] 433305K->308417K(2091264K), 0.2403020 secs] [Times: user=0.83 sys=0.01, real=0.24 secs]

1543.537: [GC

Desired survivor size 4063232 bytes, new threshold 1 (max 15)

[PSYoungGen: 125184K->2592K(126016K)] 431809K->310233K(2092096K), 0.2318620 secs] [Times: user=0.83 sys=0.01, real=0.23 secs]

1548.268: [GC

Desired survivor size 3932160 bytes, new threshold 1 (max 15)

[PSYoungGen: 125984K->1344K(127232K)] 433625K->310657K(2093312K), 0.2294920 secs] [Times: user=0.83 sys=0.01, real=0.23 secs]

If the threshold is really 1, then nothing should be promoted to the old gen, but that definitely was not the case.


Threshold of 1 will promote everything.

-------------------------------------------------------------------------------------------------------

I also experimented with -XX:-UsePSAdaptiveSurvivorSizePolicy, the “new threshold” always stays at 7 despite the SurvivorRatio value.


Yes, turning off UsePSAdaptiveSurvivorSizePolicy stops the adjustment of the tenuring threshold and survivor spaces
for UseParallelGC.

Jon

1643.408: [GC

Desired survivor size 4194304 bytes, new threshold 7 (max 15)

[PSYoungGen: 519729K->4032K(520192K)] 935797K->420443K(2093056K), 0.2605620 secs] [Times: user=0.94 sys=0.01, real=0.26 secs]

1662.092: [GC

Desired survivor size 4194304 bytes, new threshold 7 (max 15)

[PSYoungGen: 520128K->4096K(520192K)] 936539K->421235K(2093056K), 0.2588890 secs] [Times: user=0.95 sys=0.01, real=0.26 secs]

1680.882: [GC

Desired survivor size 4194304 bytes, new threshold 7 (max 15)

[PSYoungGen: 520192K->4096K(520192K)] 937331K->422347K(2093056K), 0.2661180 secs] [Times: user=0.97 sys=0.00, real=0.27 secs]

1698.975: [GC

Desired survivor size 4194304 bytes, new threshold 7 (max 15)

[PSYoungGen: 520192K->4096K(520192K)] 938443K->423246K(2093056K), 0.2626090 secs] [Times: user=0.95 sys=0.01, real=0.26 secs]

Appreciate any input,

Jun

*//*

*/Jun Zhuang/**//*

/Sr. Performance QA Engineer | Hobsons///



_______________________________________________
hotspot-gc-use mailing list
hotspot-gc-use@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use

_______________________________________________
hotspot-gc-use mailing list
hotspot-gc-use@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use

Reply via email to