Closed Bug 528797 Opened 15 years ago Closed 14 years ago

MMGC_MEMORY_PROFILER exacts a price even when disabled

Categories

(Tamarin Graveyard :: Profiler, defect, P3)

x86
macOS
defect

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 660800
Q1 12 - Brannan

People

(Reporter: lhansen, Unassigned)

References

Details

(Whiteboard: PACMAN)

Attachments

(1 obsolete file)

The machine is a MacPro, Release builds. 'avm' is TR and 'avm2' is TR with MMGC_MEMORY_PROFILER disabled, no other difference. Slowdowns of 5-10% are typical when the profiler support is compiled in. This difference is to a significant extent attributable to double boxing - the fast AllocDouble method can't be used when the profiler is enabled. Even when AllocDouble is disabled in a non-profiler build are there strange outliers. We need to reduce this overhead to make DEBUGGER builds affordable, but we also need to be sure to disable MMGC_MEMORY_PROFILER in non-DEBUGGER builds. (Since AllocDouble makes such a huge difference it's probably the case that many of these benchmarks are not representative of flash apps.) test avm avm2 %sp scimark/FFT.as 3844 3505 8.8 scimark/LU.as 4237 3997 5.7 scimark/MonteCarlo.as 3659 3405 6.9 scimark/SOR.as 4113 3706 9.9 scimark/SparseCompRow.as 140 135 3.6 v8/crypto.as 317 332 4.7 v8/deltablue.as 652 656 0.6 v8/raytrace.as 1996 2095 5.0 v8/richards.as 634 648 2.2 v8/typed/crypto.as 327 344 5.2 v8/typed/deltablue.as 1081 1080 -0.1 v8/typed/raytrace.as 3971 4055 2.1 v8/typed/richards.as 1558 1591 2.1 jsbench/Crypt.as 5336 4831 9.5 jsbench/Euler.as 11564 10801 6.6 jsbench/FFT.as 9934 9218 7.2 jsbench/HeapSort.as 4859 4862 -0.1 jsbench/LUFact.as 11553 10661 7.7 jsbench/Moldyn.as 13348 12138 9.1 jsbench/RayTracer.as 12170 11281 7.3 jsbench/Series.as 13933 12087 13.2 jsbench/SOR.as 46996 42271 10.1 jsbench/SparseMatmult.as 18669 17568 5.9 jsbench/typed/Crypt.as 1154 1181 -2.3 jsbench/typed/Euler.as 13284 11917 10.3 jsbench/typed/FFT.as 5656 5104 9.8 jsbench/typed/HeapSort.as 2152 2043 5.1 jsbench/typed/LUFact.as 11879 10344 12.9 jsbench/typed/Moldyn.as 5756 5336 7.3 jsbench/typed/RayTracer.as 2020 2030 -0.5 jsbench/typed/Series.as 13033 11311 13.2 jsbench/typed/SOR.as 34735 30349 12.6 jsbench/typed/SparseMatmult.as 3216 3224 -0.2 mmgc/gcbench.as 4354 4330 0.6 mmgc/ofib-rc.as 334 330 1.2 mmgc/ofib.as 1289 1246 3.3 mmgc/sfib.as 576 543 5.7 With AllocDouble disabled in avm2: some highlights (all others are < 4% slower): test avm avm2 %sp mmgc/ofib.as 1289 1231 4.5 mmgc/sfib.as 575 543 5.6 jsbench/Crypt.as 5309 4747 10.6 jsbench/Series.as 13861 12233 11.7 jsbench/typed/HeapSort.as 2155 2058 4.5 jsbench/typed/Series.as 13011 11947 8.2
Will also submit this to the Player, if appropriate.
Attachment #412465 - Flags: review?(treilly)
Attachment #412465 - Flags: review?(treilly) → review+
its appropriate, using debugger builds for memory profiler is a nice compromise of convienence vs. performance
Comment on attachment 412465 [details] [diff] [review] Disable profiler in non-DEBUGGER builds redux changeset: 3122:ec20090ae5b9 Leaving bug open: - need to export this fix to the Player - need to consider the AllocDouble optimization even when the memory profiler is enabled, at least in R-D builds - need to figure out why some programs are much slower even when removing the AllocDouble optimization
Attachment #412465 - Attachment is obsolete: true
Priority: -- → P3
Target Milestone: --- → flash10.1
Submitted proposed change to avmhost-features for review by Steven / Jim Corbett.
Whiteboard: Has patch
Status: - Jim says Steven has approval rights for the patch; Steven says he'll push the patch to the Player code - AllocDouble will be more generally applicable after the streamlining of GC::Alloc (bug #528338) lands - We should re-measure once the streamlining patch lands because it changes the structure of GC::Alloc and GC::Free very much. As a result of the above I'm lowering the priority of this bug to "nice to have".
Priority: P3 → P5
Whiteboard: Has patch
Target Milestone: flash10.1 → flash10.2
Note that we recently stopped locking the GCHeap lock on every alloc/free which should help.
Assignee: lhansen → nobody
Status: ASSIGNED → NEW
Priority: P5 → P3
Summary: [Speed] MMGC_MEMORY_PROFILER exacts a price even when disabled → MMGC_MEMORY_PROFILER exacts a price even when disabled
Whiteboard: Performance
We need to re-test now and either do further work or close it.
Whiteboard: Performance → PACMAN
Component: Garbage Collection (mmGC) → Profiler
QA Contact: gc → profiler
Flags: flashplayer-bug+
I added a dependency edge to bug 605516 (removing DEBUGGER config); feel free to remove the edge if its invalid. if we close this bug then its moot anyway.
Blocks: 645018
Target Milestone: Q3 11 - Serrano → Q1 12 - Brannan
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: