Albert J. Wong | 2108fde | 2017-06-08 17:55:50 | [diff] [blame^] | 1 | # Memory |
| 2 | |
| 3 | Landing page for all things related to memory usage in Chromium. |
| 4 | |
| 5 | The goal is to keep an ever present set of links and references that will |
| 6 | help people what is actively happening in the memory space. Please keep |
| 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 | |
| 15 | Look at UMA for the Memory.\* UMAs. Confused at which to use? Start with these: |
| 16 | |
| 17 | |
| 18 | | name | description | Caveats | |
| 19 | |------|-------------|---------| |
| 20 | | Memory.\*.Committed | private, image, and file mapped memory | Windows only. Over penalizes Chrome for mapped images and files | |
| 21 | | Memory.Experimental.\*.<br />PrivateMemoryFootprint | New metric measuring private anonymous memory usage (swap or ram) by Chrome. | See Consistent Memory Metrics | |
| 22 | | --Memory.\*.Large2-- | Measures physical memory usage. | **DO NOT USE THIS METRIC**\* | |
| 23 | |
| 24 | \*Do **NOT** use `Memory.\*.Large2` as the `Large2` metrics only |
| 25 | count the physical ram used. This means the number varies based on the behavior |
| 26 | of applications other than Chrome making it near meaningless. Yes, they are |
| 27 | currently in the default finch trials. We're going to fix that. |
| 28 | |
| 29 | |
| 30 | ## How do developers communicate? |
| 31 | |
| 32 | Note, these channels are for developer coordination and NOT user support. If |
| 33 | you are a Chromium user experiencing a memory related problem, file a bug |
| 34 | instead. |
| 35 | |
| 36 | | name | description | |
| 37 | |------|-------------| |
| 38 | | [[email protected]]() | Discussion group for all things memory related. Post docs, discuss bugs, etc., here. | |
| 39 | | [email protected] | Google internal version of the above. Use sparingly. | |
| 40 | | https://chromiumdev.slack.com/messages/memory/ | Slack channel for real-time discussion with memory devs. Lots of C++ sadness too. | |
| 41 | | 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. | |
| 42 | | crbug [Stability=Memory](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Stability%3DMemory) label | Tracks mostly OOM crashes. | |
| 43 | |
| 44 | |
| 45 | ## I have a reproducible memory problem, what do I do? |
| 46 | |
| 47 | Yay! Please file a [memory |
| 48 | bug](https://bugs.chromium.org/p/chromium/issues/entry?template=Memory%20usage). |
| 49 | |
| 50 | If you are willing to do a bit more, please grab a memory infra trace and upload |
| 51 | that. Here are [instructions for MacOS](https://docs.google.com/document/d/15mBOu_uZbgP5bpdHZJXEnF9csSRq7phUWXnZcteVr0o/edit). |
| 52 | (TODO: Add instructions for easily grabbing a trace for all platforms.) |
| 53 | |
| 54 | |
| 55 | ## I'm a dev and I want to help. How do I get started? |
| 56 | |
| 57 | Great! First, sign up for the mailing lists above and check out the slack channel. |
| 58 | |
| 59 | Second, familiarize yourself with the following: |
| 60 | |
| 61 | | Topic | Description | |
| 62 | |-------|-------------| |
| 63 | | [Key Concepts in Chrome Memory](/memory/key_concepts.md) | Primer for memory terminology in Chrome. | |
| 64 | | [memory-infra](/memory-infra/README.md) | The primary tool used for inspecting allocations. | |
| 65 | |
| 66 | |
| 67 | ## What are people actively working on? |
| 68 | | Project | Description | |
| 69 | |---------|-------------| |
| 70 | | [Memory Coordinator](https://docs.google.com/document/d/1dkUXXmpJk7xBUeQM-olBpTHJ2MXamDgY_kjNrl9JXMs/edit#heading=h.swke19b7apg5) (including [Purge+Throttle/Suspend](https://docs.google.com/document/d/1EgLimgxWK5DGhptnNVbEGSvVn6Q609ZJaBkLjEPRJvI/edit)) | Centralized policy and coordination of all memory components in Chrome | |
| 71 | | [Memory-Infra](/memory-infra/README.md) | Tooling and infrastructure for Memory | |
| 72 | | [System health benchmarks](https://docs.google.com/document/d/1pEeCnkbtrbsK3uuPA-ftbg4kzM4Bk7a2A9rhRYklmF8/edit?usp=sharing) | Automated tests based on telemetry | |
| 73 | |
| 74 | |
| 75 | ## Key knowledge areas and contacts |
| 76 | | Knowledge Area | Contact points | |
| 77 | |----------------|----------------| |
| 78 | | Chrome on Android | mariahkomenko, dskiba, ssid | |
| 79 | | Browser Process | mariahkomenko, dskiba, ssid | |
| 80 | | GPU/cc | ericrk | |
| 81 | | Memory metrics | erikchen, primano, ajwong, wez | |
| 82 | | Native Heap Profiling | primiano, dskiba, ajwong | |
| 83 | | Net Stack | mmenke, rsleevi, xunjieli | |
| 84 | | Renderer Process | haraken, tasak, hajimehoshi, keishi, hiroshige | |
| 85 | | V8 | hpayer, ulan, verwaest, mlippautz | |
| 86 | |
| 87 | |
| 88 | ## Other docs |
| 89 | * [Memory Charter](https://docs.google.com/document/d/1yATy7MBclHycCUR0Jji4eczHT_ejp5lmVZOhNwNQwmM/edit#) |
| 90 | |