Request for Review (XS) - 8149643: Remove check of counters in VirtualSpaceNode::inc_container_count
Jon Masamitsu
jon.masamitsu at oracle.com
Thu Feb 11 23:39:34 UTC 2016
On 2/11/2016 12:28 PM, Bengt Rutisson wrote:
>
> Hi Jon and Dmitry,
>
> On 2016-02-11 18:56, Jon Masamitsu wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8149643
>>
>> As part of managing Metaspaces a running count of the
>> number of Metachunks in a virtual-space is maintained.
>> The count is incremented as chunks are allocated from the
>> virtual-space. The count can be verified by walking over
>> all the Metachunks in the virtual space. This change
>> removes the verification code which was called each time
>> the running count was incremented. The verification is
>> costly and no longer worth doing at each increment. It is
>> still verified when the virtual-space is being retired.
>>
>> Contributed by: dmitry.dmitriev at oracle.com
>>
>> http://cr.openjdk.java.net/~jmasa/8149643/webrev.00/
>
> Looks ok, but I have a question about the other place where the
> verification is done. In VirtualSpaceNode::retire().
>
> It does:
>
>
> while (free_words_in_vs() >= chunk_size) {
> DEBUG_ONLY(verify_container_count();)
> // do some stuff...
> DEBUG_ONLY(verify_container_count();)
> }
>
> The first verification call can only every fail the first time (after
> that it is just one more call to the verification just after we
> returned from doing verfication). So, if this is considered an
> expensive verification I would suggest changing this to:
>
> DEBUG_ONLY(verify_container_count();)
> while (free_words_in_vs() >= chunk_size) {
> // do some stuff...
> DEBUG_ONLY(verify_container_count();)
> }
A definite yes to this.
>
> This code still looks a bit paranoid so I think there are even more
> simplifications to be done if desired, but at least removing the
> double verification seems like worth while doing.
Let me refresh my memory on this code and think about what would be
adequate checks.
Thanks.
Jon
>
> Thanks,
> Bengt
>
>
>>
>> The change is the deletion of 1 line.
>>
>> --- a/src/share/vm/memory/metaspace.cpp
>>
>> +++ b/src/share/vm/memory/metaspace.cpp
>>
>> @@ -791,7 +791,6 @@
>>
>> void VirtualSpaceNode::inc_container_count() {
>>
>> assert_lock_strong(SpaceManager::expand_lock());
>>
>> _container_count++;
>>
>> - DEBUG_ONLY(verify_container_count();)
>>
>> }
>>
>>
>> Testing with some specjvm benchmarks.
>>
>> Thanks.
>>
>> Jon
>
More information about the hotspot-gc-dev
mailing list