Closed Bug 1055825 Opened 10 years ago Closed 10 years ago

Regression in Private Bytes/RSS after Bug 1026561 and Bug 990322

Categories

(Firefox :: New Tab Page, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: khuey, Assigned: Mardak)

References

Details

(Keywords: memory-footprint, regression, Whiteboard: [MemShrink:P2])

Attachments

(1 file)

Unsurprisingly Bug 1026561 made us use more memory.  We probably don't care, but filing anyways.
This needs investigation because the increase seems larger than a few more images would account for.
Whiteboard: [MemShrink] → [MemShrink:P2]
I'll grab some memory reports for this.
Flags: needinfo?(erahm)
[Tracking Requested - why for this release]:
regression - nom for tracking
I noted in bug 990322 comment 24 (which is the next push after bug 1026561) that when it originally landed by itself (push 3f3f9b729ee7) then backed out, it caused a tp5o regression.

http://graphs.mozilla.org/graph.html#tests=[[261,132,25],[261,132,33],[261,132,35],[261,132,37],[257,132,33],[257,132,35],[257,132,37],[257,132,25]]&sel=1407538811795.6667,1407543114017.889,140994743.69493282,633178961.0544211&displayrange=30&datatype=running
bug  990322 linux64 rss: 7.9%

To be clear, bug 1026561 (push 05f052f7c894) landed and regressed, and the followup push with bug 990322 (push de9d70a14a16) did not regress as much as it did solo (graphs above).

http://graphs.mozilla.org/graph.html#tests=[[261,132,25],[261,132,33],[261,132,35],[261,132,37],[257,132,33],[257,132,35],[257,132,37],[257,132,25]]&sel=1408248504368.4443,1408265793257.3333,99233772.57553017,644124361.0607649&displayrange=30&datatype=running
bug 1026561 linux64 rss: 9.2%
bug  990322 linux64 rss: 2.2%

We landed bug 1055261 (push dd0e4667d948) reducing it from 24 tiles (8 columns) to 15 tiles (5 columns), so still higher than the original 9 tiles (3 columns), but that seems to have had negligible effect:

http://graphs.mozilla.org/graph.html#tests=[[261,132,33],[257,132,35],[257,132,33],[261,132,35],[261,132,37],[261,132,25],[257,132,37],[257,132,25]]&sel=1408418989784.3333,1408423182006.5557,170305932.5938471,586749527.2401186&displayrange=7&datatype=running
bug 1055261 linux64 rss: -0.1%
Blocks: 990322, 1055261
Summary: Regression in Private Bytes/RSS after Bug 1026561 → Regression in Private Bytes/RSS after Bug 1026561 and Bug 990322
Attached file bug_1055825.tar.bz2
Memory and DMD reports after loading about:newtab from before the regression started, the bug that triggered the primary regression, and with the latest m-c (where the regression has gone away).

There's a bit of noise from about:memory and DMD that should be ignored.

baseline:
  bug_1055825/dmd-pre.txt.gz
  bug_1055825/memory-report-pre.json.gz

regression:
  bug_1055825/dmd-regression.txt.gz
  bug_1055825/memory-report-regression.json.gz

m-c:
  bug_1055825/memory-report-latest.json.gz
  bug_1055825/dmd-latest.txt.gz
Diff of baseline vs regression, all that changed b/w builds were the pref changes.

Of note if you ignore about:memory:
  - window-objects is +0.99 MB
  - heap-unclassified is +7.81 MB
  - js-non-window is +5.66 MB
  - workers/workers(chrome) is +2.13 MB
  - images is +0.91 MB

From the DMD report for the regressed build the top offenders appear to all be CSS/Image/URI related.

