Index: tools/deep_memory_profiler/README.policy |
diff --git a/tools/deep_memory_profiler/README.policy b/tools/deep_memory_profiler/README.policy |
new file mode 100644 |
index 0000000000000000000000000000000000000000..48ad9579cc3d1164183a1716fe48e70d5cb6da2c |
--- /dev/null |
+++ b/tools/deep_memory_profiler/README.policy |
@@ -0,0 +1,56 @@ |
+Policy files contains a classification policy for dmprof.py. |
+ |
+Each line indicates a group to be classified and conditions for classifying |
+in the following format. |
+ Format: <group-name> <region-type> <pattern> |
+ |
+<group-name> is a name for the group to be classified. Same names can appear |
+in the same policy file multiple times. <region-type> represents a type of |
+the memory region. It's one of {malloc, mmap, default, optional}. <pattern> |
+is a Python-style regular expression to match with calling stack frames. |
+ |
+For each memory chunks allocated by malloc, its calling stack frame of malloc |
+is compared with these classification policies whose <region-type> is 'malloc' |
+from the top. If <pattern> of the policy matches the frame, the memory chunk |
+is classified into <group-name>. The same way for 'mmap'. |
+ |
+Policy lines whose <region-type>s are 'optional' and 'default' are used by |
+dmprof.py internally. 'optional' policies can be disabled by removing or |
+commenting-out. |
+ |
+ |
+Guidelines to write a new policy. |
+ |
+Better policies would classify memory on a single layer, or simple combination |
+of layers. For example, |
+- Large-level components (V8, WebKit, ...) |
+- Mid-level components (Font, FileAPI, ...) |
+- Low-level libraries (StringImpl, HashTable, ...) |
+- Mid-level libraries (SharedBuf, XHR, ...) |
+ |
+For example of combinations, |
+- How about SharedBuf in Font API v.s. other APIs? |
+- How about Strings in IndexedDB v.s. File APIs? |
+ |
+ |
+Deprecated policies for references. |
+ |
+total-vm optional optional |
+anonymous-vm optional optional |
+filemapped-vm optional optional |
+other-vm optional optional |
+vm-profiler optional optional |
+vm-total optional optional |
+mmap-v8-heap-new mmap .*v8::.*::ReserveInitialChunk.* |
+mmap-v8-heap-coderange mmap .*v8::.*::CodeRange::Setup.* |
+mmap-v8-heap-old-evacuate mmap .*v8::.*::OldSpace::.* v8::internal::ScavengingVisitor::EvacuateObject.* |
+mmap-v8-heap-old mmap .*v8::.*::OldSpace::.* |
+mmap-v8-heap-largeobj mmap .*v8::.*::LargeObjectChunk::New.* |
+mmap-v8-heap-other mmap .*VirtualMemory.* |
+mmap-v8-heap-other mmap .*v8::internal::OS::Allocate.* |
+mmap-v8-nonheap mmap .*v8::.* |
+mmap-webkit mmap .*(WTF::|WebCore::|WebKit::).* |
+mmap-sqlite mmap .*sqlite3MemMalloc.* |
+mmap-pl-arena mmap .*PL_ArenaAllocate.* |
+mmap-sk mmap .*sk_malloc_flags.* |
+mmap-total-record-vm default default |