| Index: cc/memory.md
|
| diff --git a/cc/memory.md b/cc/memory.md
|
| index 1bac0f56ee7c8cf9425686017dce76a9f73bc4e5..b00d705a317db63df1a13119a8c188c9d57adf4a 100644
|
| --- a/cc/memory.md
|
| +++ b/cc/memory.md
|
| @@ -1,125 +1 @@
|
| -# Memory Usage in CC
|
| -
|
| -This document gives an overview of memory usage in the CC component, as well as
|
| -information on how to analyze that memory.
|
| -
|
| -[TOC]
|
| -
|
| -## Types of Memory in Use
|
| -
|
| -CC uses a number of types of memory:
|
| -
|
| -1. Malloc Memory - Standard system memory used for all manner of objects in CC.
|
| -2. Discardable Memory - Memory allocated by the discardable memory system.
|
| - Designed to be freeable by the system at any time (under memory pressure).
|
| - In most cases, only pinned discardable memory should be considered to
|
| - have a cost; however, the implementation of discardable memory is platform
|
| - dependent, and on certain platforms unpinned memory can contribute to
|
| - memory pressure to some degree.
|
| -3. Shared Memory - Memory which is allocated by the Browser and can safely
|
| - be transferred between processes. This memory is allocated by the browser
|
| - but may count against a renderer process depending on who logically "owns"
|
| - the memory.
|
| -4. GPU Memory - Memory which is allocated on the GPU and typically does not
|
| - count against system memory. This mainly includes OpenGL objects.
|
| -
|
| -## Categories Of Memory
|
| -
|
| -Memory-infra tracing will grab dumps of CC memory in several categories.
|
| -
|
| -### CC Category
|
| -
|
| -The CC category contains resource allocations made by ResourceProvider. All
|
| -resource allocations are enumerated under cc/resource_memory. A subset of
|
| -resources are used as tile memory, and are also enumerated under cc/tile_memory.
|
| -For resources that appear in both cc/tile_memory and cc/resource_memory, the
|
| -size will be attributed to cc/tile_memory (effective_size of cc/resource_memory
|
| -will not include these resources).
|
| -
|
| -If the one-copy tile update path is in use, the cc category will also enumerate
|
| -staging resources used as intermediates when drawing tiles. These resources are
|
| -like tile_memory, in that they are shared with cc/resource_memory.
|
| -
|
| -Note that depending on the path being used, CC memory may be either shared
|
| -memory or GPU memory:
|
| -
|
| -Path | Tile Memory Type | Staging Memory Type
|
| --------------|-------------------------------------------
|
| -Bitmap | Shared Memory | N/A
|
| -One Copy | GPU Memory | Shared Memory
|
| -Zero Copy | GPU or Shared Memory | N/A
|
| -GPU | GPU Memory | N/A
|
| -
|
| -Note that these values can be determined from a memory-infra dump. For a given
|
| -resource, hover over the small green arrow next to it's "size". This will show
|
| -the other allocations that this resource is aliased with. If you see an
|
| -allocation in the GPU process, the memory is generally GPU memory. Otherwise,
|
| -the resource is typically Shared Memory.
|
| -
|
| -Tile and Staging memory managers are set up to evict any resource not used
|
| -within 1s.
|
| -
|
| -### GPU Category
|
| -
|
| -This category lists the memory allocations needed to support CC's GPU path.
|
| -Despite the name, the data in this category (within a Renderer process) is not
|
| -GPU memory but Shared Memory.
|
| -
|
| -Allocations tracked here include GL command buffer support allocations such as:
|
| -
|
| -1. Command Buffer Memory - memory used to send commands across the GL command
|
| - buffer. This is backed by Shared Memory.
|
| -2. Mapped Memory - memory used in certain image upload paths to share data
|
| - with the GPU process. This is backed by Shared Memory.
|
| -3. Transfer Buffer Memory - memory used to transfer data to the GPU - used in
|
| - different paths than mapped memory. Also backed by Shared Memory.
|
| -
|
| -### Discardable Category
|
| -
|
| -Cached images make use of Discardable memory. These allocations are managed by
|
| -Skia and a better summary of these allocations can likely be found in the Skia
|
| -category.
|
| -
|
| -### Malloc Category
|
| -
|
| -The malloc category shows a summary of all memory allocated through malloc.
|
| -
|
| -Currently the information here is not granular enough to be useful, and a
|
| -good project would be to track down and instrument any large pools of memory
|
| -using malloc.
|
| -
|
| -Some Skia caches also make use of malloc memory. For these allocations, a better
|
| -summary can be seen in the Skia category.
|
| -
|
| -### Skia Category
|
| -
|
| -The Skia category shows all resources used by the Skia rendering system. These
|
| -can be divided into a few subcategories. skia/gpu_resources/* includes all
|
| -resources using GPU memory. All other categories draw from either Shared or
|
| -malloc memory. To determine which type of memory a resource is using, hover
|
| -over the green arrow next to its size. This will show the other allocations
|
| -which the resource is aliased with.
|
| -
|
| -## Other Areas of Interest
|
| -
|
| -Many of the allocations under CC are aliased with memory in the Browser or GPU
|
| -process. When investigating CC memory it may be worth looking at the following
|
| -external categories:
|
| -
|
| -1. GPU Process / GPU Category - All GPU resources allocated by CC have a
|
| - counterpart in the GPU/GPU category. This includes GL Textures, buffers, and
|
| - other GPU backed objects such as Native GPU Memory Buffers.
|
| -2. Browser Process / GpuMemoryBuffer Category - Resources backed by Shared
|
| - Memory GpuMemoryBuffers are allocated by the browser and will be tracked
|
| - in this category.
|
| -3. Browser Process / SharedMemory Category - Resources backed by Bitmap and
|
| - Shared Memory GpuMemoryBuffer objects are allocated by the browser and will
|
| - also tracked in this category.
|
| -
|
| -## Memory TODOs
|
| -
|
| -The following areas have insufficient memory instrumentation.
|
| -
|
| -1. DisplayLists - DisplayLists can be quite large and are currently
|
| - un-instrumented. These use malloc memory and currently contribute to
|
| - malloc/allocated_objects/<unspecified>. [BUG](crbug.com/567465)
|
| +This document has moved to [//docs/memory-infra/probe-cc.md](/docs/memory-infra/probe-cc.md).
|
|
|