[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <147201825017.5713.10732844032749364745.stgit@devbox>
Date: Wed, 24 Aug 2016 14:57:35 +0900
From: Masami Hiramatsu <mhiramat@...nel.org>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
Cc: Masami Hiramatsu <mhiramat@...nel.org>,
linux-kernel@...r.kernel.org,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>, Jiri Olsa <jolsa@...hat.com>
Subject: [RFC PATCH 0/4] perf probe: Introduce remote cross-arch probes
Hi,
Here is an RFC series for remote cross-arch probe support on perf-probe.
I've made a perf-probe for remote arch (currently arm on x86-64) for
helping debugging and performance analysis.
Currently perf-probe doesn't supoort cross/remote target. This means
we have to cross-build the perf-tools including libraries (elfutils,
libelf etc.), and to prepare vmlinux with debuginfo which can be
accessed from the target machine.
This requires too much resource for a small embededd device.
If we can analyze the debuginfo by perf-probe on host machine,
we do not need to cross-build perf-tools, nor copy vmlinux on the
device. :)
This series introduces such features on perf-probe.
To use this, on host machine (with cross build kernel image),
below command outputs the target-machine's kprobe-events definition
in <output-directory>/kprobe_events.
perf probe -k <cross-vmlinux> --outdir=<output-directory> \
<probe-point> <arguments>
Perf analyzes the given vmlinux and get the architecture and
switch the dwarf-register mappings.
Here is an example:
-----
$ mkdir tracing
$ sudo perf probe --outdir=./tracing --vmlinux=./vmlinux-arm \
do_sys_open '$vars'
Added new event:
probe:do_sys_open (on do_sys_open with $vars)
You can now use it in all perf tools, such as:
perf record -e probe:do_sys_open -aR sleep 1
$ cat tracing/kprobe_events
p:probe/do_sys_open _text+1282292 dfd=%r5:s32 filename=%r1:u32
flags=%r6:s32 mode=%r3:u16 op=-60(%sp) fd=%r4:s32 tmp=%r7:u32
-----
Here, we can get probe/do_sys_open event by "copy & paste" the
definition to target-machine's debugfs/tracing/kprobe_events.
To make sure it is correct:
-----
$ nm vmlinux-arm | grep "T _text"
80008000 T _text
$ nm vmlinux-arm | grep "T do_sys_open"
801410f4 T do_sys_open
$ expr `printf "%d + %d" 0x80008000 1282292`
2148798708
$ printf "%x\n" 2148798708
801410f4
-----
So "_text+12882292" indicates do_sys_open on the target binary correctly.
Thanks,
---
Masami Hiramatsu (4):
perf-probe: Remove unused tracing_dir variable
perf-probe: Add offline output directory option
perf-probe: Ignore vmlinux buildid if offline kernel is given
perf-probe: Support probing on offline cross-arch binary
tools/perf/arch/arm/include/dwarf-regs-table.h | 9 +++
tools/perf/arch/arm64/include/dwarf-regs-table.h | 13 +++++
tools/perf/arch/powerpc/include/dwarf-regs-table.h | 27 ++++++++++
tools/perf/arch/s390/include/dwarf-regs-table.h | 8 +++
tools/perf/arch/sh/include/dwarf-regs-table.h | 25 +++++++++
tools/perf/arch/sparc/include/dwarf-regs-table.h | 18 +++++++
tools/perf/arch/x86/include/dwarf-regs-table.h | 14 +++++
tools/perf/arch/xtensa/include/dwarf-regs-table.h | 8 +++
tools/perf/builtin-probe.c | 8 +++
tools/perf/util/Build | 1
tools/perf/util/dwarf-regs.c | 55 ++++++++++++++++++++
tools/perf/util/include/dwarf-regs.h | 6 ++
tools/perf/util/probe-event.h | 1
tools/perf/util/probe-file.c | 22 ++++++--
tools/perf/util/probe-finder.c | 27 ++++++----
tools/perf/util/probe-finder.h | 1
tools/perf/util/symbol-elf.c | 2 -
17 files changed, 228 insertions(+), 17 deletions(-)
create mode 100644 tools/perf/arch/arm/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/arm64/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/powerpc/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/s390/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/sh/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/sparc/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/x86/include/dwarf-regs-table.h
create mode 100644 tools/perf/arch/xtensa/include/dwarf-regs-table.h
create mode 100644 tools/perf/util/dwarf-regs.c
--
Masami Hiramatsu (Linaro Ltd.) <mhiramat@...nel.org>
Powered by blists - more mailing lists