Diff:
30.91 MB (100.0%) -- explicit
├──11.57 MB (37.45%) -- window-objects
│  ├──10.58 MB (34.23%) ++ top(about:memory, id=7)
│  ├───1.88 MB (06.10%) ++ top(about:newtab, id=16)
│  ├──-1.47 MB (-4.75%) ++ top(about:newtab, id=19)
│  ├───1.45 MB (04.68%) ++ top(about:newtab, id=21)
│  ├──-1.20 MB (-3.88%) ++ top(about:newtab, id=25)
│  ├──-0.97 MB (-3.13%) ++ top(about:memory, id=13)
│  ├───0.76 MB (02.46%) ++ top(chrome://browser/content/browser.xul, id=3)
│  └───0.54 MB (01.74%) ++ top(chrome://browser/content/hiddenWindow.xul, id=1)
├───7.81 MB (25.26%) ── heap-unclassified
├───5.66 MB (18.33%) -- js-non-window
│   ├──3.12 MB (10.11%) -- runtime
│   │  ├──1.31 MB (04.25%) ++ code
│   │  ├──0.70 MB (02.28%) ── uncompressed-source-cache
│   │  ├──0.52 MB (01.69%) ++ script-sources
│   │  ├──0.43 MB (01.40%) ── script-data
│   │  └──0.15 MB (00.49%) ++ (3 tiny)
│   ├──2.45 MB (07.91%) ++ zones/zone(0xNNN)
│   └──0.09 MB (00.30%) ── gc-heap/chunk-admin
├───2.13 MB (06.90%) -- workers/workers(chrome)
│   ├──2.13 MB (06.90%) ++ worker(resource://gre/modules/PageThumbsWorker.js, 0xNNN)
│   └──0.00 MB (00.01%) ++ (2 tiny)
├───1.69 MB (05.48%) ++ dmd
├───1.06 MB (03.44%) ++ storage
├───0.91 MB (02.95%) ++ images
├──-0.25 MB (-0.81%) ++ heap-overhead
├──-0.42 MB (-1.36%) ++ network
├───0.43 MB (01.38%) ++ xpconnect
└───0.30 MB (00.98%) ++ (12 tiny)


DMD top hits:
Unreported {
  3 blocks in heap block record 1 of 2,318
  1,875,968 bytes (1,869,037 requested / 6,931 slop)
  2.44% of the heap (2.44% cumulative)
  6.46% of unreported (6.46% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    moz_malloc
    mozilla::gfx::AlignedArray<unsigned char, 16>::Realloc(unsigned long)
    mozilla::gfx::DrawTargetCG::Init(mozilla::gfx::BackendType, unsigned char*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, int, mozilla::gfx::SurfaceFormat)
    mozilla::gfx::DrawTargetCG::Init(mozilla::gfx::BackendType, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::SurfaceFormat&)
    mozilla::gfx::Factory::CreateDrawTarget(mozilla::gfx::BackendType, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::SurfaceFormat)
    gfxPlatform::CreateDrawTargetForBackend(mozilla::gfx::BackendType, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::SurfaceFormat)
    gfxPlatform::CreateOffscreenContentDrawTarget(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::SurfaceFormat)
    mozilla::layers::ContentClientBasic::CreateBuffer(gfxContentType, nsIntRect const&, unsigned int, mozilla::RefPtr<mozilla::gfx::DrawTarget>*, mozilla::RefPtr<mozilla::gfx::DrawTarget>*)
    non-virtual thunk to mozilla::layers::ContentClientBasic::CreateBuffer(gfxContentType, nsIntRect const&, unsigned int, mozilla::RefPtr<mozilla::gfx::DrawTarget>*, mozilla::RefPtr<mozilla::gfx::DrawTarget>*)
    mozilla::layers::RotatedContentBuffer::BeginPaint(mozilla::layers::ThebesLayer*, unsigned int)
    mozilla::layers::ContentClientBasic::BeginPaintBuffer(mozilla::layers::ThebesLayer*, unsigned int)
    mozilla::layers::BasicThebesLayer::Validate(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::ReadbackProcessor*)
    non-virtual thunk to mozilla::layers::BasicThebesLayer::Validate(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::ReadbackProcessor*)
    mozilla::layers::BasicContainerLayer::Validate(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::ReadbackProcessor*)
    non-virtual thunk to mozilla::layers::BasicContainerLayer::Validate(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::ReadbackProcessor*)
    mozilla::layers::BasicLayerManager::EndTransactionInternal(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags)
    mozilla::layers::BasicLayerManager::EndTransaction(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags)
    nsDisplayList::PaintForFrame(nsDisplayListBuilder*, nsRenderingContext*, nsIFrame*, unsigned int)
    nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int)
  }
}

Unreported {
  ~55 blocks in heap block record 2 of 2,318
  ~1,748,971 bytes (~1,642,395 requested / ~106,576 slop)
  2.27% of the heap (4.71% cumulative)
  6.02% of unreported (12.48% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    nsStringBuffer::Alloc(unsigned long)
    nsAString_internal::MutatePrep(unsigned int, char16_t**, unsigned int*)
    nsAString_internal::ReplacePrepInternal(unsigned int, unsigned int, unsigned int, unsigned int)
    nsAString_internal::ReplacePrep(unsigned int, unsigned int, unsigned int)
    nsAString_internal::Replace(unsigned int, unsigned int, char16_t const*, unsigned int, mozilla::fallible_t const&)
    nsAString_internal::Replace(unsigned int, unsigned int, char16_t const*, unsigned int)
    nsAString_internal::Append(char16_t const*, unsigned int)
    nsCSSScanner::GatherText(unsigned char, nsString&)
    nsCSSScanner::ScanString(nsCSSToken&)
    nsCSSScanner::NextURL(nsCSSToken&)
    nsCSSScanner::ScanIdent(nsCSSToken&)
    nsCSSScanner::Next(nsCSSToken&, bool)
    (anonymous namespace)::CSSParserImpl::GetToken(bool)
    (anonymous namespace)::CSSParserImpl::ParseVariant(nsCSSValue&, int, short const*)
    (anonymous namespace)::CSSParserImpl::ParseValueList(nsCSSProperty)
    (anonymous namespace)::CSSParserImpl::ParseProperty(nsCSSProperty)
    (anonymous namespace)::CSSParserImpl::ParseProperty(nsCSSProperty, nsAString_internal const&, nsIURI*, nsIURI*, nsIPrincipal*, mozilla::css::Declaration*, bool*, bool, bool)
    nsCSSParser::ParseProperty(nsCSSProperty, nsAString_internal const&, nsIURI*, nsIURI*, nsIPrincipal*, mozilla::css::Declaration*, bool*, bool, bool)
    nsDOMCSSDeclaration::ParsePropertyValue(nsCSSProperty, nsAString_internal const&, bool)
  }
}

Unreported {
  ~25 blocks in heap block record 3 of 2,318
  ~1,347,581 bytes (~1,303,376 requested / ~44,205 slop)
  1.75% of the heap (6.47% cumulative)
  4.64% of unreported (17.12% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    moz_malloc
    nsTArrayFallibleAllocator::Malloc(unsigned long)
    nsTArray_base<nsTArrayFallibleAllocator, nsTArray_CopyWithMemutils>::EnsureCapacity(unsigned long, unsigned long)
    nsTArray_Impl<char, nsTArrayFallibleAllocator>::SetCapacity(unsigned long)
    mozilla::image::RasterImage::SetSourceSizeHint(unsigned int)
    mozilla::image::ImageFactory::CreateRasterImage(nsIRequest*, imgStatusTracker*, nsCString const&, mozilla::image::ImageURL*, unsigned int, unsigned int)
    mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*, nsCString const&, mozilla::image::ImageURL*, bool, unsigned int)
    imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    non-virtual thunk to nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    nsInputStreamPump::OnStateTransfer()
    nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
    non-virtual thunk to nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
    nsInputStreamReadyEvent::Run()
    nsThread::ProcessNextEvent(bool, bool*)
    NS_ProcessPendingEvents(nsIThread*, unsigned int)
    nsBaseAppShell::NativeEventCallback()
    nsAppShell::ProcessGeckoEvents(void*)
  }
}

Unreported {
  ~44 blocks in heap block record 4 of 2,318
  ~901,096 bytes (~817,808 requested / ~83,288 slop)
  1.17% of the heap (7.64% cumulative)
  3.10% of unreported (20.22% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    nsStringBuffer::Alloc(unsigned long)
    nsACString_internal::MutatePrep(unsigned int, char**, unsigned int*)
    nsACString_internal::ReplacePrepInternal(unsigned int, unsigned int, unsigned int, unsigned int)
    nsACString_internal::ReplacePrep(unsigned int, unsigned int, unsigned int)
    nsACString_internal::Assign(char const*, unsigned int, mozilla::fallible_t const&)
    nsACString_internal::Assign(nsACString_internal const&, mozilla::fallible_t const&)
    nsACString_internal::Assign(nsACString_internal const&)
    nsCString::operator=(nsACString_internal const&)
    nsSimpleURI::SetPath(nsACString_internal const&)
    nsSimpleURI::SetSpec(nsACString_internal const&)
    nsDataHandler::NewURI(nsACString_internal const&, char const*, nsIURI*, nsIURI**)
    nsIOService::NewURI(nsACString_internal const&, char const*, nsIURI*, nsIURI**)
    NS_NewURI(nsIURI**, nsACString_internal const&, char const*, nsIURI*, nsIIOService*)
    mozilla::css::URLValue::GetURI() const
    nsCSSValue::StartImageLoad(nsIDocument*) const
    TryToStartImageLoadOnValue(nsCSSValue const&, nsIDocument*, nsCSSValueTokenStream*)
    TryToStartImageLoad(nsCSSValue const&, nsIDocument*, nsCSSProperty, nsCSSValueTokenStream*)
    TryToStartImageLoad(nsCSSValue const&, nsIDocument*, nsCSSProperty, nsCSSValueTokenStream*)
    MapSinglePropertyInto(nsCSSProperty, nsCSSValue const*, nsCSSValue*, nsRuleData*)
  }
}

Unreported {
  ~11 blocks in heap block record 5 of 2,318
  ~647,165 bytes (~627,252 requested / ~19,913 slop)
  0.84% of the heap (8.48% cumulative)
  2.23% of unreported (22.45% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    moz_malloc
    nsTArrayFallibleAllocator::Malloc(unsigned long)
    nsTArray_base<nsTArrayFallibleAllocator, nsTArray_CopyWithMemutils>::EnsureCapacity(unsigned long, unsigned long)
    nsTArray_Impl<char, nsTArrayFallibleAllocator>::SetCapacity(unsigned long)
    mozilla::image::RasterImage::SetSourceSizeHint(unsigned int)
    mozilla::image::ImageFactory::CreateRasterImage(nsIRequest*, imgStatusTracker*, nsCString const&, mozilla::image::ImageURL*, unsigned int, unsigned int)
    mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*, nsCString const&, mozilla::image::ImageURL*, bool, unsigned int)
    imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    imgCacheValidator::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    non-virtual thunk to nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
    nsInputStreamPump::OnStateTransfer()
    nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
    non-virtual thunk to nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
    nsInputStreamReadyEvent::Run()
    nsThread::ProcessNextEvent(bool, bool*)
    NS_ProcessPendingEvents(nsIThread*, unsigned int)
    nsBaseAppShell::NativeEventCallback()
  }
}

Unreported {
  ~13 blocks in heap block record 6 of 2,318
  ~331,767 bytes (~326,865 requested / ~4,902 slop)
  0.43% of the heap (8.91% cumulative)
  1.14% of unreported (23.59% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    nsStringBuffer::Alloc(unsigned long)
    nsACString_internal::MutatePrep(unsigned int, char**, unsigned int*)
    nsACString_internal::Assign(nsCSubstringTuple const&, mozilla::fallible_t const&)
    nsACString_internal::Assign(nsCSubstringTuple const&)
    nsACString_internal::operator=(nsCSubstringTuple const&)
    nsSimpleURI::GetSpec(nsACString_internal&)
    mozilla::image::ImageURL::ImageURL(nsIURI*)
    mozilla::image::ImageURL::ImageURL(nsIURI*)
    imgRequest::Init(nsIURI*, nsIURI*, nsIRequest*, nsIChannel*, imgCacheEntry*, void*, nsIPrincipal*, int)
    imgLoader::LoadImage(nsIURI*, nsIURI*, nsIURI*, nsIPrincipal*, nsILoadGroup*, imgINotificationObserver*, nsISupports*, unsigned int, nsISupports*, nsIChannelPolicy*, nsAString_internal const&, imgRequestProxy**)
    nsContentUtils::LoadImage(nsIURI*, nsIDocument*, nsIPrincipal*, nsIURI*, imgINotificationObserver*, int, nsAString_internal const&, imgRequestProxy**)
    mozilla::css::ImageLoader::LoadImage(nsIURI*, nsIPrincipal*, nsIURI*, mozilla::css::ImageValue*)
    mozilla::css::ImageValue::ImageValue(nsIURI*, nsStringBuffer*, nsIURI*, nsIPrincipal*, nsIDocument*)
    mozilla::css::ImageValue::ImageValue(nsIURI*, nsStringBuffer*, nsIURI*, nsIPrincipal*, nsIDocument*)
    nsCSSValue::StartImageLoad(nsIDocument*) const
    TryToStartImageLoadOnValue(nsCSSValue const&, nsIDocument*, nsCSSValueTokenStream*)
    TryToStartImageLoad(nsCSSValue const&, nsIDocument*, nsCSSProperty, nsCSSValueTokenStream*)
    TryToStartImageLoad(nsCSSValue const&, nsIDocument*, nsCSSProperty, nsCSSValueTokenStream*)
    MapSinglePropertyInto(nsCSSProperty, nsCSSValue const*, nsCSSValue*, nsRuleData*)
  }
}

Unreported {
  ~12 blocks in heap block record 7 of 2,318
  ~327,674 bytes (~322,772 requested / ~4,902 slop)
  0.43% of the heap (9.34% cumulative)
  1.13% of unreported (24.72% cumulative)
  Allocated at {
    replace_malloc
    malloc_impl
    zone_malloc
    malloc_zone_malloc
    malloc
    nsStringBuffer::Alloc(unsigned long)
    nsACString_internal::MutatePrep(unsigned int, char**, unsigned int*)
    nsACString_internal::Assign(nsCSubstringTuple const&, mozilla::fallible_t const&)
    nsACString_internal::Assign(nsCSubstringTuple const&)
    nsACString_internal::operator=(nsCSubstringTuple const&)
    nsSimpleURI::GetSpec(nsACString_internal&)
    imgLoader::PutIntoCache(nsIURI*, imgCacheEntry*)
    imgLoader::LoadImage(nsIURI*, nsIURI*, nsIURI*, nsIPrincipal*, nsILoadGroup*, imgINotificationObserver*, nsISupports*, unsigned int, nsISupports*, nsIChannelPolicy*, nsAString_internal const&, imgRequestProxy**)
    nsContentUtils::LoadImage(nsIURI*, nsIDocument*, nsIPrincipal*, nsIURI*, imgINotificationObserver*, int, nsAString_internal const&, imgRequestProxy**)
    mozilla::css::ImageLoader::LoadImage(nsIURI*, nsIPrincipal*, nsIURI*, mozilla::css::ImageValue*)
    mozilla::css::ImageValue::ImageValue(nsIURI*, nsStringBuffer*, nsIURI*, nsIPrincipal*, nsIDocument*)
    mozilla::css::ImageValue::ImageValue(nsIURI*, nsStringBuffer*, nsIURI*, nsIPrincipal*, nsIDocument*)
    nsCSSValue::StartImageLoad(nsIDocument*) const
    TryToStartImageLoadOnValue(nsCSSValue const&, nsIDocument*, nsCSSValueTokenStream*)
    TryToStartImageLoad(nsCSSValue const&, nsIDocument*, nsCSSProperty, nsCSSValueTokenStream*)
    TryToStartImageLoad(nsCSSValue const&, nsIDocument*, nsCSSProperty, nsCSSValueTokenStream*)
    MapSinglePropertyInto(nsCSSProperty, nsCSSValue const*, nsCSSValue*, nsRuleData*)
    nsCSSCompressedDataBlock::MapRuleInfoInto(nsRuleData*) const
    mozilla::css::Declaration::MapNormalRuleInfoInto(nsRuleData*) const
  }
}
Flags: needinfo?(erahm)
Diff of regressed with m-c:

