RFR (XS) JDK-8153582 Logging of ConcGCThreads is done too early

Dmitry Fazunenko dmitry.fazunenko at oracle.com
Wed May 18 14:41:01 UTC 2016



On 18.05.2016 17:24, Joseph Provino wrote:
> Latest webrev with Dima's suggestions:
>
> http://cr.openjdk.java.net/~jprovino/8153582/webrev.02

Looks good!

Thanks
Dima


>
> joe
>
> On 5/18/2016 7:33 AM, Dmitry Fazunenko wrote:
>> Hi Joe,
>>
>> > @requires vm.gc=="ConcMarkSweep" | vm.gc=="G1" | vm.gc=="null"
>>
>> Will not help unfortunately :(
>>
>> This test will fail on minimal VM where serial is always selected
>> You need:
>>    @requires vm.flavor != "minimal"
>>
>>
>> The way you spawn a new VM ignores external flags:
>>
>>     pb = ProcessTools.createJavaProcessBuilder("-XX:+" + gcFlag, 
>> "-Xlog:gc=debug", "-version");
>>
>> It's recommended to NOT ignore external flags:
>>     pb = ProcessTools.createJavaProcessBuilder(*true, *"-XX:+" + 
>> gcFlag, "-Xlog:gc=debug", "-version");
>>
>> But in this case the test will not work if either G1 or CMS is set 
>> explicitly:
>>    verifyNumberOfConcurrentAndParallelGCThreads(null);
>>    verifyNumberOfConcurrentAndParallelGCThreads("UseG1GC");
>> verifyNumberOfConcurrentAndParallelGCThreads("UseConcMarkSweepGC");
>> either second or third case will fail because of collector conflict.
>> To avoid collector conflicts you need:
>>    @requires vm.gc=="null"
>> But in this case,
>>    verifyNumberOfConcurrentAndParallelGCThreads(null);
>> will fail if ergonomics will select Serial or Parallel...
>>
>>
>> What I suggest
>>
>> add:
>>    @requires vm.flavor != "minimal"
>>    @requires vm.gc=="null"
>>
>> get rid of the null case
>>    40 verifyNumberOfConcurrentAndParallelGCThreads(null);
>>    41
>>    42 verifyNumberOfConcurrentAndParallelGCThreads("UseG1GC");
>>    43
>>    44 
>> verifyNumberOfConcurrentAndParallelGCThreads("UseConcMarkSweepGC");
>>
>> ->
>> verifyNumberOfConcurrentAndParallelGCThreads("UseG1GC");
>> verifyNumberOfConcurrentAndParallelGCThreads("UseConcMarkSweepGC");
>>
>>
>> don't ignore external flags:
>>    50         if (gcFlag != null) {
>>    51             pb = ProcessTools.createJavaProcessBuilder("-XX:+" 
>> + gcFlag, "-Xlog:gc=debug", "-version");
>>    52         } else {
>>    53             pb = 
>> ProcessTools.createJavaProcessBuilder("-Xlog:gc=debug", "-version");
>>    54         }
>> -->
>>               pb = ProcessTools.createJavaProcessBuilder(*true*, 
>> "-XX:+" + gcFlag, "-Xlog:gc=debug", "-version");
>>   Thanks,
>> Dima
>>
>>
>> On 18.05.2016 11:12, Thomas Schatzl wrote:
>>> Hi again,
>>>
>>> On Wed, 2016-05-18 at 10:09 +0200, Thomas Schatzl wrote:
>>>> Hi Joe,
>>>>
>>>> On Tue, 2016-05-17 at 15:17 -0400, Joseph Provino wrote:
>>>>> I changed the log level to debug and added created a test.
>>>>>
>>>>> Webrev:http://cr.openjdk.java.net/~jprovino/8153582/webrev.01
>>>>>
>>>>    in the test, please limit the allowable GCs to CMS and G1. I do not
>>>> think it makes sense to call the test with other GCs.
>>>>
>>>> Like
>>>>
>>>> @requires vm.gc=="ConcMarkSweep" | vm.gc=="G1" | vm.gc=="null"
>>> Also the copyright date should be 2016 only.
>>>
>>>> I do not need a re-review for this change.
>>> Still applies.
>>>
>>> Thanks,
>>>    Thomas
>>
>



More information about the hotspot-dev mailing list