Using SlowCalls

From MozillaWiki
Jump to: navigation, search

This page documents the procedure for profiling the browser to produce output like http://people.mozilla.org/~sfink/slowcalls-proto/slowcalls.html

Getting a tree with instrumentation

Apply everything in bug 580055 and grab the script process-jscall-logs script from bug 558200.

Building with instrumentation

You will need to configure with both --enable-functiontimer and --enable-trace-jscalls:

 ac_add_options --enable-trace-jscalls
 ac_add_options --enable-functiontimer

I've also been running with --enable-debug, which probably provides a lot more verbosity in the functiontimer logs. But I haven't tried without it, so I'm not sure.

 ac_add_options --enable-debug

Run your scenario

Set the following environment variables before running your scenario:

 NSPR_LOG_MODULES=SlowCalls:5
 NSPR_LOG_FILE=/tmp/minefield.log
 MOZ_FT=/tmp/minefield.tl

For example, I run with this command:

 NSPR_LOG_MODULES=SlowCalls:5 NSPR_LOG_FILE=/tmp/minefield.log MOZ_FT=/tmp/minefield.tl dist/bin/firefox -no-remote -P Blank

Exit the browser when done.

Produce the jscalls output

Run the 'process-jscall-logs' script from bug 558200 giving the two log files generated above as options, and the '-f slowcalls' flag:

 process-jscall-logs -f slowcalls /tmp/minefield.log /tmp/minefield.tl

(though if you're using the default names, you don't actually have to give them on the command line.) This will produce a file /tmp/slowcalls.html.