-
Notifications
You must be signed in to change notification settings - Fork 5.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
8325872: Make GuaranteedSafepointInterval default 0 #18820
Conversation
👋 Welcome back coleenp! A progress list of the required criteria for merging this PR into |
@coleenp This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 52 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
Webrevs
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good riddance.
@@ -3645,6 +3645,11 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) { | |||
|
|||
apply_debugger_ergo(); | |||
|
|||
// The VMThread needs to stop now and then to execute these debug options. | |||
if (HandshakeALot && SafepointALot && FLAG_IS_DEFAULT(GuaranteedSafepointInterval)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be (HandshakeALot || SafepointALot) instead of HandshakeALot && SafepointALot?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes it should be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thumbs up.
I only had a question about some code that you might want to change.
return false; | ||
} | ||
static jlong last_halot_ms = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Below this point is this code:
// If only HandshakeALot is set, but GuaranteedSafepointInterval is 0,
// we emit a handshake if it's been more than a second since the last one.
jlong interval = GuaranteedSafepointInterval != 0 ? GuaranteedSafepointInterval : 1000;
Do you need this now that you've made the change in src/hotspot/share/runtime/arguments.cpp?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're right. This has strange logic. We only set GuaranteedSafepointInterval in arguments.cpp if the flag hasn't been set on the command line. So someone could set explicitly set GuaranteeSafepointInterval=0. If GuaranteedSafepointInterval is 0 then we can get to this code if another safepoint operation wakes up the VM Thread. And in this case, we want to make sure it's been longer than a second ago.
I fixed the comment and changed the variable name to alot_ms.
Thanks for the reviews and comments, Aleksey, Erik and Dan. |
Going to push as commit 60b65e6.
Your commit was automatically rebased without conflicts. |
This change keeps the GuaranteedSafepointInterval option for use with -XX:+HandshakeALot and -XX:+SafepointALot and removes it from working with the MonitorDeflationThread. The MonitorDeflation thread has it's own timers and doesn't require safepoint to trigger anymore, so the GuaranteedSafepointInterval is logically unrelated except for historical reasons.
The option AsyncDeflationInterval default is 250 so was used anyway in this code for the monitor deflation thread timer.
Tested with tier1-8. Also performance tested this which didn't show any improvements.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/18820/head:pull/18820
$ git checkout pull/18820
Update a local copy of the PR:
$ git checkout pull/18820
$ git pull https://git.openjdk.org/jdk.git pull/18820/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 18820
View PR using the GUI difftool:
$ git pr show -t 18820
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/18820.diff
Webrev
Link to Webrev Comment