Hi Alon and Jukka,

it turns out I just had to use an up-to-date memoryprofiler.js

thanks,
Marco

On Mon, Aug 1, 2016 at 11:17 AM, juj j <[email protected]> wrote:

> This tool should definitely still work, only the --memoryprofiler linker
> flag should be needed, after which the profiler tool should appear on the
> page automatically at page startup. Are you seeing some issues?
>
> One issue I've seen is that sometimes customized page style CSS layouts
> have caused the content of the memoryprofiler div appear outside the
> visible screen, and e.g. with overflow:hidden; style on the page, user
> wouldn't be able to scroll to it. If the layout of the memory profiler
> looks odd, try clearing CSS styles on the output page.
>
> 2016-07-28 23:10 GMT+03:00 Alon Zakai <[email protected]>:
>
>> Jukka would know for sure, but it should, there is a test in the suite,
>> runnable with
>>
>> ./tests/runner.py interactive.test_cpuprofiler_memoryprofiler
>>
>> that seems to pass. (Although, maybe some details have changed since
>> these posts, so maybe looking in the test code can help.)
>>
>> On Thu, Jul 28, 2016 at 5:44 AM, Marco Trivellato <[email protected]>
>> wrote:
>>
>>> Any idea if this profiler still works with recent versions of Emscripten
>>> ?
>>>
>>> On Tuesday, November 12, 2013 at 4:28:35 PM UTC, jj wrote:
>>>>
>>>> Some updates to the memory profiler: (download from
>>>> https://dl.dropboxusercontent.com/u/40949268/emcc/memoryprofiler/memoryprofiler.js
>>>> )
>>>>
>>>>  - The profiler will now also print the amount of memory consumed by
>>>> audio clips you have loaded to the OpenAL audio backend, which are stored
>>>> outside the Emscripten HEAP.
>>>>  - Added a color legend, thanks Floh for the suggestion :)
>>>>  - Added a mechanism for tracking currently allocated pointers by
>>>> callstack. You can use this to detect running memory leaks or taking a
>>>> delta of allocations between two times as follows:
>>>>      - tick the checkbox "Print allocation statistics by callstack to
>>>> html log" at time A.
>>>>      - run the page for a while.
>>>>      - untick the same checkbox at time B.
>>>>      - the log at the end of the page will show all pointers that were
>>>> allocated between times A to B and are still alive, grouped by callstack.
>>>>
>>>> See a running demo at
>>>> https://dl.dropboxusercontent.com/u/40949268/emcc/memoryprofiler/Geometry_d.html
>>>> , although that might not be the best example, since it does very few
>>>> allocations and does not leak.
>>>>
>>>> Known limitations:
>>>>   - If you used a custom <script> tag to preload the VFS, the profiler
>>>> will show the space taken up by the VFS in green, not orange, i.e. the
>>>> profiler will not understand that it was allocated by the VFS.
>>>>   - Detailed memory tracking is not available if compiled under asm.js.
>>>> This is because it is not possible to inject custom replacements to
>>>> malloc() and free() after they were compiled to asm.js.
>>>>   - If you compiled with the --no-heap-copy linker flag, the VFS will
>>>> not be seen by the profiler at all. Use e.g. Firefox about:memory tab to
>>>> see the whole browser memory consumption.
>>>>   - Call stack demangling with the allocated pointer logging gets the
>>>> symbols confused at times, only partially demanling some of the names.
>>>>
>>>> Hope you find some use for it,
>>>>    Jukka
>>>>
>>>>
>>>> 2013/10/7 wolfviking0 <[email protected]>
>>>>
>>>> Hi JJ,
>>>>>
>>>>> Your last version is working well for me on WebKit.
>>>>>
>>>>> Thanks.
>>>>>
>>>>> PS: May be just one suggestion, add the color for the legend will be
>>>>> nice (not just text description).
>>>>>
>>>>>
>>>>>
>>>>> <https://lh5.googleusercontent.com/-5743sFCtIgo/UlJcj_xnmPI/AAAAAAAA-wM/OguKr7235FA/s1600/Capture+d%E2%80%99e%CC%81cran+2013-10-07+a%CC%80+08.57.49.png>
>>>>>
>>>>>
>>>>>
>>>>> Le jeudi 26 septembre 2013 23:28:22 UTC+2, jj a écrit :
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I got caught by the season flu, and I thought I'd do something fun
>>>>>> for a change, so here goes.
>>>>>>
>>>>>> Memoryprofiler.js is a tool that integrates to Emscripten-built .html
>>>>>> applications, and it tracks the various Emscripten memory area uses, and
>>>>>> draws a graph of memory fragmentation in the Emscripten HEAP.
>>>>>>
>>>>>> It hooks into the malloc(), free() and Runtime.stackAlloc() functions
>>>>>> of the Emscripten runtime, and captures the memory usage as it happens.
>>>>>>
>>>>>> See a live demo here https://dl.dropboxusercontent.com/u/
>>>>>> 40949268/emcc/memoryprofiler/Geometry_d.html
>>>>>>
>>>>>> A quick glossary of the related terms if you are not yet familiar
>>>>>> with them:
>>>>>>
>>>>>> HEAP: This is the single large memory blob that the Emscripten
>>>>>> application allocates at startup, and is all the memory that the 
>>>>>> Emscripten
>>>>>> application ever sees. The STATIC, STACK and DYNAMIC memory areas are
>>>>>> allocated inside this chunk.
>>>>>>
>>>>>> STATIC: This memory area contains constants and globals allocated at
>>>>>> application startup time. Its size never changes at runtime. The STATIC
>>>>>> memory area is in the lowest part of the Emscripten HEAP.
>>>>>>
>>>>>> STACK: This is the application function call stack. Note that unlike
>>>>>> the X86 stack that grows downwards, the Emscripten stack grows up. The
>>>>>> profiler tracks how much space is used in the stack during the time stack
>>>>>> and heap allocations occur, but note that it is only approximate - not 
>>>>>> all
>>>>>> stack usage can be captured.
>>>>>>
>>>>>> DYNAMIC: The memory area for dynamic heap allocations. This is the
>>>>>> pool where memory is taken from when operator new or malloc is called.
>>>>>>
>>>>>> As is readily visible in the map that gets graphed, the memory layout
>>>>>> inside HEAP looks like
>>>>>>
>>>>>> (address 0) [ STATIC | STACK | DYNAMIC | empty ] (top of HEAP)
>>>>>>
>>>>>> The empty space between the top of the DYNAMIC area and the end of
>>>>>> HEAP is unused, but fully reserved for the DYNAMIC area to grow into 
>>>>>> (via a
>>>>>> page allocation operation from a function _sbrk). The total amount of
>>>>>> memory the application can allocate is the sum of the empty area
>>>>>> plus the amount of free memory in DYNAMIC (minus fragmentation of the
>>>>>> HEAP in DYNAMIC).
>>>>>>
>>>>>> To embed memoryprofiler.js to your own builds:
>>>>>>
>>>>>> 1. Download https://dl.dropboxusercontent.com/u/
>>>>>> 40949268/emcc/memoryprofiler/memoryprofiler.js and place it next to
>>>>>> your built Emscripten .html file.
>>>>>> 2. Add a line "<script src='memoryprofiler.js'></script>" to your
>>>>>> application .html file to link memoryprofiler.js to it.
>>>>>> 3. In the Module properties of your application .html file, add a
>>>>>> preRun call to memoryprofiler initialization function
>>>>>> 'memoryprofiler_add_hooks()'. That is, replace the default line in Module
>>>>>> that reads
>>>>>>
>>>>>> preRun: []
>>>>>>
>>>>>> with
>>>>>>
>>>>>> preRun: [memoryprofiler_add_hooks]
>>>>>>
>>>>>> and reopen the page. That's it!
>>>>>>
>>>>>> To make steps 2. and 3. persist between builds, you can add the
>>>>>> <script> tag and the preRun dependency to your custom shell file (copy 
>>>>>> the
>>>>>> provided shell.html in emscripten source directory to your project and 
>>>>>> make
>>>>>> the changes there), and use --shell-file my_shell_with_profiler.html at
>>>>>> Emscripten link time to use that shell instead.
>>>>>>
>>>>>> Configuration:
>>>>>>
>>>>>> There are a few items you can configure in the profiler.
>>>>>> Configuration occurs by directly editing the file memoryprofiler.js. See
>>>>>> the variables
>>>>>>
>>>>>> MEMORYPROFILER_DETAILED_HEAP_USAGE 
>>>>>> MEMORYPROFILER_TRACK_CALLSTACK_MIN_SIZE
>>>>>> MEMORYPROFILER_HOOK_STACKALLOC
>>>>>> MEMORYPROFILER_UI_UPDATE_INTERVAL
>>>>>>
>>>>>> and their documentation in top of the file itself.
>>>>>>
>>>>>> Hope it works!
>>>>>>    Jukka
>>>>>>
>>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "emscripten-discuss" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "emscripten-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "emscripten-discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/emscripten-discuss/HtAzVposlX4/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 
*Marco Trivellato* <[email protected]>
Unity Technologies

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to