dmprof policy l2 question

84 views
Skip to first unread message

Lee JeongYeon

unread,
Jul 21, 2014, 9:40:24 PM7/21/14
to dmp...@chromium.org

Hi,

I am trying to use dmprof to get the specific whole components  memory blocks of chrome on Linux. 

I got the memory dumps while chrome is running. Below is the getting the dump file sequence.

1. Build Chromium use  GYP_DEFINES='profiling=1 profiling_full_stack_frames=1 linux_dump_symbols=1'

2. Run Chromium use HEAPPROFILE=$HOME/prof/prefix HEAP_PROFILE_TIME_INTERVAL=10 HEAP_PROFILE_MMAP=1 DEEP_HEAP_PROFILE=1 out/Release/chrome --no-sandbox

3. Generate json file use tools/deep_memory_profiler/dmprof json /path/to/first-one-of-the-dumps.heap > FOO.json
4. Make Graph File use tools/deep_memory_profiler/graph.py FOO.json $POLICY > graph.html
(I added the $POLICY is l2.)

I get the graph file. But i have some strange things. I only show the Policy p0's components.
(tc-unused , unhooked-other, unhooked-file-exec, unhooked-anonymous.. )
When I show the  l2 field of the html file. I can't show the the policy l2 graphs specific components.. 

mmap-v8-heap-newspace
 
JavaScript new (nursery) heap for younger objects.
 mmap-v8-heap-coderange Code produced at runtime including JIT-compiled JavaScript code.
 mmap-v8-heap-pagedspace JavaScript old heap and many other spaces.
 mmap-v8-other Other regions mmap'ed by V8.
 mmap-catch-all Any other mmap'ed regions.
 tc-webcore-fontcache Blocks used for FontCache.
 tc-skia Blocks used for Skia.
 tc-renderobject Blocks used for RenderObject.
 tc-renderstyle Blocks used for RenderStyle.
 tc-webcore-sharedbuf Blocks used for WebCore's SharedBuffer.
 tc-webcore-XHRcreate Blocks used for WebCore's XMLHttpRequest (create).
 tc-webcore-XHRreceived Blocks used for WebCore's XMLHttpRequest (received). 
 tc-webcore-docwriter-add Blocks used for WebCore's DocumentWriter.
 tc-webcore-node-and-doc Blocks used for WebCore's HTMLElement, Text, and other Node objects.
 tc-webcore-node-factory Blocks created by WebCore's HTML*Factory.
 tc-webcore-element-wrapper Blocks created by WebCore's createHTML*ElementWrapper.
 tc-webcore-stylepropertyset Blocks used for WebCore's StylePropertySet (CSS).
 tc-webcore-style-createsheet Blocks created by WebCore's StyleElement::createSheet.
 tc-webcore-cachedresource Blocks used for WebCore's CachedResource.
 tc-webcore-script-execute Blocks created by WebCore's ScriptElement::execute.
 tc-webcore-events-related Blocks related to WebCore's events (EventListener and so on)
 tc-webcore-document-write Blocks created by WebCore's Document::write.
 tc-webcore-node-create-renderer Blocks created by WebCore's Node::createRendererIfNeeded.
 tc-webcore-render-catch-all Any other blocks related to WebCore's Render.
 tc-webcore-setInnerHTML-except-node Blocks created by setInnerHTML.
 tc-wtf-StringImpl-user-catch-all Blocks used for WTF::StringImpl.
 tc-wtf-HashTable-user-catch-all Blocks used for WTF::HashTable.
 tc-webcore-everything-create Blocks created by WebCore's any create() method.
 tc-webkit-from-v8-catch-all Blocks created by V8 via WebKit functions.
 tc-webkit-catch-all Any other blocks created by WebKit.
 tc-v8-catch-all Any other blocks created in V8.
 tc-toplevel-string All std::string objects created at the top-level.
 tc-catch-all Any other blocks by malloc().


 How can i check the policy l2's specific components memory usage?
 I attached the result html file. (please check the google.html. :-) )

Thanks!
google.html

Dai Mikurube

unread,
Jul 22, 2014, 12:24:33 AM7/22/14
to Lee JeongYeon, dmprof
Hi Lee,

Thanks for trying the tool. Hmm, it looks like almost no information is available -- only /proc/.../maps was available. Something is wrong.

Could you upload your
*.maps
*.heap
*.buckets
*.symmap/
somewhere, and share them with me?


--
You received this message because you are subscribed to the Google Groups "dmprof" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dmprof+un...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/dmprof/27d0a9d2-3de1-4d12-a09f-22823ac3bc4d%40chromium.org.



--
Dai MIKURUBE

jungj...@samsung.com

unread,
Jul 22, 2014, 3:48:06 AM7/22/14
to dmp...@chromium.org

Hi,

I am not sure but, it seems like missing gyp configuration. so could you try it again like below?

GYP_DEFINES='profiling=1 profiling_full_stack_frames=1 linux_dump_symbols=1 blink_disable_partition_allocator=1' build/gyp_chromium
ninja -C out/Release content_shell chrome chrome_sandbox
HEAPPROFILE=$HOME/<YOUR_PATH> HEAP_PROFILE_TIME_INTERVAL=20 HEAP_PROFILE_MMAP=1 DEEP_HEAP_PROFILE=1 out/Release/chrome --no-sandbox
./tools/deep_memory_profiler/dmprof json YOUR_FIRST_HEAP_FILE > RESULT.json
./tools/deep_memory_profiler/graph.py RESULT.json > RESULT.html

Thanks.

2014년 7월 22일 화요일 오전 10시 40분 24초 UTC+9, Lee JeongYeon 님의 말:

Lee JeongYeon

unread,
Jul 29, 2014, 12:55:33 AM7/29/14
to dmp...@chromium.org
Hi thanks! I can get more detailed graph.
I attached the html file. (also some *.buckets, *.heap, *.maps file too.)

And I have a one more question, I think almost tc-webcore related field is 0. 
(tc-renderobject and tc-renderstyle field is too. )

how can i getting this information? 
thanks.

02637.html
prof.02637.0001.buckets
prof.02637.0001.heap
prof.02637.0002.buckets
prof.02637.0002.heap
prof.02637.0003.buckets
prof.02637.0003.heap
prof.02637.maps

WenSheng He

unread,
Jul 29, 2014, 1:26:44 AM7/29/14
to dmp...@chromium.org
Maybe you analyzed the Browser Process not Render Process?

在 2014年7月29日星期二UTC+8下午12时55分33秒,Lee JeongYeon写道:

Dai Mikurube

unread,
Jul 29, 2014, 1:29:39 AM7/29/14
to Lee JeongYeon, dmprof
Thanks! Possible reasons I thought are:

1) You analyzed a browser process or a GPU process, not a renderer process.
2) You forgot 'blink_disable_partition_allocator=1' in gyp options suggested by jungjik.lee.


--
You received this message because you are subscribed to the Google Groups "dmprof" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dmprof+un...@chromium.org.
Message has been deleted

Lee JeongYeon

unread,
Jul 30, 2014, 1:56:32 AM7/30/14
to dmp...@chromium.org
Hi? 
The below is whole my dumping sequence for getting the browser and render process dumping graph.
I think I can get the render process dumping information  when the executing out/Release/chrome --no-sandbox .
And even if when I added the --single-process option, I can't get the tc-webcore related field too (it's the field of policy l2.)

I build the chrome on linux. 
GYP_DEFINES='profiling=1 profiling_full_stack_frames=1 linux_dump_symbols=1 blink_disable_partition_allocator=1' build/gyp_chromium
ninja -C out/Release content_shell chrome chrome_sandbox
HEAPPROFILE=$HOME/<YOUR_PATH> HEAP_PROFILE_TIME_INTERVAL=20 HEAP_PROFILE_MMAP=1 DEEP_HEAP_PROFILE=1 out/Release/chrome --no-sandbox
./tools/deep_memory_profiler/dmprof json YOUR_FIRST_HEAP_FILE > RESULT.json
./tools/deep_memory_profiler/graph.py RESULT.json > RESULT.html


Is there any wrong things for getting the render process dumping information?
Thanks. 

Dai Mikurube

unread,
Jul 30, 2014, 4:58:47 AM7/30/14
to Lee JeongYeon, dmprof
I thought to try locally with your data files, but I couldn't because your files don't include *.symmap/. The directory should be generated after running dmprof.

Could you upload it? I'd recommend to use some web site/service to share because it's not very good to e-mail large files to the mailing list.


--
You received this message because you are subscribed to the Google Groups "dmprof" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dmprof+un...@chromium.org.
Reply all
Reply to author
Forward
0 new messages