Closed Bug 623762 Opened 14 years ago Closed 6 years ago

AsymmGC - Marking support

Categories

(Tamarin Graveyard :: Garbage Collection (mmGC), defect, P3)

defect

Tracking

(Not tracked)

RESOLVED WONTFIX
Q3 12 - Dolores

People

(Reporter: siwilkin, Unassigned)

References

Details

Attachments

(1 file, 5 obsolete files)

Attached patch Initial Patch. MQ rev 188 (obsolete) (deleted) — Splinter Review
This patch provides thread-safe write barriers and extends GC::MarkQueueAndStack to mark all mutator's stacks. Thread-safe write-barriers are trivial, given that GC::IsMarkedThenMakeQueued has been made thread-safe with atomic operations in bug 623618. All else that this patch has to add is: - Protect slow-path mutator access to m_barrierWork and m_incrementalWork with critical sections. - Ensure that GC::marking cannot change under the feet of a mutator due to a safepoint task. I.e. we need to ensure the following: GC::foo() { if (marking) { // Uninterruptable by safepoint tasks that may change the value of 'marking' } } GC::MarkQueueAndStack is extended to mark all mutator's stacks by iterating over all SafepointRecords known to the GC's SafepointManager (except the GC-owner thread's), and adding their stack extents as GCWorkItems. Note that as GC::MarkQueueAndStack is called from within a safepoint task, then all mutators will be safe.
Attachment #501859 - Attachment is patch: true
Attachment #501859 - Attachment mime type: application/octet-stream → text/plain
Blocks: asymmGC
Attached patch MQ rev 189 (obsolete) (deleted) — Splinter Review
Slight tweak: a SCOPE_LOCK_SP should have been a MMGC_SCOPE_LOCK
Attachment #501859 - Attachment is obsolete: true
Attached patch Latest patch. MQ rev 196 (obsolete) (deleted) — Splinter Review
Made GCPolicyManager::barrierStageLastCollection thread-safe (via an AtomicCounter32) (This had found its way into another patch by mistake)
Attachment #501868 - Attachment is obsolete: true
The switch of the type for barrierStageLastCollection introduces somewhat large overhead on allocation heavy benchmarks. Here are asmicro/alloc-* performance results comparing non-atomic and atomic counter types. non-atomic-ctrs: ../../objdir-rel32/shell/avmshell.isolatemutpaths-031disable-atomic-barrierstagecounts version: cyclone atomic-ctrs: ../../objdir-rel32/shell/avmshell.isolatemutpaths-021disable-wbrc-asserts version: cyclone iterations: 25 non-atomic-ctrs atomic-ctrs test best avg best avg %dBst %dAvg Metric: iterations/second Dir: asmicro/ alloc-1 41.9 41.8 40.5 40.5 -3.3 -3.3 - alloc-10 14.9 14.8 14.3 14.3 -3.7 -3.8 - alloc-11 15.3 15.2 14.9 14.9 -2.2 -2.1 - alloc-12 15.3 15.3 15.0 14.9 -2.4 -2.3 - alloc-13 86.3 86.1 84.5 84.4 -2.1 -2.0 - alloc-14 72.9 72.4 71.1 70.7 -2.5 -2.4 - alloc-2 20.4 20.4 20.0 20.0 -2.2 -2.1 - alloc-3 17.3 17.3 16.6 16.4 -4.2 -5.0 - alloc-4 46.8 46.8 45.5 45.4 -2.9 -2.9 - alloc-5 33.9 33.9 33.8 33.7 -0.5 -0.5 alloc-6 70.2 70.0 68.7 68.6 -2.0 -2.0 - alloc-7 39.1 39.1 37.8 37.8 -3.4 -3.4 - alloc-8 15.9 15.9 15.3 15.3 -3.9 -4.0 - alloc-9 15.9 15.9 15.3 15.3 -4.0 -4.0 -
(In reply to comment #3) > The switch of the type for barrierStageLastCollection introduces somewhat large > overhead on allocation heavy benchmarks. Here are asmicro/alloc-* performance > results comparing non-atomic and atomic counter types. Clarification: The overhead described would only be introduced into builds with MMGC_POLICY_PROFILING turned on. From what I understand, this means includes the AVM shell, but not the Flash player. That could mean that we should turn that feature switch off when doing performance evaluation for AsymmGC; or it could mean that we still need to work around this issue some other way.
Attached patch MQ rev 250 (obsolete) (deleted) — Splinter Review
Attachment #502091 - Attachment is obsolete: true
Attached patch MQ rev 258 (obsolete) (deleted) — Splinter Review
Attachment #515827 - Attachment is obsolete: true
Attachment #520816 - Flags: review?(treilly)
Attachment #520816 - Flags: review?(lhansen)
Blocks: 647918
Attachment #520816 - Flags: review?(fklockii)
Comment typo: 'with in' -> 'within'
Assignee: nobody → fklockii
Priority: -- → P3
Target Milestone: --- → Q1 12 - Brannan
Attachment #520816 - Attachment is obsolete: true
Attachment #520816 - Flags: review?(treilly)
Attachment #520816 - Flags: review?(lhansen)
Attachment #520816 - Flags: review?(fklockii)
Attachment #525555 - Flags: review?(treilly)
Attachment #525555 - Flags: review?(lhansen)
Attachment #525555 - Flags: review?(fklockii)
Retargeting to Dolores.
Target Milestone: Q1 12 - Brannan → Q3 12 - Dolores
Assignee: fklockii → nobody
Flags: flashplayer-qrb+
Attachment #525555 - Flags: review?(lhansen)
Attachment #525555 - Flags: review?(fklockii)
Assignee: nobody → fklockii
Attachment #525555 - Flags: review?(treilly)
(unassigning self; we may or may not land this, but we have other fish to fry in the meantime.)
Assignee: fklockii → nobody
Tamarin isn't maintained anymore. WONTFIX remaining bugs.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: