Author: [email protected]
Date: Tue Jun 16 05:08:59 2009
New Revision: 2186
Added:
branches/bleeding_edge/tools/oprofile/
branches/bleeding_edge/tools/oprofile/annotate (contents, props
changed)
branches/bleeding_edge/tools/oprofile/common (contents, props changed)
branches/bleeding_edge/tools/oprofile/dump (contents, props changed)
branches/bleeding_edge/tools/oprofile/report (contents, props changed)
branches/bleeding_edge/tools/oprofile/reset (contents, props changed)
branches/bleeding_edge/tools/oprofile/run (contents, props changed)
branches/bleeding_edge/tools/oprofile/shutdown (contents, props
changed)
branches/bleeding_edge/tools/oprofile/start (contents, props changed)
Modified:
branches/bleeding_edge/src/oprofile-agent.cc
Log:
Added utility scripts for running oprofile in tools/oprofile.
To profile running the JavaScript file test.js using the V8 release mode
shell (assuming it is build passing prof=oprofile to the SCons build). The
following commands can be used:
$ tools/oprofile/start
$ tools/oprofile/run test.js
$ tools/oprofile/report | less
$ tools/oprofile/annotate | less
$ tools/oprofile/shutdown
Here is a summary of the commands.
For all the commands taking an executable the executable is expected to be
a binary using V8. If no executable is specified the release mode V8 shell
is assumed.
By default the --session-dir=/tmp/oprofv8 is passed to all oprofile
commands. This walue can be changed by setting environment variable
OPROFILE_SESSION_DIR.
When using the defaulf executable (V8 shell in release mode) it is assumed
to be located in ../.. relative from the oprofile utility scripts. This
default location can be overridden using the V8_SHELL_DIR environment
variable.
start
-----
Start the oprofiling daemon.
run [executable] [parameters]
-----------------------------
Profile a V8 executable. Running this will reset oprofile samples, run the
command and do an oprofile dump to flush samples and write ELF binaries for
the generated code. The parameters are passed to the executable together
with the --oprofile option.
report [executable] [parameters]
--------------------------------
Print the report for a profile run. The parameters are passed to opreport.
E.g report --callgraph.
annotate [executable] [parameters]
----------------------------------
Print annotated assembly for a profile run. The parameters are passed to
opannotate. E.g annotate -threshold 1.
reset
-----
Reset oprofile samples.
dump
----
Flush oprofile samples and write ELF binaries for the generated code.
shutdown
--------
Shutdown oprofile daemon.
Added a warning which is printed if option --oprofile is passed to a V8
which has not been compiled with oprofile support.
Review URL: http://codereview.chromium.org/125181
Modified: branches/bleeding_edge/src/oprofile-agent.cc
==============================================================================
--- branches/bleeding_edge/src/oprofile-agent.cc (original)
+++ branches/bleeding_edge/src/oprofile-agent.cc Tue Jun 16 05:08:59 2009
@@ -52,6 +52,10 @@
return true;
}
#else
+ if (FLAG_oprofile) {
+ OS::Print("Warning: --oprofile specified but binary compiled without "
+ "oprofile support.\n");
+ }
return true;
#endif
}
Added: branches/bleeding_edge/tools/oprofile/annotate
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/annotate Tue Jun 16 05:08:59 2009
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+opannotate --assembly
--session-dir="$OPROFILE_SESSION_DIR" "$shell_exec" "$@"
+
Added: branches/bleeding_edge/tools/oprofile/common
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/common Tue Jun 16 05:08:59 2009
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Determine the session directory to use for oprofile.
+[ "$OPROFILE_SESSION_DIR" ] || OPROFILE_SESSION_DIR=/tmp/oprofv8
+
+# If no executable passed as the first parameter assume V8 release mode
shell.
+if [[ -x $1 ]]
+then
+ shell_exec=`readlink -f "$1"`
+ # Any additional parameters are for the oprofile command.
+ shift
+else
+ oprofile_tools_path=`cd $(dirname "$0");pwd`
+ [ "$V8_SHELL_DIR" ] || V8_SHELL_DIR=$oprofile_tools_path/../..
+ shell_exec=$V8_SHELL_DIR/shell
+fi
+
+alias sudo_opcontrol='sudo opcontrol --session-dir="$OPROFILE_SESSION_DIR"'
+
Added: branches/bleeding_edge/tools/oprofile/dump
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/dump Tue Jun 16 05:08:59 2009
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+sudo_opcontrol --dump "@$"
+
Added: branches/bleeding_edge/tools/oprofile/report
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/report Tue Jun 16 05:08:59 2009
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+opreport --symbols --session-dir="$OPROFILE_SESSION_DIR" "$shell_exec" "$@"
+
Added: branches/bleeding_edge/tools/oprofile/reset
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/reset Tue Jun 16 05:08:59 2009
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+sudo_opcontrol --reset "$@"
+
Added: branches/bleeding_edge/tools/oprofile/run
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/run Tue Jun 16 05:08:59 2009
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+# Reset oprofile samples.
+sudo_opcontrol --reset
+
+# Run the executable to profile with the correct arguments.
+"$shell_exec" --oprofile "$@"
+
+# Flush oprofile data including the generated code into ELF binaries.
+sudo_opcontrol --dump
+
Added: branches/bleeding_edge/tools/oprofile/shutdown
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/shutdown Tue Jun 16 05:08:59 2009
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+sudo_opcontrol --shutdown "$@"
+
Added: branches/bleeding_edge/tools/oprofile/start
==============================================================================
--- (empty file)
+++ branches/bleeding_edge/tools/oprofile/start Tue Jun 16 05:08:59 2009
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source common stuff.
+. `cd $(dirname "$0");pwd`/common
+
+sudo_opcontrol --start --no-vmlinux "$@"
+
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---