From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
linux-kernel@vger.kernel.org,
Adrian Hunter <adrian.hunter@intel.com>,
Ingo Molnar <mingo@redhat.com>, Paul Mackerras <paulus@samba.org>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Borislav Petkov <bp@suse.de>,
Hemant Kumar <hemant@linux.vnet.ibm.com>
Subject: [RFC PATCH perf/core v2 00/16] perf-probe --cache and SDT support
Date: Wed, 15 Jul 2015 18:13:53 +0900 [thread overview]
Message-ID: <20150715091352.8915.87480.stgit@localhost.localdomain> (raw)
Hi,
Here is the 2nd version of the patchset for probe-cache and
initial SDT support which are going to be perf-cache finally.
The perf-probe is useful for debugging, but it strongly depends
on the debuginfo. Without debuginfo, it is just a frontend of
ftrace's dynamic events. This can usually happen in server
farms or on cloud system, since no one wants to distribute
big debuginfo packages.
To solve this issue, I had tried to make a pre-analyzed probes
( https://lkml.org/lkml/2014/10/31/207 ) but it has a problm
that we can't ensure the probed binary is same as what we analyzed.
Arnaldo gave me an idea to reuse build-id cache for that perpose
and this series is the first prototype of that.
At the same time, Hemant has started to support SDT probes which
also use the cache file of SDT info. So I decided to merge this
into the same build-id cache.
In this version, SDT support is still very limited, it works
as a part of probe-cache.
In this version, perf probe supports --cache option which means
that perf probe manipulate probe caches, for example,
# perf probe --cache --add "probe-desc"
does not only add probe events but also add "probe-desc" and
it's result on the cache. (Note that the cached entry is always
referred even without --cache)
The --list and --del commands also support --cache. Note that
both are only manipulate caches, not real events.
To use SDT, we have to scan the target binary at first by using
perf-buildid-cache, e.g.
# perf buildid-cache --add /lib/libc-2.17.so
And perf probe --cache --list shows what SDTs are scanned.
# perf probe --cache --list
/usr/lib/libc-2.17.so (a6fb821bdf53660eb2c29f778757aef294d3d392):
libc:setjmp=setjmp
libc:longjmp=longjmp
libc:longjmp_target=longjmp_target
libc:memory_heap_new=memory_heap_new
libc:memory_sbrk_less=memory_sbrk_less
libc:memory_arena_reuse_free_list=memory_arena_reuse_free_list
libc:memory_arena_reuse=memory_arena_reuse
...
To use the SDT events, perf probe -x BIN %SDTEVENT allows you to
add a probe on SDTEVENT@BIN.
# perf probe -x /lib/libc-2.17.so %memory_heap_new
If you define a cached probe with event name, you can also reuse
it as same as SDT events.
# perf probe -x ./perf --cache -n 'myevent=dso__load $params'
(Note that "-n" option only updates caches)
To use the above "myevent", you just have to add "%myevent".
# perf probe -x ./perf %myevent
TODOs:
- Show available cached/SDT events by perf-list
- Allow perf-record to use cached/SDT events directly
Thank you,
---
Hemant Kumar (1):
perf/sdt: ELF support for SDT
Masami Hiramatsu (15):
perf probe: Simplify __add_probe_trace_events code
perf probe: Move ftrace probe-event operations to probe-file.c
perf probe: Use strbuf for making strings in probe-event.c
perf-buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid
perf buildid: Use SBUILD_ID_SIZE macro
perf buildid: Introduce sysfs/filename__sprintf_build_id
perf: Add lsdir to read a directory
perf-buildid-cache: Use lsdir for looking up buildid caches
perf probe: Add --cache option to cache the probe definitions
perf probe: Use cache entry if possible
perf probe: Show all cached probes
perf probe: Remove caches when --cache is given
perf probe: Add group name support
perf buildid-cache: Scan and import user SDT events to probe cache
perf probe: Accept %sdt and %cached event name
tools/perf/Documentation/perf-probe.txt | 14
tools/perf/builtin-buildid-cache.c | 22 -
tools/perf/builtin-buildid-list.c | 28 -
tools/perf/builtin-probe.c | 3
tools/perf/util/Build | 1
tools/perf/util/build-id.c | 230 ++++++--
tools/perf/util/build-id.h | 11
tools/perf/util/dso.h | 5
tools/perf/util/probe-event.c | 918 ++++++++++++++-----------------
tools/perf/util/probe-event.h | 16 -
tools/perf/util/probe-file.c | 763 ++++++++++++++++++++++++++
tools/perf/util/probe-file.h | 46 ++
tools/perf/util/probe-finder.c | 10
tools/perf/util/symbol-elf.c | 252 +++++++++
tools/perf/util/symbol.c | 2
tools/perf/util/symbol.h | 22 +
tools/perf/util/util.c | 34 +
tools/perf/util/util.h | 4
18 files changed, 1781 insertions(+), 600 deletions(-)
create mode 100644 tools/perf/util/probe-file.c
create mode 100644 tools/perf/util/probe-file.h
--
Masami HIRAMATSU
Linux Technology Research Center, System Productivity Research Dept.
Center for Technology Innovation - Systems Engineering
Hitachi, Ltd., Research & Development Group
E-mail: masami.hiramatsu.pt@hitachi.com
next reply other threads:[~2015-07-15 9:18 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-15 9:13 Masami Hiramatsu [this message]
2015-07-15 9:14 ` [RFC PATCH perf/core v2 01/16] perf probe: Simplify __add_probe_trace_events code Masami Hiramatsu
2015-07-21 9:34 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 02/16] perf probe: Move ftrace probe-event operations to probe-file.c Masami Hiramatsu
2015-07-21 9:35 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 03/16] perf probe: Use strbuf for making strings in probe-event.c Masami Hiramatsu
2015-07-17 7:42 ` Namhyung Kim
2015-07-17 10:16 ` Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 04/16] perf-buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 05/16] perf buildid: Use SBUILD_ID_SIZE macro Masami Hiramatsu
2015-07-20 18:47 ` Arnaldo Carvalho de Melo
2015-07-21 9:35 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 06/16] perf buildid: Introduce sysfs/filename__sprintf_build_id Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 07/16] perf: Add lsdir to read a directory Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 08/16] perf-buildid-cache: Use lsdir for looking up buildid caches Masami Hiramatsu
2015-07-15 9:14 ` [RFC PATCH perf/core v2 09/16] perf probe: Add --cache option to cache the probe definitions Masami Hiramatsu
2015-07-15 9:15 ` [RFC PATCH perf/core v2 10/16] perf probe: Use cache entry if possible Masami Hiramatsu
2015-07-15 9:15 ` [RFC PATCH perf/core v2 11/16] perf probe: Show all cached probes Masami Hiramatsu
2015-07-15 9:15 ` [RFC PATCH perf/core v2 12/16] perf probe: Remove caches when --cache is given Masami Hiramatsu
2015-07-15 9:15 ` [RFC PATCH perf/core v2 13/16] perf/sdt: ELF support for SDT Masami Hiramatsu
2015-07-15 9:15 ` [RFC PATCH perf/core v2 14/16] perf probe: Add group name support Masami Hiramatsu
2015-07-19 10:16 ` Namhyung Kim
2015-07-20 4:48 ` Masami Hiramatsu
2015-07-20 15:31 ` Namhyung Kim
2015-07-15 9:15 ` [RFC PATCH perf/core v2 15/16] perf buildid-cache: Scan and import user SDT events to probe cache Masami Hiramatsu
2015-07-19 10:46 ` Namhyung Kim
2015-07-20 3:19 ` Masami Hiramatsu
2015-07-20 15:52 ` Namhyung Kim
2015-07-21 10:42 ` Masami Hiramatsu
2015-07-15 9:15 ` [RFC PATCH perf/core v2 16/16] perf probe: Accept %sdt and %cached event name Masami Hiramatsu
2015-07-19 10:53 ` Namhyung Kim
2015-07-20 3:03 ` Masami Hiramatsu
2015-07-16 3:13 ` [RFC PATCH perf/core v2 00/16] perf-probe --cache and SDT support Hemant Kumar
2015-07-17 3:21 ` Masami Hiramatsu
2015-07-19 4:24 ` Namhyung Kim
2015-07-20 5:47 ` Brendan Gregg
2015-07-20 16:20 ` Namhyung Kim
2015-07-21 10:34 ` Masami Hiramatsu
2015-07-22 14:12 ` Hemant Kumar
2015-07-23 13:13 ` Masami Hiramatsu
2015-07-23 14:01 ` Arnaldo Carvalho de Melo
2015-07-23 16:24 ` Masami Hiramatsu
2015-07-23 16:42 ` Arnaldo Carvalho de Melo
2015-07-24 7:55 ` Namhyung Kim
2015-07-24 15:52 ` Arnaldo Carvalho de Melo
2015-07-25 0:51 ` Masami Hiramatsu
2015-07-27 14:03 ` Re: " Namhyung Kim
2015-07-27 15:16 ` Arnaldo Carvalho de Melo
2015-07-28 0:42 ` Masami Hiramatsu
2015-07-28 13:45 ` Arnaldo Carvalho de Melo
2015-07-20 18:36 ` Arnaldo Carvalho de Melo
2015-07-20 18:42 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150715091352.8915.87480.stgit@localhost.localdomain \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=bp@suse.de \
--cc=hemant@linux.vnet.ibm.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.