Commit Graph

22 Commits

Author SHA1 Message Date
ssanfilippo
cf8de862ab Fix annotated disassembly in ll_prof.py
An overzealous removal in
https://crrev.com/9e39a9fff1c2966a3f650a4c31dbbe533886d614
caused the disassembly not to be annotated with ticks, even when
requested.

LOG=N

Review URL: https://codereview.chromium.org/1861323002

Cr-Commit-Position: refs/heads/master@{#35298}
2016-04-06 12:38:44 +00:00
ssanfilippo
9e39a9fff1 Remove snapshot log parsing and option from tools.
LOG=N

Review URL: https://codereview.chromium.org/1796863002

Cr-Commit-Position: refs/heads/master@{#35268}
2016-04-05 15:31:32 +00:00
rmcilroy
cb29f9cdbc [Interpreter] Add support for cpu profiler logging.
Adds support for cpu profiler logging to the interpreter. Modifies the
the API to be passed AbstractCode objects instead of Code objects, and
adds extra functions to AbstractCode which is required by log.cc and
cpu-profiler.cc.

The main change in sampler.cc is to determine if a stack frame is an
interpreter stack frame, and if so, use the bytecode address as the pc
for that frame. This allows sampling of bytecode functions. This
requires adding support to SafeStackIterator to determine if a frame is
interpreted, which we do by checking the PC against pre-stored addresses
for the start and end of interpreter entry builtins.

Also removes CodeDeleteEvents which are dead code and haven't
been reported for some time.

Still to do is tracking source positions which will be done in a
followup CL.

BUG=v8:4766
LOG=N

Review URL: https://codereview.chromium.org/1728593002

Cr-Commit-Position: refs/heads/master@{#34321}
2016-02-26 11:04:55 +00:00
mtrofin
379bbd5024 ll_prof: add decimal offset
This simplifies correlating offsets with the output from
--print-opt-code, which outputs offsets in decimal.

We keep the hex output since branch instructions in the perf dump use
hex labels. We just include the decimal offset along with the hex offset.

BUG=

Review URL: https://codereview.chromium.org/1612403002

Cr-Commit-Position: refs/heads/master@{#33455}
2016-01-22 06:41:26 +00:00
mtrofin
018a1f886e [ll_prof] show tick count
Show tick count, besides the percentage spent on an
instruction. Aids perf investigations where we deal with
stalls, for example. Percentage-wise, the execution appears
distributed similarly, but the regression becomes more
apparent in the tick counts.

Review URL: https://codereview.chromium.org/1607323003

Cr-Commit-Position: refs/heads/master@{#33452}
2016-01-22 05:42:54 +00:00
jie.pan
f9bc310e44 Add support for PERF_RECORD_MMAP2 record type
Newer perf.data contains both MMAP and MMAP2 record type,
but MMAP2 record type is not supported in previous ll_prof,
MMAP2 record information will be lost.

BUG=v8:4569
LOG=n

Review URL: https://codereview.chromium.org/1469153004

Cr-Commit-Position: refs/heads/master@{#32319}
2015-11-26 09:31:32 +00:00
jacob.bramley
2ffc970bcd Fix ll_prof.py for static binaries.
BUG=

Review URL: https://codereview.chromium.org/1007613005

Cr-Commit-Position: refs/heads/master@{#27213}
2015-03-16 11:34:52 +00:00
baptiste.afsa@arm.com
f10c5574b0 ARM64: Enable low level profiling.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/353643003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21965 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-24 12:40:20 +00:00
jkummerow@chromium.org
125b1c29cd llprof improvements
Review URL: https://codereview.chromium.org/11444031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13168 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 12:51:33 +00:00
ulan@chromium.org
6df4bcfecf Add support for running low level profiler on Android.
R=mstarzinger@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10908122

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12469 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-06 15:01:20 +00:00
yangguo@chromium.org
daf1020f13 Skip disassembling ld.so.cache in ll_prof.py.
Review URL: http://codereview.chromium.org/9205002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-13 10:23:19 +00:00
vitalyr@chromium.org
8a074ba183 MIPS: Enable the ll_prof profiler on MIPS.
BUG=
TEST=

Review URL: http://codereview.chromium.org/8509006
Patch from Gergely Kis <gergely@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9944 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-09 18:36:31 +00:00
vegorov@chromium.org
ac36cb4504 Merge experimental/gc branch to the bleeding_edge.
Review URL: http://codereview.chromium.org/7945009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-19 18:36:47 +00:00
vitalyr@chromium.org
150cc3fc33 ll_prof: Terminate mmap file names on the first NUL char.
R=fschneider@chromium.org

Review URL: http://codereview.chromium.org/7282011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 15:34:00 +00:00
vitalyr@chromium.org
b7e685ffe9 ll_prof: Output tick percentage by symbol/library.
Review URL: http://codereview.chromium.org/7039040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-18 15:08:50 +00:00
vitalyr@chromium.org
a9ea3f98b0 ll_prof: Reduce profiling hooks overhead from >400% to 25%.
Switched to using binary low-level log instead of the textual log used
by the ticks processor. The binary log contains code-related events,
code object names, and their bodies. When writing to the log we ask
glibc to use a larger buffer. To avoid complex processing of the
snapshot log (which is still textual) the serializer emits final
snapshot position to code name mappings that can be quickly be read
without replaying the snapshot log. (This might be useful for the
ticks processor.)

Review URL: http://codereview.chromium.org/6904127

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7729 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-29 16:06:25 +00:00
mikhail.naganov@gmail.com
56788625b6 Fix CPU profiling for Crankshaft.
The main issue was due to multiple recompilations of functions.  Now
code objects are grouped by function using SFI object address.
JSFunction objects are no longer tracked, instead we track SFI object
moves. To pick a correct code version, we now sample return addresses
instead of JSFunction addresses.

tools/{linux|mac|windows}-tickprocessor scripts differentiate
between code optimization states for the same function
(using * and ~ prefixes introduced earlier).

DevTools CPU profiler treats all variants of function code as
a single function.

ll_prof treats each optimized variant as a separate entry, because
it can disassemble each one of them.

tickprocessor.py not updated -- it is deprecated and will be removed.

BUG=v8/1087,b/3178160
TEST=all existing tests pass, including Chromium layout tests

Review URL: http://codereview.chromium.org/6551011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 16:31:24 +00:00
vitalyr@chromium.org
25f2f21f50 grokdump: Simple windows minidump analysis on linux.
Analyses full minidump (.dmp) files.

Shows the processor state at the point of exception including the
stack of the active thread and the referenced objects in the V8
heap. Code objects are disassembled and the addresses linked from the
stack (pushed return addresses) are marked with "=>".

Review URL: http://codereview.chromium.org/6312058

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6896 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 14:25:26 +00:00
kasperl@chromium.org
51b494d096 Revert r5920. Will re-land shortly.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5921 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-07 11:01:02 +00:00
kasperl@chromium.org
e5860bd6a8 Update V8 to version 3.0.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-07 09:11:56 +00:00
vitalyr@chromium.org
08fbd012b0 ll_prof: minor fixes to the issues found while running with chromium.
Review URL: http://codereview.chromium.org/4097011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5727 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-28 16:48:10 +00:00
vitalyr@chromium.org
e6b33bd20b Support profiling based on linux kernel performance events.
Since 2.6.31 perf_events interface has been available in the
kernel. There's a nice tool called "perf" (linux-2.6/tools/perf) that
uses this interface and provides capabilities similar to oprofile. The
simplest form of its usage is just dumping the raw log (trace) of
events generated by the kernel. In this patch I'm adding a script
(tools/ll_prof.py) to build profiles based on perf trace and our code
log. All the heavy-lifting is done by perf. Compared to oprofile agent
this approach does not require recompilation and supports code moving
garbage collections.

Expected usage is documented in the ll_prof's help. Basically one
should run V8 under perf passing --ll-prof flag and then the produced
logs can be analyzed by tools/ll_prof.py.

The new --ll-prof flag enables logging of generated code object
locations and names (like --log-code), and also of their bodies, which
can be later disassembled and annotated by the script.

Review URL: http://codereview.chromium.org/3831002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-10-19 16:45:11 +00:00