Closed Bug 1017058 Opened 10 years ago Closed 6 years ago

Create regression tests for the memory use of SVG-as-an-image

Categories

(Firefox OS Graveyard :: Performance, defect, P3)

defect

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: jwatt, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: perf, Whiteboard: [c=automation p= s= u=])

Spinning this off from bug 999931 since I think this may involve creating a type of test [framework] that we don't currently have.

In bug 999931 I'm working on reducing the memory used by SVG-as-an-image as much as practical in order to allow SVG to be used in gaia. If we get to the point where the memory consumption is at a level that's acceptable to the gaia folks to start using SVG, then we need to make sure that the memory use doesn't increase to unacceptable levels once they're using it all over the place.

Right now there's no good way to reliably measure just the memory used by an SVG image. I'm hoping that there is a reliable way to measure the memory used by a Firefox OS app, though. If so, perhaps the most practical way to create a regression test for SVG memory use is to have an app that is a simple HTML page containing hundreds of SVG images. The memory use of the SVG would then swamp all other memory use, so any increase in the memory used by SVG images should clearly show up as an increase in the memory used by the app.

Joel, do we have a way of doing this currently, or would you be able to create one? Or is there someone better to ask about this?
just from reading this, I am thinking make perf-test is a great vehicle for this test.

:hub, am I thinking about this right?
Flags: needinfo?(hub)
Yes we could. But it might be better when bug 971958 is done.
Flags: needinfo?(hub)
thanks :hub!  I see bug 971958 is assigned to you, are you planning on working on that in the short term?

here is the documentation that I know of:
https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests

:jwatt, is that documentation enough to either get you started on adding this svg test or enough to ask more detailed questions?
If I understand correctly, bug 971958 depends on Mozilla's internal memory reporting mechanism (the same one used for about:memory). Is that correct?

I'm really hoping for reliable measures, I guess from the Linux/Android kernel that knows how much memory it's given to a process.
(In reply to Joel Maher (:jmaher) from comment #3)
> :jwatt, is that documentation enough to either get you started on adding
> this svg test or enough to ask more detailed questions?

Not even close. I don't see anything about how to test memory use. I eventually ended up on https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Performance_tests by following links, where it says the page is deprecated...
Non-determinism is the (very) hard part of this kind of thing. Bug 1000268 is the best idea we have for at least partially solving the non-determinism-in-memory-measurements problem.
(In reply to Jonathan Watt [:jwatt] from comment #4)
> If I understand correctly, bug 971958 depends on Mozilla's internal memory
> reporting mechanism (the same one used for about:memory). Is that correct?
> 
> I'm really hoping for reliable measures, I guess from the Linux/Android
> kernel that knows how much memory it's given to a process.

Currently we do use the output of b2g-info. 

I have added some documentation on how to write a test that collect these memory statistics:

https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests#Collecting_memory_statistics
(In reply to Joel Maher (:jmaher) from comment #3)
> thanks :hub!  I see bug 971958 is assigned to you, are you planning on
> working on that in the short term?

Not this sprint (end June 6), unlikely the next one (June 20), albeit it is get close to the head of the line.

If you just want raw memory info, the current mechanism should be able. At least to do some comparisons before and after.
:jwatt, it sounds like make test-perf in its current state would not work for your needs.  I am not sure if our current automation has a good method for calling out to the kernel to get statistics.  These tests rely on Marionette, we would need to either:
1) have marionette make gecko calls to get raw system information
2) use a client side adb to get raw system information

iirc, the android fennec about:memory information already parses the /proc tables to get memory and process information.  I had looked into doing something similar for Android and realized it was already done.
> iirc, the android fennec about:memory information already parses the /proc
> tables to get memory and process information.  I had looked into doing
> something similar for Android and realized it was already done.

http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsIMemoryReporter.idl#277 is a list of "distinguished amounts" that the memory reporter manager supports, several of which (esp. "resident" and "vsize" are from the OS).

But as I said, those are really noisy. Looking at the SVG-specific memory reports would be a better bet, because they're more likely to be deterministic.
Triage: Hub, any updates on this bug? Thanks!
Flags: needinfo?(hub)
Keywords: perf
Priority: -- → P3
Whiteboard: [c=automation p= s= u=]
We need bug 971958 first.
Depends on: 971958
Flags: needinfo?(hub)
Blocks: 1054016
No longer blocks: 1347543
Firefox OS is not being worked on
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.