Closed mjp41 closed 1 year ago
I am going to leave the following to future PRs:
Each of these requires some design, so I would sooner make them separate PRs, so it is easier to review.
This branch is now showing a 30% speed up on perf-con-ubench. This could reach about 38% if we pushed some of the epoch work into snmalloc.
With Savina it is a bit harder to tell. Mostly things improve mildly, or stay within noise. There is one notable exception Concurrent SLL, which doubles in time. All the time is spent in walking the list not in any of the runtime changes. I think it is due to the different batching strategies. This could lead to the list growing differently between the two executions, but I don't know for sure.
Overall, I think this is a win for performance, and we should proceed with the refactoring.
@lukecheeseman if you could take a look it would be much appreciated.
To review the PR. My recommended reading order is:
Once, you have those bits
when
.The rest of the changes are mostly what needed changing for the refactoring.
This change moves to the new approach to tracking dependencies based on the MCS Queue Lock. It effectively builds a DAG of behaviours using the pattern in the MCS Queue lock. The two phase commit it integrated into the MCS structure.
Just putting up a draft PR for CI feedback.