-
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
base: master
Are you sure you want to change the base?
Add a parallel/regional Compressor #1372
Conversation
This reverts commit ac90d4b.
Two issues come to mind: In the original PR for the Compressor, I modified the CI script to skip some tests on garbage collectors which don't support discontiguous heaps (i.e. only the Compressor). There are no such collectors now, so should I remove that special casing? I added a |
Yeah. If no other code needs 'discontiguous', preferably it can be cleaned up.
If there is no measurable performance issue, I would think it is fine for now. Just to clarify, how is a |
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. |
/// A region in a RegionPageResource and its allocation cursor. | ||
pub struct RegionAllocator<R: Region> { | ||
pub region: R, | ||
cursor: AtomicUsize, |
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.
I'm pretty sure Atomic<Address>
also works. It'll simplify the back-and-forth you do with usize
. Though hopefully Atomic<Address>
doesn't do anything silly on other platforms.
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.) |
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).