Repository navigation
Simplified LXR GC - #1508
Simplified LXR GC#1508
Conversation
|
I started a performance run to compare simplified LXR and concurrent Immix from this PR, and full featured LXR from https://github.com/wenyuzhao/mmtk-core/tree/lxr. Weak reference and class unloading is disabled. All tests use 16 total GC threads (and 16 concurrent GC threads).
The following is the new result. I included 4 configs:
|
|
binding-refs |
`trace_object_without_moving` can still be called during RC.
|
LXR crashes when using MemBalancer (OpenJDK without The panic happens in the let v: u32 = unsafe { s.to_address().load::<u32>() };
if v & 0b111 != 0 {
panic!("Invalid slot: {s:?} -> {v:#x}");
} |
There was a problem hiding this comment.
LGTM.
There are many issues related to the LXR impl and the other changes introduced in this PR that still need to be addressed properly. Besides, this PR is very large and includes many changes that should have been split into smaller PRs.
Normally, we would not consider a PR in this state ready to merge. However, we have decided to make an exception in this case and address the remaining issues after the merge:
- This PR contains many years' worth of optimization work -- we don't want to accidentally revert important optimizations. Merging it and letting CI track the performance can reduce the risk of causing any regressions.
- This PR introduces changes that may need proper redesign. Merging it and having future refactoring/redesign go through code review is also helpful.
- We are currently under time pressure for LXR-related binding work. Merging the PR first also helps us parallelize future work on LXR.
Thus, I think this is okay to merge this PR right now, as we have done our best to make sure no regression for bindings. This is an exception to our usual review and merge criteria and should not be taken as a precedent for future PRs.
|
OpenJDK 11 and 21 tests timed out while running |
Yeah. I noticed some tests failed at |
The mmtk-core PR: mmtk/mmtk-core#1508 Important features that has been removed from the main lxr branch: * class unloading * weak ref processing * various performance optimizations --------- Co-authored-by: Hayley Patton <43771738+no-defun-allowed@users.noreply.github.com> Co-authored-by: Yi Lin <qinsoon@gmail.com> Co-authored-by: mmtkgc-bot <mmtkgc.bot@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Kunshan Wang <wks1986@gmail.com>




This pull request introduces a simplified version of the LXR collector. There are many features not included in this version of LXR, such as reference processing, and they will be ported to the master branch in the future.
In addition to the LXR plan, this PR also makes the following changes to mmtk-core
Pause::RefCount: a new pause kind for reference counting.RootsWorkFactory::create_process_roots_work_with_root_kind: an experimental API withRootKind.UnstraddlableRegionto prevent the invocation ofregion.containson regions which objects can straddle, specificallyLine.ImmixSpaceandLargeObjectSpaceto support reference counting-based Immix plans.ObjectReference::iterate_fields.Related PRs: