Fwd: Re: RFR: JDK-8072725: Provide more granular levels for GC verification
Poonam Bajaj Parhar
poonam.bajaj at oracle.com
Thu Jan 7 14:28:43 UTC 2016
Hello Kevin,
Thanks for looking at the changes and for your feedback.
On 1/5/2016 1:08 PM, Kevin Walls wrote:
> Hi Poonam,
>
> Great, I think it looks good, and really look forward to having this
> ability to fine-tune what we verify, rather than being so heavyweight
> about it!
>
> I just noticed: should_verify_subset("heap") and
> should_verify_subset("c-heap") are going to clash? If you specify
> c-heap, you'll trigger both verifications as strstr finds "heap" in
> there? Do you want to change heap to java-heap, or maybe use
> java_heap and c_heap (if you want to use underscores to be consistent
> with symbol_table, string_table), or something else to make them not
> clash?
>
Yes, it is a problem with the current code. To avoid this problem and
such future problems when we may add more subsets, I have updated the
code to parse the SubSet string once and store the choices in a flag.
And when we need to verify, we check for the bits in this flag.
>
> (As we discussed over email briefly, another possibility was splitting
> the given argument string on commas, doing our string comparisons once
> only during argument processing somewhere, and populating a long of
> flag bits, so Universe::verify() just checks for presence of bits,
> rather than comparing lots of characters. The speed isn't a
> particular worry right now so your very readable string comparisons do
> the job!)
Here's the updated webrev:
http://cr.openjdk.java.net/~poonam/8072725/webrev.02/
regards,
Poonam
>
> Thanks
> Kevin
>
>
>>
>> -------- Original Message --------
>> Subject: Re: RFR: JDK-8072725: Provide more granular levels for GC
>> verification
>> Date: Wed, 23 Dec 2015 09:53:21 -0800
>> From: Jon Masamitsu <jon.masamitsu at oracle.com>
>> Organization: Oracle Corporation
>> To: hotspot-gc-dev at openjdk.java.net
>>
>>
>>
>>
>>
>> On 12/23/2015 9:26 AM, Poonam Bajaj Parhar wrote:
>>> Hello Jon,
>>>
>>> I have added a testcase to test the VerifySubSet option:
>>> http://cr.openjdk.java.net/~poonam/8072725/webrev.01/
>>>
>>> Here, I run the test with one set of VerifySubSet options, and then
>>> check the output that those sub-systems were verified and the ones
>>> not specified were not verified.
>>
>> Excellent. Thanks for adding the test.
>>
>> Reviewed.
>>
>> Jon
>>
>>>
>>> Thanks,
>>> Poonam
>>>
>>> On 12/22/2015 7:43 AM, Jon Masamitsu wrote:
>>>>
>>>>
>>>> On 12/21/2015 4:40 PM, Poonam Bajaj Parhar wrote:
>>>>> Hello Jon,
>>>>>
>>>>> On 12/21/2015 2:29 PM, Jon Masamitsu wrote:
>>>>>> Poonam,
>>>>>>
>>>>>> Some of the string list parameters allow separation by , or " ". Did
>>>>>> you consider adding that?
>>>>>>
>>>>> The VerifySubSet string list can accept the strings separated by
>>>>> comma or a space. Before verification, we just need to check if a
>>>>> particular subset is present in the VerifySubSet list or not. We
>>>>> don't need any complicated processing of the strings list here.
>>>>
>>>> Ok. Thanks for the explanation.
>>>>
>>>> You mention in the RFR that you have a simple test to test the
>>>> change. Can you add that as a jtreg test? I'm thinking about
>>>> something like
>>>>
>>>> test/gc/TestVerifyDuringStartup.java
>>>> test/gc/TestVerifySilently.java
>>>>
>>>> Jon
>>>>
>>>>>
>>>>> Thanks,
>>>>> Poonam
>>>>>
>>>>>> Jon
>>>>>>
>>>>>> PS. See share/vm/compiler/compilerDirectives.cpp
>>>>>>
>>>>>> ccstrlist DirectiveSet::canonicalize_disableintrinsic(ccstrlist
>>>>>> option_value)
>>>>>>
>>>>>>
>>>>>> On 12/15/2015 03:15 PM, Poonam Bajaj Parhar wrote:
>>>>>>> Hello,
>>>>>>>
>>>>>>> Please review these changes that split up the work done under
>>>>>>> Verify*GC options. This will be very useful in debugging GC
>>>>>>> issues/crashes where verifying the whole memory system with
>>>>>>> Verify*GC options slows down the process and makes it impossible
>>>>>>> to reproduce the problem.
>>>>>>>
>>>>>>> The changes introduce a new option /VerifySubSet///that can be
>>>>>>> used to specify the specific memory sub-systems that one wants
>>>>>>> to verify. It can be one or more of the sub-systems from these:
>>>>>>> threads, heap, symbol_table, string_table, codecache,
>>>>>>> dictionary, classloader_data_graph, metaspace, jni_handles,
>>>>>>> c-heap and codecache_oops. If nothing is specified with
>>>>>>> /VerifySubSet/ then whole of the memory system is verified with
>>>>>>> Verify*GC options.
>>>>>>>
>>>>>>> Bug:JDK-8072725:
>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8072725> Provide more
>>>>>>> granular levels for GC verification
>>>>>>> Webrev: http://cr.openjdk.java.net/~poonam/8072725/webrev.00/
>>>>>>> Testing: JPRT, tested the changes with a simple test program.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Poonam
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20160107/1b0f5d19/attachment.htm>
More information about the hotspot-gc-dev
mailing list