Again we'll want to ignore about:memory and DMD, of note:

  - window-objects is -1.71 MB
  - heap-unclassified is -6.08 MB
  - js-non-window is +2.17 MB
  - workers/workers(chrome) is -0.05 MB
  - images is +0.66 MB

So the main difference here is heap-unclassified is way better and window-objects is better as well, but js-non-window went up, workers is still up, and images increased further.

-21.29 MB (100.0%) -- explicit
├──-10.56 MB (49.59%) -- window-objects
│  ├───-8.85 MB (41.57%) ++ top(about:memory, id=7)
│  ├───-0.68 MB (03.20%) ++ top(chrome://browser/content/browser.xul, id=3)
│  ├───-0.56 MB (02.65%) ++ top(chrome://browser/content/hiddenWindow.xul, id=1)
│  ├───-0.28 MB (01.32%) ++ top(about:newtab, id=16)
│  └───-0.18 MB (00.85%) -- (2 tiny)
│      ├──-0.18 MB (00.84%) ++ top(about:newtab, id=21)
│      └──-0.00 MB (00.00%) ++ top(about:blank, id=6)/active/window(about:blank)/dom
├───-6.08 MB (28.57%) ── heap-unclassified
├────2.88 MB (-13.54%) ++ startup-cache
├───-2.78 MB (13.06%) ++ heap-overhead
├───-2.17 MB (10.20%) -- js-non-window
│   ├──-2.29 MB (10.74%) -- runtime
│   │  ├──-0.70 MB (03.31%) ── uncompressed-source-cache
│   │  ├──-0.69 MB (03.23%) ++ code
│   │  ├──-0.47 MB (02.23%) -- script-sources
│   │  │  ├──-0.48 MB (02.25%) ++ (14 tiny)
│   │  │  ├───0.23 MB (-1.09%) ++ source(scripts=1564, <non-notable files>)
│   │  │  └──-0.23 MB (01.07%) ++ source(scripts=1549, <non-notable files>)
│   │  ├──-0.36 MB (01.67%) ── script-data
│   │  └──-0.06 MB (00.30%) ++ (3 tiny)
│   ├───0.19 MB (-0.90%) ++ zones/zone(0xNNN)
│   └──-0.08 MB (00.37%) ── gc-heap/chunk-admin
├───-1.14 MB (05.35%) ++ dmd
├───-0.66 MB (03.08%) ++ storage
├───-0.66 MB (03.08%) ++ images
├────0.50 MB (-2.36%) ++ network
├───-0.33 MB (01.53%) ++ (14 tiny)
│   ├──-0.05 MB (00.23%) -- workers/workers(chrome)
└───-0.31 MB (01.44%) ++ xpconnect
And diff of baseline w/ m-c, this is a bit harder to interpret due the amount of commits in between, but we can still look at some of the same numbers:

  - window-objects is +1.02 MB
  - heap-unclassified is +1.73 MB
  - js-non-window is +3.49 MB
  - workers/workers(chrome) is +2.09 MB
  - images is +0.26 MB

So we might argue that there's still a sizable regression.

9.62 MB (100.0%) -- explicit
├──2.88 MB (29.96%) ++ startup-cache
├──3.49 MB (36.30%) -- js-non-window
│  ├──2.64 MB (27.42%) ++ zones/zone(0xNNN)
│  ├──0.84 MB (08.72%) ++ runtime
│  └──0.02 MB (00.16%) ── gc-heap/chunk-admin
├──-3.03 MB (-31.50%) ++ heap-overhead
├──2.09 MB (21.67%) -- workers/workers(chrome)
│  ├──2.01 MB (20.94%) ++ worker(resource://gre/modules/PageThumbsWorker.js, 0xNNN)
│  └──0.07 MB (00.73%) ++ (2 tiny)
├──1.02 MB (10.58%) -- window-objects
│  ├──1.73 MB (17.99%) ++ top(about:memory, id=7)
│  ├──1.60 MB (16.65%) ++ top(about:newtab, id=16)
│  ├──-1.47 MB (-15.27%) ++ top(about:newtab, id=19)
│  ├──1.27 MB (13.19%) ++ top(about:newtab, id=21)
│  ├──-1.20 MB (-12.45%) ++ top(about:newtab, id=25)
│  ├──-0.97 MB (-10.06%) ++ top(about:memory, id=13)
│  ├──0.08 MB (00.82%) ++ top(chrome://browser/content/browser.xul, id=3)
│  └──-0.03 MB (-0.29%) ++ (2 tiny)
├──1.73 MB (17.94%) ── heap-unclassified
├──0.56 MB (05.78%) ++ dmd/stack-traces
├──0.41 MB (04.25%) ++ storage
├──0.26 MB (02.68%) ++ images
├──0.12 MB (01.26%) ++ xpconnect
└──0.10 MB (01.08%) ++ (14 tiny)
Would love to get someone assigned to this!
this set of regressions showed up on Aurora last week via the talos alerts.
Nod. Those bugs were uplifted to 33 for bug 1057602.
Ed, is this fixed?
Flags: needinfo?(edilee)
we still have linux32/64 regressions in private bytes on tp5o on aurora (v.34) as a result of the uplift.
Ed - I have set you as the owner as this seems to be your bug. Given that we still have a regression (at least we did a month ago), what is the next step here as 34 uplifts to Aurora on Monday?
Assignee: nobody → edilee
Per comment 6 showing the memory changes of the specific regression, they seem to be directly tied to showing more tiles (which involves loading more images, creating more tiles with more html/css/uris).

One potential idea that I'll also note in bug 1059558, which has active work in improving performance of the newtab page, is that I believe our test machines run with high resolution and are able to show all tiles, but for many users, fewer than 3 rows and fewer than 5 columns will be visible -- we could possibly lazily load tiles that aren't immediately visible.
Status: NEW → RESOLVED
Closed: 10 years ago
Flags: needinfo?(edilee)
Resolution: --- → WONTFIX
Depends on: 1059558
Depends on: 1081536
Dropping tracking based on comment 15. I will note that bug 1059558 is already tracked.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: