| OLD | NEW |
| 1 # Memory Benchmarks | 1 # Memory Benchmarks |
| 2 | 2 |
| 3 This document describes benchmarks available to track Chrome's and | 3 This document describes benchmarks available to track Chrome's and |
| 4 WebView's memory usage, where they live, what they measure, how to run them, | 4 WebView's memory usage, where they live, what they measure, how to run them, |
| 5 and on how to diagnose regressions. | 5 and on how to diagnose regressions. |
| 6 | 6 |
| 7 [TOC] | 7 [TOC] |
| 8 | 8 |
| 9 ## Glossary | 9 ## Glossary |
| 10 | 10 |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 * **kind:** The kind of memory being reported. For metrics reported by | 174 * **kind:** The kind of memory being reported. For metrics reported by |
| 175 Chrome this usually is `effective_size` (others are `locked_size` | 175 Chrome this usually is `effective_size` (others are `locked_size` |
| 176 and `allocated_objects_size`); for metrics by the OS this usually is | 176 and `allocated_objects_size`); for metrics by the OS this usually is |
| 177 `proportional_resident_size` (others are `peak_resident_size` and | 177 `proportional_resident_size` (others are `peak_resident_size` and |
| 178 `private_dirty_size`). | 178 `private_dirty_size`). |
| 179 | 179 |
| 180 [memory-infra]: /memory-infra/README.md | 180 [memory-infra]: /memory-infra/README.md |
| 181 | 181 |
| 182 ## Appendix | 182 ## Appendix |
| 183 | 183 |
| 184 ### Other benchmarks | 184 There are a few other benchmarks maintained by the memory-infra team. |
| 185 These also use the same set of metrics as system health, but have differences |
| 186 on the kind of stories that they run. |
| 185 | 187 |
| 186 Other benchmarks maintained by the memory-infra team are: | 188 ### memory.top_10_mobile |
| 189 |
| 190 The *top-10-mobile* benchmarks are in the process of being deprecated |
| 191 in favor of system health benchmarks. This process, however, hasn't been |
| 192 finalized and currently they are still the reference benchmark used for |
| 193 decision making in the Android release process. Therefore, **it is important |
| 194 to diagnose and fix regressions caught by these benchmarks**. |
| 195 |
| 196 * [memory.top_10_mobile][memory_py] - Cycle between: |
| 197 |
| 198 - load a page on Chrome, wait for it to load, [force garbage collection |
| 199 and measure memory][measure]; |
| 200 - push Chrome to the background, force garbage collection and measure |
| 201 memory again. |
| 202 |
| 203 Repeat for each of 10 pages *without closing the browser*. |
| 204 |
| 205 Close the browser, re-open and repeat the full page set a total of 5 times. |
| 206 |
| 207 Story groups are either `foreground` or `background` depending on the state |
| 208 of the browser at the time of measurement. |
| 209 |
| 210 * [memory.top_10_mobile_stress][memory_py] - same as above, but keeps a single |
| 211 instance of the browser open for the whole duration of the test and |
| 212 *does not* force any garbage collection. |
| 213 |
| 214 The main difference to watch out between these and system health benchmarks is |
| 215 that, since a single browser instance is kept open and shared by many |
| 216 individual stories, they are not independent of each other. In particular, **do |
| 217 not use the `--story-filter` argument when trying to reproduce regressions** |
| 218 on these benchmarks, as doing so will affect the results. |
| 219 |
| 220 [measure]: https://github.com/catapult-project/catapult/blob/master/telemetry/te
lemetry/internal/actions/action_runner.py#L133 |
| 221 |
| 222 ### Dual browser benchmarks |
| 223 |
| 224 Dual browser benchmarks are intended to assess the memory implications of |
| 225 shared resources between Chrome and WebView. |
| 187 | 226 |
| 188 * [memory.dual_browser_test][memory_py] - cycle between doing Google searches | 227 * [memory.dual_browser_test][memory_py] - cycle between doing Google searches |
| 189 on a WebView-based browser (a stand-in for the Google Search app) and | 228 on a WebView-based browser (a stand-in for the Google Search app) and |
| 190 loading pages on Chrome. Runs on Android devices only. | 229 loading pages on Chrome. Runs on Android devices only. |
| 191 | 230 |
| 192 Story groups are either `on_chrome` or `on_webview`, indicating the browser | 231 Story groups are either `on_chrome` or `on_webview`, indicating the browser |
| 193 in foreground at the moment when the memory measurement was made. | 232 in foreground at the moment when the memory measurement was made. |
| 194 | 233 |
| 195 * [memory.long_running_dual_browser_test][memory_py] - same as above, but the | 234 * [memory.long_running_dual_browser_test][memory_py] - same as above, but the |
| 196 test is run for 60 iterations keeping both browsers alive for the whole | 235 test is run for 60 iterations keeping both browsers alive for the whole |
| 197 duration of the test and without forcing garbage collection. Intended as a | 236 duration of the test and without forcing garbage collection. Intended as a |
| 198 last-resort net to catch memory leaks not apparent on shorter tests. | 237 last-resort net to catch memory leaks not apparent on shorter tests. |
| 199 | 238 |
| 200 * [memory.top_10_mobile][memory_py] - cycle between loading a page on Chrome, | |
| 201 pushing the browser to the background, and then back to the foreground. | |
| 202 *(To be deprecated in favor of system_health.memory_mobile.)* | |
| 203 | |
| 204 Story groups are either `foreground` or `background` indicating the state | |
| 205 of the browser at the time of measurement. | |
| 206 | |
| 207 * [memory.top_10_mobile_stress][memory_py] - same as above, but keeps a single | |
| 208 instance of the browser open for 5 repetitions. *(To be deprecated.)* | |
| 209 | |
| 210 [memory_py]: https://chromium.googlesource.com/chromium/src/+/master/tools/perf/
benchmarks/memory.py | 239 [memory_py]: https://chromium.googlesource.com/chromium/src/+/master/tools/perf/
benchmarks/memory.py |
| OLD | NEW |