Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JVM GC output cannot be parsed when the JVM GC policy is set to 'Balanced' #88

Closed
NiallWard opened this issue Jul 5, 2021 · 4 comments

Comments

@NiallWard
Copy link

When parsing a file either through code or with the NMONVisualizer client , you get the following when trying to process a GC log file generated by a JVM with the GC policy set to 'Balanced':

ava.lang.IllegalArgumentException: record does not contain any data for DataType GCBEF (gc)
at com.ibm.nmon.data.DataRecord.getData(DataRecord.java:95)
at com.ibm.nmon.parser.gc.state.JavaGCCycle.calculateTotalSizes(JavaGCCycle.java:45)
at com.ibm.nmon.parser.gc.state.Java7GCCycle.endElement(Java7GCCycle.java:110)
at com.ibm.nmon.parser.gc.VerboseGCParser.endElement(VerboseGCParser.java:85)
at com.ibm.nmon.parser.BasicXMLParser.parse(BasicXMLParser.java:148)
at com.ibm.nmon.parser.BasicXMLParser.parse(BasicXMLParser.java:27)
at com.ibm.nmon.parser.gc.VerboseGCParser.parse(VerboseGCParser.java:52)
at com.ibm.nmon.NMONVisualizerApp.parse(NMONVisualizerApp.java:163)
at com.ibm.nmon.gui.file.ParserRunner.run(ParserRunner.java:73)
at java.lang.Thread.run(Unknown Source)

@hpresnall
Copy link
Contributor

The GC parser code is pretty old, so I am not surprised newer GC policies don't work.

If you want to attach a sample log, I can take a look and see how much effort it would be to add. I am not 100% sure balanced GC data would even fit into the current data model / data types that currently exist.

@NiallWard
Copy link
Author

Hi

Apologies, I missed the update during IBM's mail difficulties. Please find attached an example verbose gc file

verbosegc.log

hpresnall added a commit that referenced this issue Jul 17, 2021
@hpresnall
Copy link
Contributor

I've added code that skips processing of data when this happens. However, the root cause is that the data the parser expects at the beginning of the GC cycle is not present for one or more of the collections. So, at the end of the GC cycle, data will not be calculated. See com.ibm.nmon.parser.gc.state.JavaGCCycle.calculateTotalSizes(GCParserContext).

I'd need to study a lot more of what balanced GC in this JVM version is actually doing to understand the effect of this. To really fix it, new calculations and maybe even completely new handling of the data is needed. At this point, I think it might be better for you look at other GC parsers that focus on keeping up with all the different GC methods.

@NiallWard
Copy link
Author

ok, thanks for the investigation and endeavoring to fix the issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants