Closed Bug 1477905 Opened 7 years ago Closed 7 years ago

0.35% installer size (osx-cross) regression on push 1ac6543017416f0899dbac1c785cc2b48637b900 (Mon Jul 23 2018)

Categories

(Core Graveyard :: Web Replay, defect)

Unspecified
macOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: igoldan, Unassigned)

References

Details

(Keywords: regression)

We have detected a build metrics regression from push: https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?changeset=1ac6543017416f0899dbac1c785cc2b48637b900 As author of one of the patches included in that push, we need your help to address this regression. Regressions: >200KBytes installer size osx-cross opt 66,622,203.08 -> 66,858,678.67 You can find links to graphs and comparison views for each of the above tests at: https://treeherder.mozilla.org/perf.html#/alerts?id=14491 On the page above you can see an alert for each affected platform as well as a link to a graph showing the history of scores for this test. There is also a link to a treeherder page showing the jobs in a pushlog format. To learn more about the regressing test(s), please see: https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Automated_Performance_Testing_and_Sheriffing/Build_Metrics
Product: Testing → Core
The patch is composed of multiple bugs: bug 1207696 bug 1464903 bug 1465287 bug 1466877 bug 1470795 bug 1465294 bug 1465466 Which one is more related to this installer size increase?
Flags: needinfo?(bhackett1024)
I think the Web Replay tracking bug, bug 1422587, would be most appropriate. The new code is spread across a number of its dependent bugs.
Flags: needinfo?(bhackett1024)
That is a *really* large increase. Is udis86 really that big, or do I just not have a good mental model of how much webreplay code there really is?
(In reply to Nathan Froyd [:froydnj] from comment #3) > That is a *really* large increase. Is udis86 really that big, or do I just > not have a good mental model of how much webreplay code there really is? The web replay code is 19 thousand lines of code, including blank lines and comments, and is all in toolkit/recordreplay and toolkit/recordreplay/ipc. udis86 is another 10 thousand lines of code, in toolkit/recordreplay/udis86. I think things are pretty compact and we don't rely on templates very heavily (besides the usual Vector<> etc.) so I'm not sure what is causing the increase here. Outside of toolkit/recordreplay, and ignoring tests, there is 600 odd lines of new code in mfbt/RecordReplay*, 1300 new lines of JS in devtools/server/actors/replay, and a net increase of about 2000 lines of code scattered around the code base. I've pasted diff stats for that stuff below. Not everything has landed yet, but almost all the new code has. browser/base/content/browser-menubar.inc | 9 browser/base/content/browser-sets.inc | 12 browser/base/content/browser.js | 29 browser/base/content/tabbrowser.js | 23 browser/locales/en-US/chrome/browser/browser.dtd | 4 devtools/client/framework/devtools-browser.js | 6 devtools/client/locales/en-US/webconsole.properties | 5 devtools/client/shared/test/shared-head.js | 1 devtools/client/webconsole/utils/context-menu.js | 18 devtools/client/webconsole/utils/messages.js | 2 devtools/client/webconsole/webconsole-output-wrapper.js | 7 devtools/server/actors/frame.js | 7 devtools/server/actors/moz.build | 1 devtools/server/actors/object.js | 7 devtools/server/actors/object/previewers.js | 54 - devtools/server/actors/source.js | 8 devtools/server/actors/targets/browsing-context.js | 10 devtools/server/actors/thread.js | 393 ++++++---- devtools/server/actors/utils/TabSources.js | 27 devtools/server/actors/utils/make-debugger.js | 8 devtools/server/actors/webconsole.js | 108 ++ devtools/shared/builtin-modules.js | 11 devtools/shared/client/thread-client.js | 77 + dom/base/TabGroup.cpp | 5 dom/base/nsCCUncollectableMarker.cpp | 6 dom/base/nsFrameMessageManager.cpp | 24 dom/base/nsJSEnvironment.cpp | 32 dom/base/nsWrapperCache.cpp | 10 dom/base/nsWrapperCache.h | 25 dom/base/nsWrapperCacheInlines.h | 2 dom/bindings/BindingUtils.h | 31 dom/bindings/nsIScriptError.idl | 6 dom/bindings/nsScriptError.cpp | 15 dom/bindings/nsScriptError.h | 1 dom/clients/manager/ClientManagerService.cpp | 3 dom/html/HTMLMediaElement.cpp | 7 dom/interfaces/base/nsITabParent.idl | 6 dom/ipc/ContentChild.cpp | 31 dom/ipc/ContentChild.h | 3 dom/ipc/ContentParent.cpp | 179 ++++ dom/ipc/ContentParent.h | 44 + dom/ipc/ContentProcess.cpp | 39 dom/ipc/PContent.ipdl | 11 dom/ipc/ProcessHangMonitor.cpp | 16 dom/ipc/TabChild.cpp | 29 dom/ipc/TabChild.h | 2 dom/ipc/TabParent.cpp | 30 dom/ipc/TabParent.h | 13 dom/media/CubebUtils.cpp | 2 dom/media/webaudio/AudioContext.cpp | 12 dom/plugins/ipc/PluginUtilsOSX.mm | 2 dom/script/ScriptLoader.cpp | 6 dom/workers/RuntimeService.cpp | 22 dom/xbl/nsXBLBinding.cpp | 1 extensions/spellcheck/hunspell/glue/RemoteSpellCheckEngineChild.cpp | 21 gfx/layers/apz/src/APZCTreeManager.cpp | 8 gfx/layers/client/ClientLayerManager.cpp | 8 gfx/layers/ipc/CompositorBridgeParent.cpp | 9 gfx/layers/ipc/CompositorBridgeParent.h | 6 gfx/layers/ipc/CompositorManagerChild.cpp | 2 gfx/layers/ipc/CompositorManagerParent.cpp | 4 gfx/layers/ipc/CompositorVsyncScheduler.cpp | 6 gfx/layers/ipc/LayerTransactionParent.cpp | 11 gfx/layers/ipc/ShadowLayers.cpp | 8 gfx/thebes/gfxPlatform.cpp | 20 gfx/thebes/gfxPlatform.h | 2 hal/sandbox/SandboxHal.cpp | 5 ipc/chromium/src/base/pickle.cc | 8 ipc/chromium/src/base/pickle.h | 2 ipc/chromium/src/chrome/common/ipc_message.cc | 6 ipc/chromium/src/chrome/common/ipc_message.h | 2 ipc/glue/CrashReporterClient.h | 5 ipc/glue/CrossProcessMutex.h | 4 ipc/glue/GeckoChildProcessHost.cpp | 2 ipc/glue/MessageChannel.cpp | 2 ipc/glue/ProtocolUtils.cpp | 16 ipc/glue/ProtocolUtils.h | 19 ipc/ipdl/sync-messages.ini | 2 js/ductwork/debugger/IJSDebugger.idl | 3 js/ductwork/debugger/JSDebugger.cpp | 14 js/public/AllocPolicy.h | 7 js/public/HashTable.h | 4 js/public/Principals.h | 4 js/public/ProfilingStack.h | 21 js/src/builtin/AtomicsObject.cpp | 3 js/src/builtin/AtomicsObject.h | 3 js/src/builtin/Promise.cpp | 34 js/src/ds/LifoAlloc.h | 3 js/src/ds/MemoryProtectionExceptionHandler.cpp | 3 js/src/ds/OrderedHashTable.h | 22 js/src/frontend/BytecodeCompiler.cpp | 8 js/src/frontend/NameCollections.h | 14 js/src/gc/ArenaList.h | 3 js/src/gc/AtomMarking.h | 3 js/src/gc/GC.cpp | 28 js/src/gc/GCParallelTask.h | 3 js/src/gc/GCRuntime.h | 15 js/src/gc/Heap.h | 4 js/src/gc/Marking.cpp | 4 js/src/gc/Memory.cpp | 8 js/src/gc/Nursery.cpp | 10 js/src/gc/Scheduling.h | 9 js/src/gc/Statistics.cpp | 14 js/src/gc/Statistics.h | 3 js/src/gc/Zone.h | 3 js/src/jit/BaselineBailouts.cpp | 24 js/src/jit/BaselineCompiler.cpp | 9 js/src/jit/CodeGenerator.cpp | 4 js/src/jit/IonBuilder.cpp | 26 js/src/jit/JitAllocPolicy.h | 3 js/src/jit/JitRealm.h | 6 js/src/jit/LoopUnroller.cpp | 7 js/src/jit/MIR.h | 12 js/src/jit/MIRGenerator.h | 3 js/src/jit/ProcessExecutableMemory.cpp | 3 js/src/jit/shared/CodeGenerator-shared.cpp | 4 js/src/jsapi.cpp | 4 js/src/jsapi.h | 9 js/src/jsexn.cpp | 18 js/src/jsutil.h | 3 js/src/threading/Mutex.h | 7 js/src/threading/ProtectedData.cpp | 4 js/src/threading/ProtectedData.h | 3 js/src/threading/posix/Thread.cpp | 2 js/src/vm/BytecodeUtil.cpp | 52 + js/src/vm/BytecodeUtil.h | 5 js/src/vm/Debugger.cpp | 111 ++ js/src/vm/Debugger.h | 1 js/src/vm/ErrorObject-inl.h | 6 js/src/vm/ErrorObject.cpp | 10 js/src/vm/ErrorObject.h | 4 js/src/vm/HelperThreads.cpp | 33 js/src/vm/HelperThreads.h | 2 js/src/vm/Interpreter.cpp | 2 js/src/vm/JSContext.cpp | 2 js/src/vm/JSContext.h | 10 js/src/vm/JSScript-inl.h | 15 js/src/vm/JSScript.cpp | 10 js/src/vm/JSScript.h | 16 js/src/vm/NativeObject.cpp | 3 js/src/vm/Probes-inl.h | 5 js/src/vm/Runtime.cpp | 11 js/src/vm/Runtime.h | 18 js/src/vm/Stack.cpp | 4 js/src/vm/StructuredClone.cpp | 18 js/src/vm/Time.h | 21 js/src/vm/TypeInference.cpp | 4 js/src/wasm/WasmSignalHandlers.cpp | 4 js/xpconnect/idl/xpccomponents.idl | 3 js/xpconnect/loader/mozJSComponentLoader.cpp | 7 js/xpconnect/src/SandboxPrivate.h | 1 js/xpconnect/src/XPCComponents.cpp | 7 js/xpconnect/src/XPCJSContext.cpp | 12 js/xpconnect/src/XPCJSRuntime.cpp | 37 js/xpconnect/src/XPCWrappedNative.cpp | 16 js/xpconnect/src/XPCWrappedNativeProto.cpp | 4 js/xpconnect/src/nsXPConnect.cpp | 9 js/xpconnect/src/xpcpublic.h | 6 layout/ipc/VsyncChild.cpp | 14 layout/style/ImageLoader.cpp | 44 - media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp | 5 memory/build/mozjemalloc.cpp | 11 memory/mozalloc/mozalloc.h | 3 memory/replace/dmd/DMD.cpp | 3 mfbt/AllocPolicy.h | 12 mfbt/Assertions.cpp | 7 mfbt/Atomics.h | 123 ++- mfbt/BufferList.h | 28 mfbt/ChaosMode.cpp | 2 mfbt/ChaosMode.h | 4 mfbt/RefCounted.h | 25 mfbt/SegmentedVector.h | 6 mfbt/Vector.h | 12 mfbt/moz.build | 2 mfbt/tests/TestAtomics.cpp | 11 mfbt/tests/TestBufferList.cpp | 3 mfbt/tests/TestSegmentedVector.cpp | 3 modules/libpref/init/all.js | 6 mozglue/misc/Mutex_posix.cpp | 13 mozglue/misc/Mutex_windows.cpp | 2 mozglue/misc/PlatformMutex.h | 6 mozglue/misc/Printf.h | 4 netwerk/ipc/NeckoCommon.h | 2 parser/html/nsHtml5StreamParser.cpp | 15 testing/mochitest/mochitest_options.py | 5 testing/mochitest/runtests.py | 7 toolkit/components/backgroundhangmonitor/BackgroundHangMonitor.cpp | 2 toolkit/components/finalizationwitness/FinalizationWitnessService.cpp | 5 toolkit/components/printingui/ipc/nsPrintingProxy.cpp | 5 toolkit/components/telemetry/Telemetry.cpp | 21 toolkit/components/telemetry/TelemetryHistogram.cpp | 4 toolkit/components/telemetry/TelemetryScalar.cpp | 3 toolkit/content/license.html | 33 toolkit/moz.build | 1 toolkit/xre/nsAppRunner.cpp | 7 toolkit/xre/nsEmbedFunctions.cpp | 23 tools/profiler/core/platform.cpp | 5 tools/profiler/public/GeckoProfiler.h | 6 widget/VsyncDispatcher.cpp | 4 widget/nsBaseWidget.cpp | 3 xpcom/base/CycleCollectedJSContext.cpp | 2 xpcom/base/CycleCollectedJSRuntime.cpp | 50 - xpcom/base/DebuggerOnGCRunnable.cpp | 6 xpcom/base/DeferredFinalize.cpp | 46 + xpcom/base/DeferredFinalize.h | 14 xpcom/base/Logging.cpp | 4 xpcom/base/Logging.h | 11 xpcom/base/StaticMutex.h | 55 + xpcom/base/nsCycleCollector.cpp | 6 xpcom/base/nsDebugImpl.cpp | 3 xpcom/base/nsISupportsImpl.h | 27 xpcom/base/nsTraceRefcnt.cpp | 10 xpcom/components/nsComponentManager.h | 4 xpcom/ds/PLDHashTable.cpp | 20 xpcom/ds/PLDHashTable.h | 25 xpcom/ds/nsAtomTable.cpp | 5 xpcom/ds/nsGkAtomList.h | 2 xpcom/io/nsPipe3.cpp | 9 xpcom/string/nsSubstring.cpp | 16 xpcom/threads/AbstractThread.h | 5 xpcom/threads/DeadlockDetector.h | 1 xpcom/threads/Monitor.h | 5 xpcom/threads/Mutex.h | 44 - xpcom/threads/ReentrantMonitor.h | 10 xpcom/threads/TimerThread.cpp | 13 xpcom/threads/nsThread.cpp | 13 xpcom/threads/nsThreadManager.h | 4 xpcom/threads/nsThreadUtils.h | 4 228 files changed, 2806 insertions(+), 598 deletions(-)
(bug 1477691 is another installer size regression from a prior chunk of WebReplay landing.)
See Also: → 1477691
Component: General → Web Replay
:froydnj can you draw some further steps or should we conclude this with a WONTFIX?
Flags: needinfo?(nfroyd)
I dunno, maybe some of the atomic recording changes result in a lot of bloat, or something? I don't know what's causing the issue. What does the binary size of the udis86 directory look like on your machine?
Flags: needinfo?(nfroyd) → needinfo?(bhackett1024)
(In reply to Nathan Froyd [:froydnj] from comment #7) > I dunno, maybe some of the atomic recording changes result in a lot of > bloat, or something? I don't know what's causing the issue. What does the > binary size of the udis86 directory look like on your machine? ProcessRedirect.o, which contains all of udis86, is 528KB, though I don't know how much of that will be shared with other compilation units.
Flags: needinfo?(bhackett1024)
this bug has sat idle for two months- I get the impression this is a wontfix?
Flags: needinfo?(nfroyd)
Yes.
Flags: needinfo?(nfroyd)
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.