Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 1 | # Memory |
| 2 | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 3 | Landing page for all things memory-related in Chromium. |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 4 | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 5 | The goal is to keep an up-to-date set of links and references that will |
| 6 | help people understand what is actively happening in the memory space. Please keep |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 7 | this landing page short and action oriented. |
| 8 | |
| 9 | That being said, please also send CL with update and changes. This should |
| 10 | reflect current active status, and it's easier to do that if everyone helps |
| 11 | maintain it. :) |
| 12 | |
| 13 | ## How is chrome's memory usage doing in the world? |
| 14 | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 15 | Look at the UMAs **Memory.{Total,Renderer,Browser,Gpu,Extension}.PrivateMemoryFootprint**. |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 16 | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 17 | These metrics are known to lack sufficient context. e.g. How many renderers are open? What site is a renderer hosting? How long has the browser been running? |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 18 | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 19 | Some of these graphs are now available at [go/mem-ukm](http://go/mem-ukm). |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 20 | |
| 21 | |
| 22 | ## How do developers communicate? |
| 23 | |
| 24 | Note, these channels are for developer coordination and NOT user support. If |
| 25 | you are a Chromium user experiencing a memory related problem, file a bug |
| 26 | instead. |
| 27 | |
| 28 | | name | description | |
| 29 | |------|-------------| |
| 30 | | [memory-dev@chromium.org]() | Discussion group for all things memory related. Post docs, discuss bugs, etc., here. | |
| 31 | | chrome-memory@google.com | Google internal version of the above. Use sparingly. | |
| 32 | | https://chromiumdev.slack.com/messages/memory/ | Slack channel for real-time discussion with memory devs. Lots of C++ sadness too. | |
| 33 | | crbug [Performance=Memory](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Performance%3DMemory) label | Bucket with auto-filed and user-filed bugs. | |
| 34 | | crbug [Stability=Memory](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Stability%3DMemory) label | Tracks mostly OOM crashes. | |
| 35 | |
| 36 | |
| 37 | ## I have a reproducible memory problem, what do I do? |
| 38 | |
| 39 | Yay! Please file a [memory |
| 40 | bug](https://bugs.chromium.org/p/chromium/issues/entry?template=Memory%20usage). |
| 41 | |
| 42 | If you are willing to do a bit more, please grab a memory infra trace and upload |
| 43 | that. Here are [instructions for MacOS](https://docs.google.com/document/d/15mBOu_uZbgP5bpdHZJXEnF9csSRq7phUWXnZcteVr0o/edit). |
| 44 | (TODO: Add instructions for easily grabbing a trace for all platforms.) |
| 45 | |
| 46 | |
| 47 | ## I'm a dev and I want to help. How do I get started? |
| 48 | |
| 49 | Great! First, sign up for the mailing lists above and check out the slack channel. |
| 50 | |
| 51 | Second, familiarize yourself with the following: |
| 52 | |
| 53 | | Topic | Description | |
| 54 | |-------|-------------| |
Primiano Tucci | fb7942c | 2017-06-26 16:06:19 | [diff] [blame] | 55 | | [Key Concepts in Chrome Memory](/docs/memory/key_concepts.md) | Primer for memory terminology in Chrome. | |
| 56 | | [memory-infra](/docs/memory-infra/README.md) | The primary tool used for inspecting allocations. | |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 57 | |
| 58 | |
| 59 | ## What are people actively working on? |
| 60 | | Project | Description | |
| 61 | |---------|-------------| |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 62 | | [Purge+Throttle/Suspend](https://docs.google.com/document/d/1EgLimgxWK5DGhptnNVbEGSvVn6Q609ZJaBkLjEPRJvI/edit) | Centralized policy and coordination of all memory components in Chrome | |
Primiano Tucci | fb7942c | 2017-06-26 16:06:19 | [diff] [blame] | 63 | | [Memory-Infra](/docs/memory-infra/README.md) | Tooling and infrastructure for Memory | |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 64 | | [System health benchmarks](https://docs.google.com/document/d/1pEeCnkbtrbsK3uuPA-ftbg4kzM4Bk7a2A9rhRYklmF8/edit?usp=sharing) | Automated tests based on telemetry | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 65 | | [Out of Process Heap Profiling](https://docs.google.com/document/d/1zKNGByeouYz9E719J8dmKNepLLanCNUq310gbzjiHOg/edit#heading=h.aabxwucn5hhp) | Collect heap dumps from the wild | |
| 66 | | [Always on Document Leak Detector](https://bugs.chromium.org/p/chromium/issues/detail?id=757374) | UMA-based sanity check that DOM objects are not leaking in the wild. | |
| 67 | | [Real-world leak detector](https://bugs.chromium.org/p/chromium/issues/detail?id=763280) | Runs blink leak detector on top-sites [web-page-replay] on waterfall. |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 68 | |
| 69 | |
| 70 | ## Key knowledge areas and contacts |
| 71 | | Knowledge Area | Contact points | |
| 72 | |----------------|----------------| |
Maria Khomenko | 8d89071 | 2017-09-11 21:08:12 | [diff] [blame] | 73 | | Chrome on Android | mariakhomenko, dskiba, ssid | |
| 74 | | Browser Process | mariakhomenko, dskiba, ssid | |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 75 | | GPU/cc | ericrk | |
| 76 | | Memory metrics | erikchen, primano, ajwong, wez | |
| 77 | | Native Heap Profiling | primiano, dskiba, ajwong | |
| 78 | | Net Stack | mmenke, rsleevi, xunjieli | |
| 79 | | Renderer Process | haraken, tasak, hajimehoshi, keishi, hiroshige | |
| 80 | | V8 | hpayer, ulan, verwaest, mlippautz | |
Erik Chen | 34c0366e | 2017-11-29 15:47:52 | [diff] [blame] | 81 | | Out of Process Heap Profiling | erikchen, ajwong, brettw, etienneb |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 82 | |
| 83 | |
| 84 | ## Other docs |
Albert J. Wong | 593bb862 | 2017-06-19 23:00:20 | [diff] [blame] | 85 | * [Why we work on memory](https://docs.google.com/document/d/1jhERqimO-LtuplzQzbBv1vK7SVOh63AMf2irJI2LOqU/edit) |
| 86 | * [TOK/LON memory-dev@ meeting notes](https://docs.google.com/document/d/1tCTw9lnjs85t8GFiiyae2hbu6lrz8kysFCgMCKUvcXo/edit) |
| 87 | * [Memory convergence 3 (in Mountain View, 2017 May)](https://docs.google.com/document/d/1FBIqBGIa0DSaFsh-QjmVvoC82pGuOgiQDIhc8-vzXbQ/edit) |
| 88 | * [TRIM convergence 2 (in Mountain View, 2016 Nov)](https://docs.google.com/document/d/17Kef7UxjR6VW_ehVbsc-DI0IU7TQk-2C56JSbzbPuhA/edit) |
| 89 | * [TRIM convergence 1 (in Munich, 2016 Apr)](https://docs.google.com/document/d/1PGcM6iVBp0OYh3m8xGQhOgkQK0obQy8YWwoefP9NZCA/edit#) |
Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame] | 90 | |