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

Consider enabling verbose garbage collection by default #23001

Closed
kgibm opened this issue Oct 18, 2022 · 3 comments
Closed

Consider enabling verbose garbage collection by default #23001

kgibm opened this issue Oct 18, 2022 · 3 comments

Comments

@kgibm
Copy link
Member

kgibm commented Oct 18, 2022

Describe the use case that you want to enable:

Enable verbosegc by default

Describe why this is important to you:

By default, verbosegc is not enabled in Liberty (specifically, not enabled by default in Java). This is a problem if a performance or OutOfMemoryError issue occurs as the issue will often need to be reproduced with verbosegc, or users may simply overlook GC performance issues (e.g. thread dumps may point to various application stacks but the underlying issue could be GC).

Additional context

Draft UFO: https://ibm.box.com/s/u65i1hqmy7xyawppv1383x97jccud3es

@kgibm kgibm added this to Backlog in Design Issues Oct 18, 2022
@cbridgha cbridgha moved this from Backlog to Discussing in Design Issues Nov 8, 2022
@kgibm
Copy link
Member Author

kgibm commented Nov 8, 2022

Design Issues discussion outcomes:

  1. @jhanders34 and team will run a benchmark on vanilla Liberty (non-InstantOn) at their next opportunity to evaluate if this feature would have acceptable overhead.
  2. Other items if the feature moves forward:
    1. Agreed that this won't be enabled by default on HotSpot; however, I'll follow-up with the OpenJ9 team about potentially adding better handling of HotSpot verbosegc options so that this feature could be enabled in the future for HotSpot. Currently, J9 prints a warning for Java > 8, which we wouldn't want:
      JVMJ9VM007W Command-line option unrecognised: -Xlog:safepoint=info,gc:file=verbosegc.log:time,level,tags:filecount=10,filesize=20M
      
    2. Add envars for overriding the default number of historical files and cycles per file so that the defaults may be overridden instead of overriding with jvm.options
    3. An additional up to 40MB of disk usage on non-z/OS operating systems is likely within acceptable bounds, and similarly for z/OS JES logs, no known complaints.
    4. There's no beta guard for server/server.bat changes, so this would be enabled by default in the beta.

@kgibm
Copy link
Member Author

kgibm commented Nov 21, 2022

The performance team ran startup, footprint, first request and throughput tests with and without verbosegc enabled using IBM Java (on both the latest Liberty and tWAS). None of the tests had more than 1% difference in performance, and most were less than 0.5% difference.

Next step: discuss at the next Liberty Design Issues call.

@cbridgha cbridgha moved this from Discussing to Implementing in Design Issues Jan 10, 2023
@kgibm
Copy link
Member Author

kgibm commented May 14, 2024

Delivered in #23607

@kgibm kgibm closed this as completed May 14, 2024
@kgibm kgibm removed this from Implementing in Design Issues May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant