linux/tools/perf
Masami Hiramatsu cb40273085 perf probe: Trace a magic number if variable is not found
Trace a magic number as immediate value if the target variable is not
found at some probe points which is based on one probe event.

This feature is good for the case if you trace a source code line with
some local variables, which is compiled into several instructions and
some of the variables are optimized out on some instructions.

Even if so, with this feature, perf probe trace a magic number instead
of such disappeared variables and fold those probes on one event.

E.g. without this patch:

  # perf probe -D "pud_page_vaddr pud"
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  Failed to find 'pud' in this function.
  p:probe/pud_page_vaddr _text+23480787 pud=%ax:x64
  p:probe/pud_page_vaddr _text+23808453 pud=%bp:x64
  p:probe/pud_page_vaddr _text+23558082 pud=%ax:x64
  p:probe/pud_page_vaddr _text+328373 pud=%r8:x64
  p:probe/pud_page_vaddr _text+348448 pud=%bx:x64
  p:probe/pud_page_vaddr _text+23816818 pud=%bx:x64

With this patch:

  # perf probe -D "pud_page_vaddr pud" | head
  spurious_kernel_fault is blacklisted function, skip it.
  vmalloc_fault is blacklisted function, skip it.
  p:probe/pud_page_vaddr _text+23480787 pud=%ax:x64
  p:probe/pud_page_vaddr _text+149051 pud=\deade12d:x64
  p:probe/pud_page_vaddr _text+23808453 pud=%bp:x64
  p:probe/pud_page_vaddr _text+315926 pud=\deade12d:x64
  p:probe/pud_page_vaddr _text+23807209 pud=\deade12d:x64
  p:probe/pud_page_vaddr _text+23557365 pud=%ax:x64
  p:probe/pud_page_vaddr _text+314097 pud=%di:x64
  p:probe/pud_page_vaddr _text+314015 pud=\deade12d:x64
  p:probe/pud_page_vaddr _text+313893 pud=\deade12d:x64
  p:probe/pud_page_vaddr _text+324083 pud=\deade12d:x64

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
Link: http://lore.kernel.org/lkml/157406476931.24476.6261475888681844285.stgit@devnote2
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2019-11-18 19:09:23 -03:00
..
arch x86/insn: perf tools: Add some instructions to the new instructions test 2019-11-18 18:53:54 -03:00
bench
Documentation perf tool: Provide an option to print perf_event_open args and return value 2019-11-12 08:32:27 -03:00
examples/bpf
include/bpf
jvmti perf jvmti: Link against tools/lib/ctype.h to have weak strlcpy() 2019-10-15 11:47:38 -03:00
lib perf evsel: Avoid close(-1) 2019-11-06 15:43:05 -03:00
pmu-events perf vendor events power9: Fix commas so PMU event files are valid JSON 2019-11-12 15:26:55 -03:00
python
scripts perf scripts python: exported-sql-viewer.py: Fix use of TRUE with SQLite 2019-11-13 09:13:16 -03:00
tests perf maps: Do not use an rbtree to sort by map name 2019-11-18 11:19:51 -03:00
trace perf trace: Wire up strarray__strtoul_flags() 2019-10-19 15:35:02 -03:00
ui perf annotate: Stop using map->groups, use map_symbol->mg instead 2019-11-12 08:20:53 -03:00
util perf probe: Trace a magic number if variable is not found 2019-11-18 19:09:23 -03:00
.gitignore
Build
builtin-annotate.c pref tools: Make 'struct addr_map_symbol' contain 'struct map_symbol' 2019-11-12 08:20:53 -03:00
builtin-bench.c
builtin-buildid-cache.c
builtin-buildid-list.c
builtin-c2c.c perf c2c: Fix memory leak in build_cl_output() 2019-10-15 12:08:13 -03:00
builtin-config.c
builtin-data.c
builtin-diff.c perf hist: Count the total cycles of all samples 2019-11-07 09:14:15 -03:00
builtin-evlist.c perf evsel: Introduce evsel_fprintf.h 2019-09-25 16:26:34 -03:00
builtin-ftrace.c
builtin-help.c
builtin-inject.c perf inject: Make --strip keep evsels 2019-11-06 15:49:40 -03:00
builtin-kallsyms.c
builtin-kmem.c perf callchain: Use 'struct map_symbol' in 'struct callchain_cursor_node' 2019-11-12 08:20:53 -03:00
builtin-kvm.c perf kvm: Use evlist layer api when possible 2019-11-06 15:43:05 -03:00
builtin-list.c perf list: Hide deprecated events by default 2019-10-19 15:35:01 -03:00
builtin-lock.c
builtin-mem.c
builtin-probe.c
builtin-record.c perf record: No need to process the synthesized MMAP events twice 2019-11-18 11:21:32 -03:00
builtin-report.c perf annotate: Pass a 'map_symbol' in places receiving a pair of 'map' and 'symbol' pointers 2019-11-12 08:20:53 -03:00
builtin-sched.c perf callchain: Use 'struct map_symbol' in 'struct callchain_cursor_node' 2019-11-12 08:20:53 -03:00
builtin-script.c perf script: Fix --reltime with --time 2019-10-15 08:36:22 -03:00
builtin-stat.c perf stat: Add --per-node agregation support 2019-11-06 15:49:39 -03:00
builtin-timechart.c
builtin-top.c perf annotate: Pass a 'map_symbol' in places receiving a pair of 'map' and 'symbol' pointers 2019-11-12 08:20:53 -03:00
builtin-trace.c perf trace: Use STUL_STRARRAY_FLAGS with mmap 2019-10-19 15:35:02 -03:00
builtin-version.c
builtin.h
check-headers.sh tools arch x86: Grab a copy of the file containing the IRQ vector defines 2019-10-15 15:42:01 -03:00
command-list.txt
CREDITS
design.txt
Makefile
Makefile.config perf tools: Allow to build with -ltcmalloc 2019-10-15 08:36:22 -03:00
Makefile.perf libbeauty: Hook up the x86 irq_vectors table generator 2019-10-15 15:48:50 -03:00
MANIFEST
perf-archive.sh
perf-completion.sh
perf-read-vdso.c
perf-sys.h perf tools: Make usage of test_attr__* optional for perf-sys.h 2019-10-31 21:38:41 +01:00
perf-with-kcore.sh
perf.c libperf: Merge libperf_set_print() into libperf_init() 2019-09-25 09:51:49 -03:00
perf.h