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
8265489: Stress test times out because of long ObjectSynchronizer::monitors_iterate(...) operation #5194
Conversation
…r::monitors_iterate(...) operation
|
if (mid->owner() != thread) { | ||
return; | ||
} |
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.
The iter
is processing the in-use-list and you're bailing the iteration
when you run into an ObjectMonitor that is not owned by thread
, but
that doesn't mean that there's not an ObjectMonitor owned by thread
later on in the in-use-list.
So I could see you doing a continue
here, but not a return
.
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.
Thanks for resolving the above comment.
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.
Moving the thread check from the closure's do_monitor() call
into monitors_iterate() as early as possible is a good idea.
Do you have any measurements to show how much this helps?
I'm okay if you don't and I'd be happy waiting to see if it makes
a difference with some of those Tier8 timeouts...
@lmesnik This change now passes all automated pre-integration checks. 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 31 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.
|
I run stress tests several times on linux-x64 with ParallelGC and haven't seen timeout anymore. |
/integrate |
Going to push as commit a5e4def.
Your commit was automatically rebased without conflicts. |
monitors_iterate make several checks which often are true before filter monitor by a thread. It might take a lot of time when there are a lot of threads. So it makes sense to first check thread and only then other conditions.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/5194/head:pull/5194
$ git checkout pull/5194
Update a local copy of the PR:
$ git checkout pull/5194
$ git pull https://git.openjdk.java.net/jdk pull/5194/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 5194
View PR using the GUI difftool:
$ git pr show -t 5194
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/5194.diff