RFR 8078555(M): GC: implement ranges (optionally constraints) for those flags that have them missing
sangheon.kim
sangheon.kim at oracle.com
Fri Aug 28 06:44:16 UTC 2015
Hi Jon, Gerard and Derek,
Here's the new webrev which includes:
1. @requires vm.gc==xx for 4 test cases. (Derek)
2. Change INITIAL_RANGES_SIZE and INITIAL_CONSTRAINTS_SIZE to current
actual size. (Gerard)
3. Range of G1UpdateBufferSize is 'NOT_LP64(32*M) LP64_ONLY(1*G)'. (Jon)
4. 'amount' to 'count' at
G1YoungSurvRateNumRegionsSummaryConstraintFunc. (Jon)
5. Add more explanation for CheckMaxHeapSizeAndSoftRefLRUPolicyMSPerMB.
(Jon)
http://cr.openjdk.java.net/~sangheki/8078555/webrev.04
http://cr.openjdk.java.net/~sangheki/8078555/webrev.04_to_03
Thanks,
Sangheon
On 08/26/2015 03:30 PM, sangheon.kim wrote:
>
>
> On 08/26/2015 02:56 PM, Jon Masamitsu wrote:
>>
>>
>> On 8/26/2015 1:50 PM, sangheon.kim wrote:
>>> Hi Jon,
>>>
>>> On 08/26/2015 01:34 PM, Jon Masamitsu wrote:
>>>> http://cr.openjdk.java.net/~sangheki/8078555/webrev.03/src/share/vm/gc/g1/g1_globals.hpp.frames.html
>>>>
>>>>
>>>> How was the 1*G maximum chosen?
>>>>
>>>> 114 product(size_t, G1UpdateBufferSize,
>>>> 256, \
>>>> 115 "Size of an update
>>>> buffer") \
>>>> 116 range(1, 1*G)
>>>>
>>>>
>>>> Maybe this was already discussed?
>>> You have eagles eye! :)
>>> Personally I asked to Thomas and his suggestion was 'I think
>>> something in the MB range should be "enough" '.
>>>
>>> I know that 1G is quite different from MB range but I wanted to find
>>> not making problem range.
>>> One point that would make problem is
>>> 'G1CollectedHeap::pending_card_num()'.
>>> '(buffer_size * buffer_num + extra_cards)' should not overflow and I
>>> think 1G would be safe enough.
>>
>> 1G seems too large on a 32bit system. I don't know how large buffer_num
>> can get but can image it can get large in some instances.
>>
>> Having said that this is not necessarily something that can be fixed at
>> flag validation time. This may be one of those cases where the
>> calculated
>> numbers are too dynamic to catch early. If you can make the check
>> different on a 32bit system, 32M might be a better number on a
>> 32bit system. Leave it 1G on a 64bit system.
> Okay, I will change as you mentioned.
> range(1, NOT_LP64(32*M) LP64_ONLY(1*G))
>
> This will be included at next webrev.
>
> Thanks,
> Sangheon
>
>
>>
>> Jon
>>
>>> But I know that it is too large as a buffer size. :(
>>> Any suggestion for this?
>>>
>>> Sangheon
>>>
>>>
>>>>
>>>> Jon
>>>>
>>>> On 8/26/2015 11:51 AM, sangheon.kim wrote:
>>>>> Hi Derek,
>>>>>
>>>>> Thank you for looking at this!
>>>>>
>>>>> On 08/26/2015 10:59 AM, Derek White wrote:
>>>>>> Hi Sangheon,
>>>>>>
>>>>>> I haven't reviewed the actual ranges and constraints yet, but one
>>>>>> thing you might want to consider:
>>>>>>
>>>>>> For the test cases, you may want synchronize the GC specified to
>>>>>> ProcessBuilder with the "@requires gc=" tags. This prevents the
>>>>>> test harness from running G1 tests when the test harness is
>>>>>> trying to run CMS test, etc, and also avoids potential confusing
>>>>>> test failures.
>>>>>>
>>>>>> @requires vm.gc=="G1" | vm.gc=="null"
>>>>>> (or specify Parallel GC as needed).
>>>>> Thank you for the explanation.
>>>>> I didn't know about this.
>>>>>
>>>>> So it seems like vm.gc=="null" means not specifying vm option.
>>>>>
>>>>>>
>>>>>> This is for:
>>>>>> TestG1ConcMarkStepDurationMillis.java (G1)
>>>>>> TestObjectTenuringFlags.java (Parallel)
>>>>>> TestInitialTenuringThreshold.java (Parallel)
>>>>>> TestG1HeapRegionSize.java (G1)
>>>>> Okay, I will add these tags at next webrev.
>>>>>
>>>>> Thanks,
>>>>> Sangheon
>>>>>
>>>>>
>>>>>>
>>>>>> - Derek
>>>>>>
>>>>>> On 8/24/15 5:33 PM, sangheon.kim wrote:
>>>>>>> Hi Kim,
>>>>>>>
>>>>>>> On 08/24/2015 02:16 PM, Kim Barrett wrote:
>>>>>>>> On Aug 24, 2015, at 3:06 PM, sangheon.kim
>>>>>>>> <sangheon.kim at oracle.com> wrote:
>>>>>>>>> Hi Kim,
>>>>>>>>>
>>>>>>>>> Here's webrev.03 which includes your comment for MarkStackSize
>>>>>>>>> constraint function.
>>>>>>>>>
>>>>>>>>> http://cr.openjdk.java.net/~sangheki/8078555/webrev.03
>>>>>>>>> http://cr.openjdk.java.net/~sangheki/8078555/webrev.03_to_02/
>>>>>>>>>
>>>>>>>>> And all your comments will be managed by
>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8134348 .
>>>>>>>> If the value of MarkStackSizeMax were changed later, there's
>>>>>>>> nothing
>>>>>>>> to verify MarkStackSize is still smaller. [This is related to my
>>>>>>>> earlier comment about constraints between options being tested
>>>>>>>> twice
>>>>>>>> and failures reported twice.] Do we care in this case?
>>>>>>> If your concern is something like
>>>>>>> -XX:MarkStackSize=128 -XX:MarkStackSizeMax=100.
>>>>>>> Yes, in this case the order is important as ranges and
>>>>>>> constraint functions are verified by its order.
>>>>>>> MarkStackSizeMax will be verified first(its range) and
>>>>>>> MarkStackSize will be compared with verified MarkStackSizeMax.
>>>>>>>
>>>>>>> And as I said your original concern is current limitation.
>>>>>>> If we set CMSOldPLABMin and CMSOldPLABMax together with invalid
>>>>>>> values (e.g. CMSOldPLABMin=100, CMSOldPLABMax=50),
>>>>>>> they will print out 2 failure messages.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Sangheon
>>>>>>>
>>>>>>>>
>>>>>>>> Other than that, looks good.
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the hotspot-dev
mailing list