[crac] RFR: Wait until G1 GC has finished before creating a snapshot. [v4]

Radim Vansa rvansa at openjdk.org
Fri Jul 28 14:20:18 UTC 2023


On Fri, 28 Jul 2023 12:26:38 GMT, Jan Kratochvil <jkratochvil at openjdk.org> wrote:

>> @rvansa did report his snapshots are about 2x-3x bigger than they should be. He then also found it only happens if the snapshot is done too quickly after GC should have been run.
>> 
>> One can reproduce the race case by:
>> 
>> --- a/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp
>> +++ b/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp
>> @@ -35,7 +35,7 @@ class G1UncommitRegionTask : public G1ServiceTask {
>>    // is short, while still making reasonable progress.
>>    static const uint UncommitSizeLimit = 128 * M;
>>    // Initial delay in milliseconds after GC before the regions are uncommitted.
>> -  static const uint UncommitInitialDelayMs = 100;
>> +  static const uint UncommitInitialDelayMs = 10*1000;
>>    // The delay between two uncommit task executions.
>>    static const uint UncommitTaskDelayMs = 10;
>
> Jan Kratochvil has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add an assertion at least for !is_ConcurrentGC_thread().

I had no concrete suspicion that some code path would cause trouble; I've simply raised a concern about non-synchronized access to a variable. Now I think that you went the extra mile to validate that this is safe, so I am OK with this change.

Please revert the `UncommitInitialDelayMs`.

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

PR Comment: https://git.openjdk.org/crac/pull/93#issuecomment-1655763558


More information about the crac-dev mailing list