Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: cc/memory.md

Issue 2494063002: Move memory docs to docs/memory-infra (Closed)
Patch Set: rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/allocator/README.md ('k') | components/tracing/docs/adding_memory_infra_tracing.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Memory Usage in CC 1 This document has moved to [//docs/memory-infra/probe-cc.md](/docs/memory-infra/ probe-cc.md).
2
3 This document gives an overview of memory usage in the CC component, as well as
4 information on how to analyze that memory.
5
6 [TOC]
7
8 ## Types of Memory in Use
9
10 CC uses a number of types of memory:
11
12 1. Malloc Memory - Standard system memory used for all manner of objects in CC.
13 2. Discardable Memory - Memory allocated by the discardable memory system.
14 Designed to be freeable by the system at any time (under memory pressure).
15 In most cases, only pinned discardable memory should be considered to
16 have a cost; however, the implementation of discardable memory is platform
17 dependent, and on certain platforms unpinned memory can contribute to
18 memory pressure to some degree.
19 3. Shared Memory - Memory which is allocated by the Browser and can safely
20 be transferred between processes. This memory is allocated by the browser
21 but may count against a renderer process depending on who logically "owns"
22 the memory.
23 4. GPU Memory - Memory which is allocated on the GPU and typically does not
24 count against system memory. This mainly includes OpenGL objects.
25
26 ## Categories Of Memory
27
28 Memory-infra tracing will grab dumps of CC memory in several categories.
29
30 ### CC Category
31
32 The CC category contains resource allocations made by ResourceProvider. All
33 resource allocations are enumerated under cc/resource_memory. A subset of
34 resources are used as tile memory, and are also enumerated under cc/tile_memory.
35 For resources that appear in both cc/tile_memory and cc/resource_memory, the
36 size will be attributed to cc/tile_memory (effective_size of cc/resource_memory
37 will not include these resources).
38
39 If the one-copy tile update path is in use, the cc category will also enumerate
40 staging resources used as intermediates when drawing tiles. These resources are
41 like tile_memory, in that they are shared with cc/resource_memory.
42
43 Note that depending on the path being used, CC memory may be either shared
44 memory or GPU memory:
45
46 Path | Tile Memory Type | Staging Memory Type
47 -------------|-------------------------------------------
48 Bitmap | Shared Memory | N/A
49 One Copy | GPU Memory | Shared Memory
50 Zero Copy | GPU or Shared Memory | N/A
51 GPU | GPU Memory | N/A
52
53 Note that these values can be determined from a memory-infra dump. For a given
54 resource, hover over the small green arrow next to it's "size". This will show
55 the other allocations that this resource is aliased with. If you see an
56 allocation in the GPU process, the memory is generally GPU memory. Otherwise,
57 the resource is typically Shared Memory.
58
59 Tile and Staging memory managers are set up to evict any resource not used
60 within 1s.
61
62 ### GPU Category
63
64 This category lists the memory allocations needed to support CC's GPU path.
65 Despite the name, the data in this category (within a Renderer process) is not
66 GPU memory but Shared Memory.
67
68 Allocations tracked here include GL command buffer support allocations such as:
69
70 1. Command Buffer Memory - memory used to send commands across the GL command
71 buffer. This is backed by Shared Memory.
72 2. Mapped Memory - memory used in certain image upload paths to share data
73 with the GPU process. This is backed by Shared Memory.
74 3. Transfer Buffer Memory - memory used to transfer data to the GPU - used in
75 different paths than mapped memory. Also backed by Shared Memory.
76
77 ### Discardable Category
78
79 Cached images make use of Discardable memory. These allocations are managed by
80 Skia and a better summary of these allocations can likely be found in the Skia
81 category.
82
83 ### Malloc Category
84
85 The malloc category shows a summary of all memory allocated through malloc.
86
87 Currently the information here is not granular enough to be useful, and a
88 good project would be to track down and instrument any large pools of memory
89 using malloc.
90
91 Some Skia caches also make use of malloc memory. For these allocations, a better
92 summary can be seen in the Skia category.
93
94 ### Skia Category
95
96 The Skia category shows all resources used by the Skia rendering system. These
97 can be divided into a few subcategories. skia/gpu_resources/* includes all
98 resources using GPU memory. All other categories draw from either Shared or
99 malloc memory. To determine which type of memory a resource is using, hover
100 over the green arrow next to its size. This will show the other allocations
101 which the resource is aliased with.
102
103 ## Other Areas of Interest
104
105 Many of the allocations under CC are aliased with memory in the Browser or GPU
106 process. When investigating CC memory it may be worth looking at the following
107 external categories:
108
109 1. GPU Process / GPU Category - All GPU resources allocated by CC have a
110 counterpart in the GPU/GPU category. This includes GL Textures, buffers, and
111 other GPU backed objects such as Native GPU Memory Buffers.
112 2. Browser Process / GpuMemoryBuffer Category - Resources backed by Shared
113 Memory GpuMemoryBuffers are allocated by the browser and will be tracked
114 in this category.
115 3. Browser Process / SharedMemory Category - Resources backed by Bitmap and
116 Shared Memory GpuMemoryBuffer objects are allocated by the browser and will
117 also tracked in this category.
118
119 ## Memory TODOs
120
121 The following areas have insufficient memory instrumentation.
122
123 1. DisplayLists - DisplayLists can be quite large and are currently
124 un-instrumented. These use malloc memory and currently contribute to
125 malloc/allocated_objects/<unspecified>. [BUG](crbug.com/567465)
OLDNEW
« no previous file with comments | « base/allocator/README.md ('k') | components/tracing/docs/adding_memory_infra_tracing.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698