Review quest for JDK-7067973: test/java/lang/management/MemoryMXBean/CollectionUsageThreshold.java hanging intermittently
Leonid Mesnik
leonid.mesnik at oracle.com
Thu Nov 28 06:17:24 PST 2013
On 11/28/2013 04:33 PM, Staffan Larsen wrote:
>
> On 28 nov 2013, at 11:16, Leonid Mesnik <leonid.mesnik at oracle.com
> <mailto:leonid.mesnik at oracle.com>> wrote:
>
>> Eric, Mandy
>>
>> Sorry that I looping on very late step. It is not a review just
>> suggestion.
>> We have whitebox API in Hotspot which includes fullGC() method. It
>> could be used to reliably provoke full GC.
>> See example in
>> http://hg.openjdk.java.net/jdk8/tl/hotspot/file/c9f439732b18/test/runtime/interned/SanityTest.java
>>
>> Should such approach works for you?
>
> It’s not necessary. System.gc is implemented as a full GC for all of
> our GC implementations. I don’t think there is a problem in relying on
> that fact.
>
>>
>> Also please note that your new variant of test fails if any of GC is
>> set explicitly. It is incompatible with GC setting.
>> We set GC's and GC-related options during Promotion/Nightly/PIT in
>> Hotspot/SVC. For us is better if test just works
>> with any GC set externally.
>
> This is broken (as has been discussed many times). Tests *need* to be
> able to provide their own flags without someone overriding them and
> still expecting the test to work.
>
I agree that this is not good however it is how all works now. There are
several proposals about jtreg improvement but they are not implemented yet.
Leonid
> /Staffan
>
>>
>> Do you need to run it with all GC each time?
>>
>> Leonid
>> On 11/28/2013 09:21 AM, Eric Wang wrote:
>>> Hi Mandy,
>>>
>>> Yes, I have tested and all settings are passed, as you mentioned the
>>> test hangs with -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent and
>>> default heap size as no GC happens on Old Gen. That is why to add
>>> -Xmx2m and big object to make sure GC happens.
>>>
>>> I didn't realized the -Xconcgc is same as -XX:+UseConcMarkSweepGC, i
>>> have updated the webrev:
>>> http://cr.openjdk.java.net/~ewang/JDK-7067973/webrev.00/
>>> <http://cr.openjdk.java.net/%7Eewang/JDK-7067973/webrev.00/>
>>>
>>> Thanks,
>>> Eric
>>> On 2013/11/27 10:17, Mandy Chung wrote:
>>>> Hi Eric,
>>>>
>>>> I'll defer this to the serviceability team to sponsor it and also
>>>> get one more review.
>>>>
>>>> I don't think you need all 7 @runs. -Xconcgc is equivalent to
>>>> setting -XX:+UseConcMarkSweepGC. For G1 and CMS, you should use
>>>> -XX:+ExplicitGCInvokesConcurrent so that System.gc will force a GC
>>>> in foreground that you can count the GC reliably. The test wants to
>>>> get notified for each System.gc and if there is any GC caused by
>>>> allocation failure, the test would fail due to the unexpected GC
>>>> count. It seems that you may run into this issue setting -Xmx2m.
>>>>
>>>> Have you got the test passed in all settings? I'm seeing that the
>>>> test hangs with -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent
>>>> without -Xmx2m. Looks like there is no GC in the old gen - I'm not
>>>> familiar with G1 if it allocates the big object in the old gen.
>>>> Jarolsav - can you help Eric diagnose this issue? I recalled you
>>>> ran into something like that before - maybe Staffan?
>>>>
>>>> thanks
>>>> Mandy
>>>>
>>>> On 11/25/2013 8:53 PM, Eric Wang wrote:
>>>>> Hi Mandy,
>>>>>
>>>>> 1. for L34-40, executing tests with 7 settings is trying to cover
>>>>> more cases (normal cases and special cases), especially last 3
>>>>> settings, as found that the test hung if using vm option
>>>>> "-XX:+ExplicitGCInvokesConcurrent" with one of 3 options
>>>>> -XX:+UseG1GC, -XX:+UseConcMarkSweepGC or -Xconcgc
>>>>>
>>>>> 2. for L61, that is right, the test has been updated. please review.
>>>>> http://cr.openjdk.java.net/~ewang/JDK-7067973/webrev.00/
>>>>> <http://cr.openjdk.java.net/%7Eewang/JDK-7067973/webrev.00/>
>>>>>
>>>>> Thanks,
>>>>> Eric
>>>>> On 2013/11/26 8:37, Mandy Chung wrote:
>>>>>> Hi Eric,
>>>>>>
>>>>>> On 11/24/2013 7:41 PM, Eric Wang wrote:
>>>>>>> Hi Mandy & All,
>>>>>>>
>>>>>>> Sorry for late!
>>>>>>> The webrev below is just finished based on the comments from
>>>>>>> peers, please help to review.
>>>>>>> http://cr.openjdk.java.net/~ewang/JDK-7067973/webrev.00/
>>>>>>> <http://cr.openjdk.java.net/%7Eewang/JDK-7067973/webrev.00/>
>>>>>>>
>>>>>>
>>>>>> Thanks for the patch that looks okay. Some comments:
>>>>>>
>>>>>> L34-40: can you explain why you want to run all 7 settings? I
>>>>>> would expect one for each collector.
>>>>>> L61: I think the static checker variable is meant to be a local
>>>>>> variable (and looks like "pools" and "managers" don't need to be
>>>>>> static variable).
>>>>>>
>>>>>> Mandy
>>>>>>
>>>>>>> Thanks,
>>>>>>> Eric
>>>>>>> On 2013/11/15 10:55, Mandy Chung wrote:
>>>>>>>> Hi Eric,
>>>>>>>>
>>>>>>>> On 11/14/2013 6:16 PM, Eric Wang wrote:
>>>>>>>>> Hi Everyone,
>>>>>>>>>
>>>>>>>>> I'm working on the bug
>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-7067973.
>>>>>>>>>
>>>>>>>>> It is a test bug as the test doesn't guarantee memory
>>>>>>>>> allocated from the Old Gen, if the used memory is zero and
>>>>>>>>> doesn't cross the threshold, no notification is sent, so both
>>>>>>>>> the main thread and Checker thread are blocked to wait for the
>>>>>>>>> GC notification.
>>>>>>>>>
>>>>>>>>> so the suggested fix is similar as the fix
>>>>>>>>> ResetPeakMemoryUsage.java
>>>>>>>>> <http://hg.openjdk.java.net/jdk8/tl/jdk/rev/a0896634ab46> to
>>>>>>>>> create big object to make sure the old gen usage crosses the
>>>>>>>>> threshold and run test with different GC vmoptions.
>>>>>>>>
>>>>>>>> What are you looking for specifically? I have provided the
>>>>>>>> above information. I need to see the webrev to provide further
>>>>>>>> feedback.
>>>>>>>>
>>>>>>>> Mandy
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> Leonid Mesnik
>> JVM SQE
>
--
Leonid Mesnik
JVM SQE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20131128/f3d7c354/attachment-0001.html
More information about the serviceability-dev
mailing list