Skip to content
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

Parallel minor gc inline mask rework #360

Conversation

ctk21
Copy link
Collaborator

@ctk21 ctk21 commented Jun 19, 2020

This PR reworks the promotion path of the parallel_minor_gc. Couple of things:

  • cleans up the mask code used for the CAS when parallel promotion is occurring to a tighter sequence
  • inlines the get_header_val function and gives the externally visible non-inline function the caml_ prefix
  • puts in a cpu_relax if we end up spinning on the header

These changes in addition to #359 are giving 3-5% improvements on test_decompress sandmark benchmark which does a lot of minor collections. It is giving an executed instruction decrease across all benchmarks even if a significant change of performance is harder to see on less minor collection heavy benchmarks.

runtime/minor_gc.c Show resolved Hide resolved
@ctk21
Copy link
Collaborator Author

ctk21 commented Jun 19, 2020

Here is bench run output with #359 and this PR combined [orange] vs 4.10.0+multicore [blue] with a 4.10.0+stock baseline.
Screenshot 2020-06-19 at 11 00 20

@kayceesrk
Copy link
Contributor

Nice improvements!

@kayceesrk kayceesrk merged commit 288876c into ocaml-multicore:parallel_minor_gc Jun 22, 2020
sadiqj pushed a commit to sadiqj/ocaml that referenced this pull request Jan 10, 2022
…21/parallel_minor_gc_inline_mask_rework

Parallel minor gc inline mask rework
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants