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