Skip to content

Commit

Permalink
deps: backport 9da3ab6 from V8 upstream
Browse files Browse the repository at this point in the history
This patch exposes a new flag perf_basic_prof_only_functions (disabled by
default) that can be useful for the use-case of running always-on profiling on
long running production jobs.

Original commit
v8/v8@9da3ab6
  New flag --perf_basic_prof_only_functions
  Restricts linux perf-event code range reporting to functions only (i.e. on
  stubs.) While this makes the gathered ticks less accurate, it reduces the
  growth of the /tmp/perf-${pid}.map file.

  BUG=v8:3453
  [email protected],[email protected]
  LOG=N

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

  Cr-Commit-Position: refs/heads/master@{#30179}

PR-URL: #3609
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>
  • Loading branch information
ofrobots authored and Myles Borins committed Feb 18, 2016
1 parent 94c2de4 commit 469db02
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
3 changes: 3 additions & 0 deletions deps/v8/src/flag-definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -929,6 +929,9 @@ DEFINE_BOOL(ll_prof, false, "Enable low-level linux profiler.")
DEFINE_BOOL(perf_basic_prof, false,
"Enable perf linux profiler (basic support).")
DEFINE_NEG_IMPLICATION(perf_basic_prof, compact_code_space)
DEFINE_BOOL(perf_basic_prof_only_functions, false,
"Only report function code ranges to perf (i.e. no stubs).")
DEFINE_IMPLICATION(perf_basic_prof_only_functions, perf_basic_prof)
DEFINE_STRING(gc_fake_mmap, "/tmp/__v8_gc__",
"Specify the name of the file for fake gc mmap used in ll_prof")
DEFINE_BOOL(log_internal_timer_events, false, "Time internal events.")
Expand Down
6 changes: 6 additions & 0 deletions deps/v8/src/log.cc
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,12 @@ void PerfBasicLogger::LogRecordedBuffer(Code* code,
int length) {
DCHECK(code->instruction_start() == code->address() + Code::kHeaderSize);

if (FLAG_perf_basic_prof_only_functions &&
(code->kind() != Code::FUNCTION &&
code->kind() != Code::OPTIMIZED_FUNCTION)) {
return;
}

base::OS::FPrint(perf_output_handle_, "%llx %x %.*s\n",
reinterpret_cast<uint64_t>(code->instruction_start()),
code->instruction_size(), length, name);
Expand Down

0 comments on commit 469db02

Please sign in to comment.