Hi,
The trial version for shared memory analysis is now available in dmprof landed at
https://codereview.chromium.org/16158009/. It may not work precisely (because of (A) described below). Please give it a try, and give me your feedback.
The usage is:
1) Run Chromium with DEEP_HEAP_PROFILE_PAGEFRAME=2 (or heapprof.deep.pageframe=2 for Android) and dump heap profiles.
2) Run dmprof for the dumped files like following:
$ dmprof json <target-first-dump> [other-first-dumps...]
For example,
dmprof json x.rel.08926.0001.heap x.rel.08895.0001.heap x.rel.08897.0001.heap x.rel.08975.0001.heap x.rel.08993.0001.heap ...
to analyze x.rel.08926.0001.heap.
Note that:
A) The benchmarking program MUST dumps heap profiles for ALL processes almost SIMULTANEOUSLY. Otherwise, the result might be broken. We may need to add some APIs as bulach@ did for the browser process in
http://crrev.com/202087.
B) Currently, there is only one rule in "l2" to breakdown by memory sharing. "unhooked-file-nonexec-others", "unhooked-file-nonexec-group" and "unhooked-file-nonexec". To write more rules, follow the description below .
----------
If the rule includes "sharedwith", it will be broken down by memory sharing. It should have "private and/or group and/or others". (Look at policy.l2.json.)
"private" means only the process itself, "group" means shared but only by chrome-related probed processes and "others" means shared with non-chrome processes. For example,
"sharedwith": "private"
"sharedwith": "others" (matches ONLY pages which are shared with non-chrome processes)
"sharedwith": "private,group" (matches pages which are "not shared with non-chrome processes")