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 |