We recently moved one of our apps onto a new box running i7 processors (Nehalem). After doing so, we noticed that the default Young Space allocation decreased substantially even though the new box has more processors and RAM ... and the JVM allocated more Parallel GC threads.<br>
<br>Old machine:<br># mpstat<br>CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl<br> 0 3 0 49 2355 1251 274 3 15 2 0 345 1 1 0 99<br> 1 3 0 48 188 0 284 4 17 2 0 359 1 0 0 99<br>
2 7 0 58 238 104 214 3 12 4 0 294 0 0 0 99<br> 3 2 0 29 127 3 144 2 8 1 0 257 0 0 0 99<br><br># prtconf<br>System Configuration: Sun Microsystems i86pc<br>
Memory size: 8192 Megabytes<br><br>Start of GC log shows 59MB Young Space:<br>3.242: [GC 3.242: [ParNew: 52480K->6528K(<b>59008K</b>), 0.0221415 secs] 52480K->7228K(761472K), 0.0222595 secs]<br><br><br><br>New machine:<br>
# mpstat<br>CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl<br> 0 229 0 686 448 142 221 0 3 10 0 662 0 1 0 99<br> 1 181 0 593 114 0 188 0 1 10 0 574 0 0 0 99<br>
2 16 0 88 148 0 230 0 1 7 0 478 1 0 0 99<br> 3 16 0 199 161 21 215 0 0 9 0 532 0 0 0 99<br> 4 5 0 50 150 0 181 0 1 5 0 378 0 0 0 99<br>
5 21 0 125 147 2 184 0 0 10 0 523 0 0 0 99<br> 6 2 0 185 145 4 157 0 1 3 0 317 0 0 0 99<br> 7 16 0 114 152 7 128 0 0 5 0 367 0 0 0 100<br>
8 1 0 73 456 307 45 0 1 2 0 50 0 0 0 100<br> 9 15 0 86 148 0 12 0 0 1 0 89 0 0 0 100<br> 10 0 0 15 158 6 26 0 1 1 0 28 0 0 0 100<br>
11 2 0 31 151 0 9 0 0 1 0 36 0 0 0 100<br> 12 0 0 7 153 0 12 0 0 1 0 19 0 0 0 100<br> 13 1 0 8 153 0 4 0 0 0 0 55 0 0 0 100<br>
14 0 0 15 152 0 5 0 0 1 0 14 0 0 0 100<br> 15 1 0 6 153 0 7 0 0 1 0 21 0 0 0 100<br><br># prtconf<br>
System Configuration: Sun Microsystems i86pc<br>
Memory size: 24566 Megabytes<br>
<br>Start of GC log shows approx 15MB Young Space:<br>0.543: [GC 0.543: [ParNew: 13184K->1483K(<b>14784K</b>), 0.0029503 secs] 13184K->1483K(766400K), 0.0030164 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] <br>
<br><br>Java version is the same on both machines:<br>java version "1.6.0_14"<br>Java(TM) SE Runtime Environment (build 1.6.0_14-b08)<br>Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)<br><br><br><br>I did a thread dump on the new machine to determine how many Parallel GC Threads (Gang Workers) are running. Looks like 13:<br>
"Gang worker#0 (Parallel GC Threads)" prio=3 tid=0x08075400 nid=0x3 runnable <br>"Gang worker#1 (Parallel GC Threads)" prio=3 tid=0x08076400 nid=0x4 runnable <br>"Gang worker#2 (Parallel GC Threads)" prio=3 tid=0x08077800 nid=0x5 runnable <br>
"Gang worker#3 (Parallel GC Threads)" prio=3 tid=0x08078c00 nid=0x6 runnable <br>"Gang worker#4 (Parallel GC Threads)" prio=3 tid=0x0807a000 nid=0x7 runnable <br>"Gang worker#5 (Parallel GC Threads)" prio=3 tid=0x0807b800 nid=0x8 runnable <br>
"Gang worker#6 (Parallel GC Threads)" prio=3 tid=0x0807cc00 nid=0x9 runnable <br>"Gang worker#7 (Parallel GC Threads)" prio=3 tid=0x0807e000 nid=0xa runnable <br>"Gang worker#8 (Parallel GC Threads)" prio=3 tid=0x0807f400 nid=0xb runnable <br>
"Gang worker#9 (Parallel GC Threads)" prio=3 tid=0x08080800 nid=0xc runnable <br>"Gang worker#10 (Parallel GC Threads)" prio=3 tid=0x08081c00 nid=0xd runnable <br>"Gang worker#11 (Parallel GC Threads)" prio=3 tid=0x08083000 nid=0xe runnable <br>
"Gang worker#12 (Parallel GC Threads)" prio=3 tid=0x08084400 nid=0xf runnable <br><br><br><br>We use the CMS collector. We don't specify a NewSize. We like to run with defaults if possible.<br><br><br>Any ideas why the JVM decreased the Young Space allocation by 3/4th even though the number of processors increased by 4x?<br>
<br>Thanks<br>