[9] RFR(S): 8066143 [TESTBUG] : New tests in gc/survivorAlignment/ fails

Filipp Zhinkin filipp.zhinkin at oracle.com
Mon Dec 8 12:59:27 UTC 2014

On 12/06/2014 02:42 AM, Jon Masamitsu wrote:
> On 12/5/2014 8:50 AM, Filipp Zhinkin wrote:
>> Hi Jon,
>> On 12/04/2014 10:41 PM, Jon Masamitsu wrote:
>>> On 12/04/2014 08:40 AM, Filipp Zhinkin wrote:
>>>> Hi all,
>>>> please review the fix for 8066143.
>>>> Issue:
>>>> - newly developed tests on survivor alignment failed w/ client VM and 
>>>> MaxRAMFraction=8;
>>>> - test on the command line option fails w/ +IgnoreUnrecognizedVMOptions.
>>>> Root cause:
>>>> - gc/survivorAlignment tests verifies that objects promoted to survivor space
>>>>   occupies some specific amount of space depending on 
>>>> SurvivorAlignmentInBytes values.
>>>>   To make sure that there will be enough space to fit all these objects,
>>>>   tests specify [Max]NewSize values. In some cases (like Client VM and 
>>>> MaxRAMFraction=8)
>>>>   initial heap sizecould be smaller then specified NewSize and it will be 
>>>> resized,
>>>>   thus survivor space usage in some cases may be less then expected,
>>>>   just because its size is too small.
>>>> - command line option test checks that SurvivorAlignmentInBytes is 
>>>> experimental option
>>>>   and expects that JVM startup willfail w/o +UnlockExperimentalVMOptions 
>>>> specified
>>>>   on the command line, but a set of command line options used in the test 
>>>> may also
>>>>   contain +IgnoreUnrecognizedVMOptions specified during a test run and as a 
>>>> result
>>>>   JVM startup won't fail.
>>>> Proposed fix:
>>>> - for all gc/survivirAlignment tests specify InitialHeapSize;
>>> My first thought would have been to specify MaxHeapSize
>>> rather than InitialHeapSize.  There will be a default max heap
>>> size calculated for the platform and specifying InitialHeapSize
>>> will affect the calculated max heap size but that could result
>>> in an unexpectedly small old gen which might have unforeseen
>>> consequences.
>>> Was there a specific reason for choosing InitialHeapSize?
>> Issue was caused by the fact that ergonomically chosen heap size
>> could be smaller than MaxNewSize specified in tests, so I decided
>> to limit lower bound for heap size by InitialHeapSize.
> Sounds like the problem is that the ergonomics chooses a maximum
> heap size that is too small and you should be setting MaxHeapSize
> to be larger that MaxNewSize.  Setting InitialHeapSize will work because
> choosing an InitialHeapSize smaller than the MaxHeapSize will cause
> the MaxHeapSize to be increased but it is not obvious how much
> it is increased.  It might be only a small amount leaving an old gen
> that is too small.
OK, I see, thank you for explanation.

I've update tests to use MaxHeapSize instead of InitialHeapSize:


> Jon
>> Thanks,
>> Filipp.
>>> Jon
>>>> - update command line test to use @require tag in order to avoid 
>>>> incompatible options.
>>>> Bug id: https://bugs.openjdk.java.net/browse/JDK-8066143
>>>> Webrev: http://cr.openjdk.java.net/~fzhinkin/8066143/webrev.00/
>>>> Testing: manual & automated
>>>> Best regards,
>>>> Filipp.

More information about the hotspot-gc-dev mailing list