Closed
Bug 1457243
Opened 7 years ago
Closed 7 years ago
Measure best case process memory usage on AWSY
Categories
(Testing :: AWSY, enhancement)
Tracking
(firefox62 fixed)
RESOLVED
FIXED
mozilla62
| Tracking | Status | |
|---|---|---|
| firefox62 | --- | fixed |
People
(Reporter: ajones, Assigned: erahm)
Details
Attachments
(6 files, 1 obsolete file)
|
1.68 KB,
patch
|
bc
:
review+
|
Details | Diff | Splinter Review |
|
4.90 KB,
patch
|
bc
:
review+
|
Details | Diff | Splinter Review |
|
34.84 KB,
patch
|
bc
:
review+
|
Details | Diff | Splinter Review |
|
2.08 KB,
patch
|
bc
:
review+
|
Details | Diff | Splinter Review |
|
3.55 KB,
patch
|
bc
:
review+
|
Details | Diff | Splinter Review |
|
5.44 KB,
patch
|
bc
:
review+
|
Details | Diff | Splinter Review |
The goal is to measure and graph the best case content process size. This allows us to track the memory feasibility of a large number of content processes.
It should ignore shared memory components so could perhaps be measured as the difference between n and n+1 tabs of about:blank being loaded in the browser.
| Assignee | ||
Comment 1•7 years ago
|
||
Just a note: this number is going to be pretty noisy. We might try something like loading 4 about:blanks, waiting 30-60s, performing a GC and then only grabbing the measurement of the 'last' about:blank process. This could just end up being the 'SY-e10s(ab)' measurement.
We can probably just use the existing framework, but one thing we want to watch out for is any marionette overhead in the content process.
| Assignee | ||
Comment 2•7 years ago
|
||
I have WIP cloned off the existing awsy test, I just need to clean it up and decide on how much code we can share.
Assignee: nobody → erahm
Status: NEW → ASSIGNED
| Assignee | ||
Comment 3•7 years ago
|
||
| Assignee | ||
Comment 4•7 years ago
|
||
Comment 5•7 years ago
|
||
try this.
| Assignee | ||
Comment 6•7 years ago
|
||
| Assignee | ||
Comment 7•7 years ago
|
||
Attachment #8974580 -
Flags: review?(bob)
| Assignee | ||
Comment 8•7 years ago
|
||
Attachment #8974581 -
Flags: review?(bob)
| Assignee | ||
Comment 9•7 years ago
|
||
Attachment #8974582 -
Flags: review?(bob)
| Assignee | ||
Comment 10•7 years ago
|
||
This adds support for only gathering data for a given process type. It also
allows you to limit the number of processes included in a measurement.
Attachment #8974583 -
Flags: review?(bob)
| Assignee | ||
Comment 11•7 years ago
|
||
Attachment #8974584 -
Flags: review?(bob)
| Assignee | ||
Comment 12•7 years ago
|
||
Attachment #8974585 -
Flags: review?(bob)
| Assignee | ||
Comment 13•7 years ago
|
||
Comment 14•7 years ago
|
||
I'm out today but I'll get to this this afternoon/evening when I get back.
Comment 15•7 years ago
|
||
Comment on attachment 8974580 [details] [diff] [review]
Part 1: Support zero values for awsy params in mach_commands
Review of attachment 8974580 [details] [diff] [review]:
-----------------------------------------------------------------
Looks ok but if you can simplify it that would be nice. r+
::: testing/awsy/mach_commands.py
@@ +81,5 @@
> + # These args can be zero
> + for arg in ('entities', 'iterations', 'perTabPause', 'settleWaitTime', 'maxTabs'):
> + if arg in kwargs and kwargs[arg] is not None:
> + runtime_testvars[arg] = kwargs[arg]
> +
Perhaps I'm missing it, but couldn't we do this for all of the args instead of having both?
Attachment #8974580 -
Flags: review?(bob) → review+
Comment 16•7 years ago
|
||
Comment on attachment 8974581 [details] [diff] [review]
Part 2: Allow checkpoints and perf_suites to be passed in to process_perf_data
Review of attachment 8974581 [details] [diff] [review]:
-----------------------------------------------------------------
r+, looks ok.
::: testing/awsy/awsy/process_perf_data.py
@@ +36,3 @@
> """
> Updates CHECKPOINTS with memory report file fetched in data_path
> :param checkpoint_files: list of files in data_path
Document checkpoints?
Attachment #8974581 -
Flags: review?(bob) → review+
Comment 17•7 years ago
|
||
Comment on attachment 8974582 [details] [diff] [review]
Part 3: Split out a base awsy test case
Review of attachment 8974582 [details] [diff] [review]:
-----------------------------------------------------------------
r+ with fixes for the imports.
::: testing/awsy/awsy/test_memory_usage.py
@@ +5,2 @@
> import os
> import sys
from marionette_driver.errors import JavascriptException, ScriptTimeoutException
are still required in clear_preloaded_browser()
@@ -26,1 @@
> from awsy import process_perf_data, webservers
webservers no longer used.
Attachment #8974582 -
Flags: review?(bob) → review+
Comment 18•7 years ago
|
||
Comment on attachment 8974583 [details] [diff] [review]
Part 4: Support filtering on process names and limit process count
Review of attachment 8974583 [details] [diff] [review]:
-----------------------------------------------------------------
r+
Attachment #8974583 -
Flags: review?(bob) → review+
Comment 19•7 years ago
|
||
Comment on attachment 8974584 [details] [diff] [review]
Part 5: Add base case AWSY test that just measures about:blank
Review of attachment 8974584 [details] [diff] [review]:
-----------------------------------------------------------------
r+ with comment addressed.
::: testing/awsy/awsy/test_base_memory_usage.py
@@ +42,5 @@
> +
> + def perf_checkpoints(self):
> + return CHECKPOINTS
> +
> + def iterations(self):
I'm a little concerned about overriding this to return a fixed number but not also dealing with the self._iterations.
Wouldn't it be better to just override self._iterations = 1 in setUp and leave this alone?
Attachment #8974584 -
Flags: review?(bob) → review+
Updated•7 years ago
|
Attachment #8974585 -
Flags: review?(bob) → review+
| Assignee | ||
Updated•7 years ago
|
Attachment #8974488 -
Attachment is obsolete: true
| Assignee | ||
Comment 20•7 years ago
|
||
(In reply to Bob Clary [:bc:] from comment #15)
> Comment on attachment 8974580 [details] [diff] [review]
> Part 1: Support zero values for awsy params in mach_commands
>
> Review of attachment 8974580 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> Looks ok but if you can simplify it that would be nice. r+
>
> ::: testing/awsy/mach_commands.py
> @@ +81,5 @@
> > + # These args can be zero
> > + for arg in ('entities', 'iterations', 'perTabPause', 'settleWaitTime', 'maxTabs'):
> > + if arg in kwargs and kwargs[arg] is not None:
> > + runtime_testvars[arg] = kwargs[arg]
> > +
>
> Perhaps I'm missing it, but couldn't we do this for all of the args instead
> of having both?
It's not quite the same test, like if kwargs['webroot'] were an empty string that would evaluate to False as well, but I guess that's okay. If someone specifies an empty string they probably mean it.
| Assignee | ||
Comment 21•7 years ago
|
||
(In reply to Bob Clary [:bc:] from comment #16)
> Comment on attachment 8974581 [details] [diff] [review]
> Part 2: Allow checkpoints and perf_suites to be passed in to
> process_perf_data
>
> Review of attachment 8974581 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> r+, looks ok.
>
> ::: testing/awsy/awsy/process_perf_data.py
> @@ +36,3 @@
> > """
> > Updates CHECKPOINTS with memory report file fetched in data_path
> > :param checkpoint_files: list of files in data_path
>
> Document checkpoints?
Updated.
| Assignee | ||
Comment 22•7 years ago
|
||
(In reply to Bob Clary [:bc:] from comment #17)
> Comment on attachment 8974582 [details] [diff] [review]
> Part 3: Split out a base awsy test case
>
> Review of attachment 8974582 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> r+ with fixes for the imports.
>
> ::: testing/awsy/awsy/test_memory_usage.py
> @@ +5,2 @@
> > import os
> > import sys
>
> from marionette_driver.errors import JavascriptException,
> ScriptTimeoutException
>
> are still required in clear_preloaded_browser()
Oh right, I got a bit overzealous.
> @@ -26,1 @@
> > from awsy import process_perf_data, webservers
>
> webservers no longer used.
It's still used in test_memory_usage, but I'll remove it from awsy_test_case.
| Assignee | ||
Comment 23•7 years ago
|
||
(In reply to Bob Clary [:bc:] from comment #19)
> Comment on attachment 8974584 [details] [diff] [review]
> Part 5: Add base case AWSY test that just measures about:blank
>
> Review of attachment 8974584 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> r+ with comment addressed.
>
> ::: testing/awsy/awsy/test_base_memory_usage.py
> @@ +42,5 @@
> > +
> > + def perf_checkpoints(self):
> > + return CHECKPOINTS
> > +
> > + def iterations(self):
>
> I'm a little concerned about overriding this to return a fixed number but
> not also dealing with the self._iterations.
>
> Wouldn't it be better to just override self._iterations = 1 in setUp and
> leave this alone?
Sounds reasonable, I'll update.
| Assignee | ||
Comment 24•7 years ago
|
||
Thanks for the reviews Bob!
| Assignee | ||
Comment 25•7 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/c216f3f88f9b4e94346db7b1a4ad9c9b300370a7
Bug 1457243 - Part 1: Support zero values for awsy params in mach_commands. r=bc
https://hg.mozilla.org/integration/mozilla-inbound/rev/0629e4a05e5cf1f665957d909bcbcb0b98877d88
Bug 1457243 - Part 2: Allow checkpoints and perf_suites to be passed in to process_perf_data. r=bc
https://hg.mozilla.org/integration/mozilla-inbound/rev/9091f8ac9bbd4b9d9503d57f0cd149293fd0f0c2
Bug 1457243 - Part 3: Split out a base awsy test case. r=bc
https://hg.mozilla.org/integration/mozilla-inbound/rev/9b2f923280eb57dd4d6e51163b362cb7db728620
Bug 1457243 - Part 4: Support filtering on process names and limit process count. r=bc
https://hg.mozilla.org/integration/mozilla-inbound/rev/cbe6ab7db4f7aa15502f37004f0f94c724d6d6fe
Bug 1457243 - Part 5: Add base case AWSY test that just measures about:blank. r=bc
https://hg.mozilla.org/integration/mozilla-inbound/rev/fbf88f9bacbb5568ca28d94deaa604856a2dc336
Bug 1457243 - Part 6: Hook in the about:blank awsy test to automation. r=bc
| Assignee | ||
Comment 26•7 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/8af38d67ffb3efb94f619b1f5b00ccaa19609263
Bug 1457243 - Part 7: Followup - Setup base case testvars. r=me
| Assignee | ||
Comment 27•7 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/91f9e23430b3f41bcc6cd3647864d9856930561a
Bug 1457243 - Fix flake8. r=me, test-only DONTBUILD CLOSED TREE
Comment 28•7 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/c216f3f88f9b
https://hg.mozilla.org/mozilla-central/rev/0629e4a05e5c
https://hg.mozilla.org/mozilla-central/rev/9091f8ac9bbd
https://hg.mozilla.org/mozilla-central/rev/9b2f923280eb
https://hg.mozilla.org/mozilla-central/rev/cbe6ab7db4f7
https://hg.mozilla.org/mozilla-central/rev/fbf88f9bacbb
https://hg.mozilla.org/mozilla-central/rev/8af38d67ffb3
https://hg.mozilla.org/mozilla-central/rev/91f9e23430b3
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
status-firefox62:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla62
You need to log in
before you can comment on or make changes to this bug.
Description
•