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.

Reply via email to