-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
8302122: Parallelize TLAB retirement in prologue in G1 #12497
8302122: Parallelize TLAB retirement in prologue in G1 #12497
Conversation
…ame threads as threads_do Replace existing manual claiming with possibly_parallel_threads_do calls initial version Fix Thread::possibly_parallel_threads_do refactoring Initial version, remove retire tlab stuff Cleanup initial version Fix Thread::possibly_parallel_threads_do refactoring Better parallelization Use improved claimer fix something cleanup
👋 Welcome back tschatzl! A progress list of the required criteria for merging this PR into |
/label add hotspot-gc |
@tschatzl |
/issue add JDK-8297611 |
@tschatzl |
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.
A few comments, but overall looks quite nice.
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.
Minor subjective suggestion.
@tschatzl 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 145 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 |
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.
Thanks for your review @kimbarrett @albertnetymk /integrate |
Going to push as commit 593bec6.
Your commit was automatically rebased without conflicts. |
Hi all,
can I have reviews for this change that parallelizes TLAB retirement and log buffer flushing (which JDK-8297611 suggests?
G1BarrierSet::write_region
added a new parameter that describes the JavaThread the write_region/invalidation (not sure whywrite_region
isn't just an overload ofinvalidate
) is made for. The reason is previously whenBarrierSet::make_parsable()
(not sure why this is called this way either) is called to flush out deferred card marks, the card marks generated by that were added to the calling thread's refinement queue. This worked because the calling thread (the worker thread/vm thread) has always been processed after all java threads (which are the only ones that can have deferred card marks). So these deferred card marks' refinement entries were put into the worker thread's refinement queue. After parallelization this is not possible any more unless we deferred non java thread log flushing until after all java threads - I did not want to do that, so the change passes that explicit java thread through toG1BarrierSet::write_region
. I think this is clearer anyway, and corresponds to howG1DirtyCardQueueSet::concatenate_log_and_stats
works.Testing: tier1-5
Thanks,
Thomas
Progress
Issues
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk pull/12497/head:pull/12497
$ git checkout pull/12497
Update a local copy of the PR:
$ git checkout pull/12497
$ git pull https://git.openjdk.org/jdk pull/12497/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 12497
View PR using the GUI difftool:
$ git pr show -t 12497
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/12497.diff