-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8371284: GenShen: Avoid unnecessary card marking #28204
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
base: master
Are you sure you want to change the base?
Conversation
|
👋 Welcome back nityarai08! A progress list of the required criteria for merging this PR into |
|
@nityarai08 This change is no longer ready for integration - check the PR body for details. |
|
@nityarai08 The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
earthling-amzn
left a 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.
Let's make sure we don't mark cards for null objects.
src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
Outdated
Show resolved
Hide resolved
shipilev
left a 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.
Generally looks fine, just tighten up the comments.
src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
Outdated
Show resolved
Hide resolved
src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
Outdated
Show resolved
Hide resolved
src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
Outdated
Show resolved
Hide resolved
Co-authored-by: Aleksey Shipilëv <[email protected]>
shipilev
left a 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.
Looks fine. How's performance? I suppose this is a frequent path, and is_in_young checks are not necessarily free.
|
We are seeing mixed results, I need to do more validation. |
|
Here are GenShen results over 100+ sample collections +1.90% philosophers/philosophers_duration p=0.00142 (Wilcoxon) +1.68% finagle-chirper/finagle-chirper_duration p=0.00343 (Wilcoxon) +1.04% rx-scrabble/rx-scrabble_duration p=0.00000 (Wilcoxon) -2.48% scrabble/scrabble_duration p=0.00000 (Wilcoxon) -2.24% scala-kmeans/scala-kmeans_duration p=0.00000 (Wilcoxon) |
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.
Description states:
Exclude young-young, old-old and honor UseCondCardMark in dirty card marking.
I don't see any change for the latter. I believe UseCondCardMark is already enabled with GenShen, and the barrier ode respects it.
Also Exclude young-young, old-old skips the part of the change that also skips young->old. I'd reword the synopsis to:
Skips card marks for stores in young generation objects, old -> old, and null stores.
which I think is what the code does.
In the performance comparisons, did you see any effect on remembered set scan times (there are card-scan stats that can be enabled in a "release" (non product) build, as needed).
Left some suggestions for tightening up documentation comment.
Rest looks good. As Aleksey noted, the conditional card marks can of course slow down the mutator, so we want to see if the savings in card scan times (because of skipping old->old, or null writes in old) would make up.
src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp
Outdated
Show resolved
Hide resolved
remove unintended files
Exclude young-young, old-old and honor UseCondCardMark in dirty card marking.
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/28204/head:pull/28204$ git checkout pull/28204Update a local copy of the PR:
$ git checkout pull/28204$ git pull https://git.openjdk.org/jdk.git pull/28204/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 28204View PR using the GUI difftool:
$ git pr show -t 28204Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/28204.diff
Using Webrev
Link to Webrev Comment