RFR: 8272773: Investigate making card table size configurable [v3]

Vishal Chand duke at openjdk.java.net
Tue Nov 16 11:40:36 UTC 2021


On Tue, 16 Nov 2021 08:30:57 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:

>> src/hotspot/share/gc/parallel/objectStartArray.hpp line 60:
>> 
>>> 58: 
>>> 59:   // This maximum is derived from that we need an extra bit for possible
>>> 60:   // offsets in the byte for backskip values (this is a hard limit)
>> 
>> Suggestion:
>> 
>>   // Maximum size an offset table entry can cover. This maximum is derived from that we need an extra bit for possible
>>   // offsets in the byte for backskip values, leaving 2^7 possible offsets. Mininum object alignment is 8 bytes (2^3), so we can at most represent 2^10 offsets within a BOT value.
>> 
>> 
>> (We *could* make this maximum dependent on `ObjectAlignmentInBytes`, but I do not know if increasing ObjectAlignmentInBytes gives any advantage. So at most defer this investigation to some other time as I'm already keeping busy some machines)
>
> Maybe it is interesting to make this size depend on current `ObjectAlignmentInBytes` after all. I've seen some recent testing where it proved useful. However that may be done as a separate change.
> It also seems that reducing the size of the BOT/card table (increasing this maximum) has diminishing returns e.g. wrt to Card Table Clear times.
> 
> Maybe it is interesting for you to try out even larger card sizes though (e.g. an `ObjectAlignmentInBytes` value of `16` should allow a card size of 2048 and so on).

Sure. I'll explore this and share the results.

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

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



More information about the hotspot-gc-dev mailing list