RFR(S): 8134889: Kitchensink stress test crashes with out of memory error
derek.white at oracle.com
Thu Apr 21 14:36:42 UTC 2016
On 4/21/16 4:02 AM, Mikael Gerdin wrote:
> Hi Derek,
> On 2016-04-20 23:48, Derek White wrote:
>> Still looking for reviews for a small fix for a P2 bug...
>> On 4/7/16 6:07 PM, Derek White wrote:
>>> The remaining part of this bug deals with running out of address space
>>> on 32-bit JVMs running on Win64. This fix is simply to have a hard
>>> limit on GC threads (still larger than necessary) on 32-bit JVMs. The
>>> new limit is 16 (2 * switch_pt).
>>> Note that this overlaps somewhat with several "# of GC thread" bugs
>>> - 8131932 <https://bugs.openjdk.java.net/browse/JDK-8131932> :
>>> Ergonomics oversize number of GC threads for small JVMs on large
>>> - 8153225 <https://bugs.openjdk.java.net/browse/JDK-8153225>: G1
>>> creates too many concurrent refinement threads by default
>>> - 7189147 <https://bugs.openjdk.java.net/browse/JDK-7189147>: GC
>>> threads should be created as needed not all at once
>>> Doing the correct thing in general will require a lot more performance
>>> analysis. The fix here is simple, only affects 32-bit JVMs running on
>>> >= 24 core machines, and will reduce OOM crashes in nightly testing.
>>> BUG: 8134889 <https://bugs.openjdk.java.net/browse/JDK-8134889>
>>> WEBREV: http://cr.openjdk.java.net/~drwhite/8134889/webrev.01/
> Fix looks good.
> I wonder about the cast to unsigned int, though.
> It seems weird that it's needed since all the other operands are
> unsigned ints in the calculation.
Yes, that does look weird. I can't recall why I added it either.
unsigned int switch_pt = bar;
unsigned int threads = foo;
threads = MIN2(threads, 2*switch_pt)
Wait a minute, according to the interweb, the type of the literal '2' is
"int" (eg. signed). I think one compiler complained on a jprt run. Doing
a jprt run without the cast...
>>> TESTS: jprt
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the hotspot-gc-dev