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

Jon Masamitsu jon.masamitsu at oracle.com
Fri Dec 12 17:48:36 UTC 2014


On 12/8/2014 4:59 AM, Filipp Zhinkin wrote:
> 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:
>
> http://cr.openjdk.java.net/~fzhinkin/8066143/webrev.01/

Changes look good.  Reviewed.

Jon

>
> Thanks,
> Filipp.
>>
>> 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