Using SlowCalls: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Configure your profile: Unnecessary after JSOP_BEGIN removal)
m (shrtr bttr)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
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 ==
== Getting a tree with instrumentation ==


First, you need to get a tree containing Javascript instrumentation that is fully working. ({{bug|507012}} added the instrumentation, but it keeps getting perturbed by JS engine changes, so that it ends up getting mismatched JS function enters/exits.)
Apply everything in {{bug|580055}} and grab the script process-jscall-logs script from {{bug|558200}}.
 
I've updated the patches in {{bug|605330}} to work on top of dvander's recent refactoring of the tracemonkey branch ({{bug|603044}}). So to get it working, you'll need to apply two sets of patches:
 
* First, checkout the tracemonkey branch.
* Apply everything in {{bug|605330}}
* Add in an instrumentation client that just logs everything to a file ({{bug|580055}}, which needs to be updated at the time of this writing)


== Building with instrumentation ==
== Building with instrumentation ==
Line 24: Line 20:
Set the following environment variables before running your scenario:
Set the following environment variables before running your scenario:


   NSPR_LOG_MODULES=JSDiagnostics:5
   NSPR_LOG_MODULES=SlowCalls:5
   NSPR_LOG_FILE=/tmp/minefield.log
   NSPR_LOG_FILE=/tmp/minefield.log
   MOZ_FT=/tmp/minefield.tl
   MOZ_FT=/tmp/minefield.tl
Line 30: Line 26:
For example, I run with this command:
For example, I run with this command:


   NSPR_LOG_MODULES=JSDiagnostics:5 NSPR_LOG_FILE=/tmp/minefield.log MOZ_FT=/tmp/minefield.tl dist/bin/firefox -no-remote -P Blank
   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.
Exit the browser when done.
Line 40: Line 36:
   process-jscall-logs -f slowcalls /tmp/minefield.log /tmp/minefield.tl
   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. Go to file:///tmp/slowcalls.html in a browser to view the output.
(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.

Latest revision as of 01:37, 22 February 2011

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.