Closed Bug 1034784 Opened 10 years ago Closed 10 years ago

The main process uses 4.5 MB more of decoded images in 2.0 than in 1.4

Categories

(Firefox OS Graveyard :: Gaia::System, defect)

defect
Not set
normal

Tracking

(b2g-v1.4 unaffected, b2g-v2.0 affected)

RESOLVED WORKSFORME
Tracking Status
b2g-v1.4 --- unaffected
b2g-v2.0 --- affected

People

(Reporter: khuey, Unassigned)

References

Details

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

Attachments

(1 file)

According to the memory reports Eric gathered in bug 1028260 we're using 4.5 MB more decoded image data in 2.0.

The diff shows:
7,369,820 B (100.0%) -- explicit
├──4,790,400 B (65.00%) -- images/content

The big ones are:
│  │  ├──1,740,880 B (23.62%) ++ image(app://system.gaiamobile.org/shared/resources/branding/initlogo.png)
│  │  ├──1,581,136 B (21.45%) ++ image(blob:3a9c0b10-0ebb-4a69-a0af-36997897c105)
│  │  ├──1,581,136 B (21.45%) ++ image(blob:48703170-1273-4974-a6e1-58b7dd045836)
│  │  ├──1,544,272 B (20.95%) ++ image(app://system.gaiamobile.org/shared/style/value_selector/images/ui/gradient.png)
│  │  ├────618,576 B (08.39%) ++ image(app://callscreen.gaiamobile.org/shared/style/action_menu/images/ui/gradient.png)
│  │  ├────618,576 B (08.39%) ++ image(app://system.gaiamobile.org/shared/style/confirm/images/ui/gradient.png)

Open questions:

Why is the initlogo hanging around after startup?
Where do these blob URIs come from?
What are these gradients for and why do we need PNGs for them?
Good to see that the per-image reporting is coming in useful :)
The gradients are for backgrounds. We replaced them by plain colors on tarako, and no one complained ;)

But I don't get the same results here (not a diff):

├───2.28 MB (06.19%) -- images/content/raster/used
│   ├──0.61 MB (01.66%) -- image(blob:cb3f1d43-c26c-470e-9df6-aadda1617375)
│   │  ├──0.59 MB (01.59%) ── uncompressed-nonheap
│   │  └──0.02 MB (00.06%) ++ (2 tiny)
│   ├──0.59 MB (01.60%) -- image(app://system.gaiamobile.org/shared/style/confirm/images/ui/gradient.png)
│   │  ├──0.59 MB (01.59%) ── uncompressed-nonheap
│   │  └──0.00 MB (00.01%) ++ (2 tiny)
│   ├──0.59 MB (01.60%) -- image(app://system.gaiamobile.org/shared/style/value_selector/images/ui/gradient.png)
│   │  ├──0.59 MB (01.59%) ── uncompressed-nonheap
│   │  └──0.00 MB (00.01%) ++ (2 tiny)
│   └──0.49 MB (01.33%) -- (8 tiny)
│      ├──0.13 MB (00.35%) ++ image(app://system.gaiamobile.org/style/statusbar/images/icons.png)
│      ├──0.09 MB (00.26%) ++ image(<non-notable images>)
│      ├──0.07 MB (00.18%) ── image(app://system.gaiamobile.org/shared/resources/branding/initlogo.png)/raw
│      ├──0.06 MB (00.15%) ++ image(app://system.gaiamobile.org/style/quick_settings/images/data.png)
│      ├──0.04 MB (00.11%) ++ image(app://system.gaiamobile.org/shared/style/confirm/images/ui/pattern.png)
│      ├──0.04 MB (00.11%) ++ image(app://system.gaiamobile.org/shared/style/value_selector/images/ui/pattern.png)
│      ├──0.04 MB (00.11%) ++ image(app://system.gaiamobile.org/style/themes/default/images/ui/pattern.png)
│      └──0.02 MB (00.06%) ── image(blob:a9f32b16-a04f-4eea-897f-95a65ebd74a8)/raw

And I checked that we remove the logo DOM element (https://mxr.mozilla.org/gaia/source/apps/system/js/init_logo_handler.js#205).
Ok, I guess we need to see if this reproduces.
blocking-b2g: 2.0+ → 2.0?
Flags: needinfo?(erahm)
Eric, can you share your STR here? Or even better see if this still reproduces?
blocking-b2g: 2.0? → 2.0+
STR:
1) Reboot phone
2) Wait until lock screen is shown
3) Measure memory with |MOZ_IGNORE_NUWA_PROCESS=1 tools/get_about_memory.py --minimize|

I'll do some testing to see if I can reproduce.
After retesting [1] I still see the gradients, initlog, and blobs, so Kyle's questions are still relevant.

[1] |adb reboot && sleep 60 && MOZ_IGNORE_NUWA_PROCESS=1 tools/get_about_memory.py --minimize|

But it looks like the diff of 1.4 -> 2.0 actually shows an overall *decrease* in image memory (-1.29 MB). The stats are a little misleading due to us having better reporting in 2.0 and negative signs (-) looking like the tree dashes (─):

5.11 MB (100.0%) -- explicit
├──-1.29 MB (-25.29%) -- images/content       <--- this is an overall decrease
│  ├──-7.43 MB (-145.37%) -- used             <--- this decrease is because we changed how we report
│  │  ├──-6.68 MB (-130.78%) ── uncompressed-nonheap [-]
│  │  ├──-0.57 MB (-11.21%) ── raw [-]
│  │  └──-0.17 MB (-3.38%) ── uncompressed-heap [-]
│  └───6.14 MB (120.08%) -- raster/used       <--- this increase is because we changed how we report
│      ├──1.66 MB (32.49%) -- image(app://system.gaiamobile.org/shared/resources/branding/initlogo.png)
│      │  ├──1.46 MB (28.66%) ── uncompressed-nonheap [+]
│      │  ├──0.20 MB (03.82%) ── raw [+]
│      │  └──0.00 MB (00.00%) ── uncompressed-heap [+]
│      ├──1.51 MB (29.51%) -- image(blob:05d249c4-d760-40d6-8420-52a314b2d2ce)
│      │  ├──1.46 MB (28.66%) ── uncompressed-nonheap [+]
│      │  └──0.04 MB (00.84%) ++ (2 tiny)
│      ├──1.47 MB (28.82%) -- image(app://system.gaiamobile.org/shared/style/value_selector/images/ui/gradient.png)
│      │  ├──1.46 MB (28.66%) ── uncompressed-nonheap [+]
│      │  └──0.01 MB (00.15%) ++ (2 tiny)
│      ├──0.59 MB (11.54%) -- image(app://system.gaiamobile.org/shared/style/confirm/images/ui/gradient.png)
│      │  ├──0.59 MB (11.47%) ── uncompressed-nonheap [+]
│      │  └──0.00 MB (00.08%) ++ (2 tiny)
│      ├──0.30 MB (05.81%) -- image(app://system.gaiamobile.org/style/statusbar/images/icons.png)
│      │  ├──0.28 MB (05.50%) ── uncompressed-nonheap [+]
│      │  └──0.02 MB (00.31%) ++ (2 tiny)
│      ├──0.19 MB (03.76%) ++ (6 tiny)
│      ├──0.16 MB (03.03%) -- image(app://system.gaiamobile.org/style/statusbar/images/signal-searching.png)
│      │  ├──0.14 MB (02.81%) ── uncompressed-heap [+]
│      │  └──0.01 MB (00.23%) ── raw [+]
│      ├──0.14 MB (02.75%) -- image(<non-notable images>)
│      │  ├──0.09 MB (01.78%) ── uncompressed-heap [+]
│      │  └──0.05 MB (00.98%) ── raw [+]
│      └──0.12 MB (02.37%) -- image(app://system.gaiamobile.org/style/quick_settings/images/data.png)
│         ├──0.12 MB (02.29%) ── uncompressed-nonheap [+]
│         └──0.00 MB (00.08%) ++ (2 tiny)
Flags: needinfo?(erahm)
(In reply to Eric Rahm [:erahm] from comment #6)
> But it looks like the diff of 1.4 -> 2.0 actually shows an overall
> *decrease* in image memory (-1.29 MB). The stats are a little misleading due
> to us having better reporting in 2.0 and negative signs (-) looking like the
> tree dashes (─):

The original set of diffs showed an increase ...
(In reply to Kyle Huey [:khuey] (khuey@mozilla.com) from comment #7)
> The original set of diffs showed an increase ...

Those reports weren't generated with |--minimize|, which certainly could account for the discrepancy.
Attached file Memory report for 2.0
Memory report for 2.0 generated using:
  |adb reboot && sleep 60 && MOZ_IGNORE_NUWA_PROCESS=1 tools/get_about_memory.py --minimize|
initlogo.png is bug 1035432

The large blob URI is the wallpaper.  I assume that lives forever?  If so this isn't that big of a deal.

The two gradients appear to be the same image.  They would share compressed memory if they were the same URL, and probably uncompressed too, although they might be decoded to two different sizes.
Flags: needinfo?(alive)
(In reply to Kyle Huey [:khuey] (khuey@mozilla.com) from comment #10)
> initlogo.png is bug 1035432
> 
> The large blob URI is the wallpaper.  I assume that lives forever?  If so
> this isn't that big of a deal.

Wallpaper lives forever.

> 
> The two gradients appear to be the same image.  They would share compressed
> memory if they were the same URL, and probably uncompressed too, although
> they might be decoded to two different sizes.

For gradient we could try to access the same URL, does this help?
But for the gradient lives in callscreen, I guess we shouldn't. It appears because callscreen is in process right now. Don't think we should share the same image between callscreen and system.
Flags: needinfo?(alive)
What are the next steps here? Is the bug description and the blocking flag still accurate?
No, it's not.  I'll file new bugs for the remaining issues.
Status: NEW → RESOLVED
blocking-b2g: 2.0+ → ---
Closed: 10 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: