RFR: 8260267: ZGC: Reduce mark stack usage [v4]

Hui Shi hshi at openjdk.java.net
Wed May 19 03:10:42 UTC 2021


On Fri, 30 Apr 2021 12:30:19 GMT, Per Liden <pliden at openjdk.org> wrote:

>> Under some conditions, striped marking can cause excessive mark stack memory usage. For example, when the object graph has one or more N:1 relations ships, where N is a large number.
>> 
>> To avoid pushing mark stack entries to already marked objects, and thus reduce mark stack memory usage, this patch adds does two things:
>>  * GC threads will under some conditions mark the object before pushing, else (if the condition to mark failed)
>>  * GC threads will check if the object is already marked before pushing.
>> 
>> The conditions for marking before pushing is:
>>  * We are using a single stripe, in which cases striped marking is essentially disabled anyway.
>>  * We see excessive mark stack usage. In other words, the mark stack allocator indicates "high usage".
>> 
>> To make this easier to review, this PR contains two commits:
>>  * `ZGC: Reduce mark stack usage` - This patch adds the infrastructure needed to mark before push, but only does so if we are using a single stripe.
>>  * `ZGC: Mark before push if mark stack usage is high` - This patch adds the condition to mark before push if the mark stack allocator indicates "high usage". As a bonus, this patch will also uncommit memory used for mark stacks after the marking has completed.
>> 
>> Testing:
>>  * Tier1-7
>>  * SPECjbb2015, score and marking times unaffected
>>  * casparcwang at tencent.com reports that this patch, in combination with PR #3455, solves the problem for Apache Zookeeper.
>
> Per Liden has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Review comments from StefanJ

@pliden Is this PR still under testing or needs more reivew?  Hope this doesn't distrub you from what you're currently working on.

We would like to backport this PR after it get integrated.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3460



More information about the hotspot-gc-dev mailing list