RFR: 8267920: Create separate Events buffer for VMOperations [v3]
Coleen Phillimore
coleenp at openjdk.java.net
Tue Jun 1 14:02:22 UTC 2021
On Mon, 31 May 2021 11:17:44 GMT, Stefan Karlsson <stefank at openjdk.org> wrote:
>> The Events classes collect events in a circular buffer that gets dumped into the hs_err files. There are different sections to sort out different types of events. See:
>>
>> // A log for internal exception related messages, like internal
>> // throws and implicit exceptions.
>> static ExceptionsEventLog* _exceptions;
>>
>> // Deoptization related messages
>> static StringEventLog* _deopt_messages;
>>
>> // Redefinition related messages
>> static StringEventLog* _redefinitions;
>>
>> // Class unloading events
>> static UnloadingEventLog* _class_unloading;
>>
>> There's also a buffer for non-categorized events:
>>
>> // A log for generic messages that aren't well categorized.
>> static StringEventLog* _messages;
>>
>> I propose that we create a separate buffer for VMOperations. This will make it easier to debug GC related bugs.
>>
>> With the proposed patch, the hs_err files will now have a section that looks like this.
>>
>> VM Operations (20 events):
>> Event: 0,186 Executing VM operation: HandshakeAllThreads
>> Event: 0,186 Executing VM operation: HandshakeAllThreads done
>> Event: 0,230 Executing VM operation: ZMarkStart
>> Event: 0,230 Executing VM operation: ZMarkStart done
>> Event: 0,232 Executing VM operation: HandshakeAllThreads
>> Event: 0,232 Executing VM operation: HandshakeAllThreads done
>> Event: 0,232 Executing VM operation: HandshakeAllThreads
>> Event: 0,232 Executing VM operation: HandshakeAllThreads done
>> Event: 0,232 Executing VM operation: HandshakeAllThreads
>> Event: 0,233 Executing VM operation: HandshakeAllThreads done
>> Event: 0,233 Executing VM operation: ZMarkEnd
>> Event: 0,233 Executing VM operation: ZMarkEnd done
>> Event: 0,234 Executing VM operation: HandshakeAllThreads
>> Event: 0,234 Executing VM operation: HandshakeAllThreads done
>> Event: 0,234 Executing VM operation: ZVerify
>> Event: 0,234 Executing VM operation: ZVerify done
>> Event: 0,234 Executing VM operation: CleanClassLoaderDataMetaspaces
>> Event: 0,234 Executing VM operation: CleanClassLoaderDataMetaspaces done
>> Event: 0,235 Executing VM operation: ZRelocateStart
>> Event: 0,235 Executing VM operation: ZRelocateStart done
>
> Stefan Karlsson has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>
> - Review tschatzl
> - Merge remote-tracking branch 'origin/master' into 8267914_events_vmoperations
> - Review coleenp
> - 8267920: Create separate Events buffer for VMOperations
I think the way Stefan did it would make it easier to add Class Loading specific EventMark.
classfile/classLoader.cpp: EventMark m("loading class %s", class_name);
Although I don't see any other EventMarks except for shenandoah GC.
So there could be future refactoring here.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4243
More information about the hotspot-dev
mailing list