-
Notifications
You must be signed in to change notification settings - Fork 78
Add a parallel/regional Compressor #1372
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
Conversation
This reverts commit ac90d4b.
I think your understanding is right. To elaborate, the
|
Just out of curiosity, what is performance like for this PR? It makes the offset calculation and the actual copying parallelized. I would expect it to improve STW time. |
I don't have apples-to-apples results handy - I have benchmark results with compressed oops for the regional Compressor, but none without compressed oops. |
The comparisons against SemiSpace, Immix, etc. would still be interesting to see. I don't think Yi would have seen those results. |
Right. I have such comparisons on plotty: http://squirrel.anu.edu.au/plotty/hayleyp/plots/p/CDBtDw (Edited because I put the wrong logs in - I re-benchmarked with the minheaps for Compressor, as those are the smallest.) |
Is the main reason for introducing But if In this way, you don't really need the |
I see. It never moves objects between regions. So we need to keep one cursor for every region. In the end, we will have many regions, and the live objects in each region are pushed to the beginning, something like this:
So we need one cursor per region to identify where we can continue allocating. |
Exactly. |
The test fail in Julia should be unrelated with this PR. |
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.
LGTM
We should make a separate PR for the OpenJDK binding to remove the |
binding-refs |
This PR adds regions to the Compressor. The benefits are that the collector compacts each region in parallel, and the collector supports the use of discontiguous heaps (as required for compressed oops in OpenJDK).