-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Druid doesn't explicitly support C4 garbage collector #13833
Comments
This is really a problem with that test more than anything. The names that C4 is generating are fine and would "normally" flow out through metrics, just that test really wants to have some indication of young vs. old so that it can try to decide when it should stop. The test itself is dubious if you ask me (is it trying to validate that the JVM does GC? Or trying to validate things that the monitor does. Likely, the JvmMonitor itself should be getting its values from an interface (with an overloaded, default implementation that delegates to the MXBeans) and the test should be passing in its own definition of that interface to generate values that the test would validate. The fragility of the test seems to be rooted in trying to validate that the JVM does what's on the tin, which is something that I don't think our tests should be attempting to validate. |
@imply-cheddar Thanks for the reply. I'm happy to contribute the change, but I don't really have that much time for it. If you could provide some pointers, that would be great. |
This issue has been marked as stale due to 280 days of inactivity. |
This issue has been closed due to lack of activity. If you think that |
Description
Symptom
Running JvmMonitorTest on Azul Platform Prime (formerly known as Azul Zing, an OpenJDK based JVM) with C4 garbage collector results in timeout:
Investigation and root cause
We investigated and additional logging in GcTrackingEmitter showed:
gcGen set correctly for G1 because of the following method JvmMonitor.java#L223(there are no correct processing of Prime managers)
Due to this switch accepts an invalid string in 'emit' method(JvmMonitorTest.java#L89), GcTrackingEmitter does not update {old|young}GcCount and {old|young}GcSeen never return true.
We further found out that C4 is not in the list of explicitly known garbage collectors by Druid.
Workaround
There are two possible workarounds which make Prime "look like" it's G1. To be precise, they change the strings of memory managers to the values that G1 uses. The workarounds:
-XX:+MimicG1GCMemoryManagerNames
-XX:GPGCOldGCMemoryManagerName="G1 Old Generation"
Fix
We're happy to contribute the change, it seems rather straightforward. Perhaps some guidance from the Druid's team would be helpful to make sure we don't overlook any place where this needs to be changed. Any thoughts?
The text was updated successfully, but these errors were encountered: