RFR: 8267920: Create separate Events buffer for VMOperations [v2]

Thomas Schatzl tschatzl at openjdk.java.net
Mon May 31 10:38:18 UTC 2021


On Fri, 28 May 2021 18:17:21 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 incrementally with one additional commit since the last revision:
> 
>   Review coleenp

Lgtm, feel free to ignore the comment on the protected constructor/NONCOPYABLE.

src/hotspot/share/utilities/events.hpp line 443:

> 441:  public:
> 442:   EventMarkBase(EventLogFunction log_function);
> 443: };

The `EventMarkBase` constructor could be protected as well, and the class `NONCOPYABLE`.

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

Marked as reviewed by tschatzl (Reviewer).

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


More information about the hotspot-dev mailing list