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
-~----------~----~----~----~------~----~------~--~---

Reply via email to