From: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
To: mingo@redhat.com, acme@kernel.org, mhiramat@kernel.org
Cc: brendan.d.gregg@gmail.com, peterz@infradead.org,
alexander.shishkin@linux.intel.com, wangnan0@huawei.com,
jolsa@kernel.org, ak@linux.intel.com, treeze.taeung@gmail.com,
mathieu.poirier@linaro.org, hekuang@huawei.com,
sukadev@linux.vnet.ibm.com, ananth@in.ibm.com,
naveen.n.rao@linux.vnet.ibm.com, adrian.hunter@intel.com,
linux-kernel@vger.kernel.org, hemant@linux.vnet.ibm.com,
Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Subject: [PATCH v5 0/7] perf/sdt: Directly record SDT events with 'perf record'
Date: Tue, 14 Mar 2017 20:36:51 +0530 [thread overview]
Message-ID: <20170314150658.7065-1-ravi.bangoria@linux.vnet.ibm.com> (raw)
All events from 'perf list', except SDT events, can be directly recorded
with 'perf record'. But, the flow is little different for SDT events.
Probe point for SDT event needs to be created using 'perf probe' before
recording it using 'perf record'.
As suggested by Ingo[1], it's better to make this process simple by
creating probe point automatically with 'perf record' for SDT events.
Features:
- Allow both 'perf probe' and 'perf record' on sdt events without
changing current functionality.
- Event starting with 'sdt_' or '%' will be considered as SDT event.
- Always prioritize events from uprobe_events by first checking if
event exists with exact name. If not found and user has used
pattern, again try to find pattern matching entries from
uprobe_events. If found use them. If not, lookup into probe-cache.
If events found from probe-cache, again check if any event exists
in uprobe_events by matching filepath+address, as it might exists
in uprobe_events but with different name. Reuse those events which
exists in uprobe_events and create new entries for missing one.
Also maintain list for new entries being created and at the end
of the session, delete them.
- Show various warnings/hints to help user understand _which_ events
are being recorded and _why_. For ex,
When multiple events of same name found and all are being recorded:
$ sudo ./perf record -a -e sdt_libpthread:mutex_entry
Warning: Recording on 2 occurrences of sdt_libpthread:mutex_entry
Events being reused from uprobe_events is listed as 'name addr@file'
followed by hint on how to delete them:
$ sudo ./perf record -a -e sdt_libpthread:mutex_entry
Matching event(s) from uprobe_events:
sdt_libpthread:mutex_entry 0x9ddb@/usr/lib64/libpthread-2.24.so
Use 'perf probe -d <event>' to delete event(s).
If number of events found from cache is not equal to number of events
being recorded:
$ sudo ./perf record -a -e sdt_libpthread:mutex_entry
Warning: Found 2 events from probe-cache with name 'sdt_libpthread:mutex_entry'.
Since 1 probe point already exists, recording only it.
Hint: Please use 'perf probe -d sdt_libpthread:mutex_entry' to allow record on all events.
- If all events found from probe-cache are not present in uprobe_events,
and user has used pattern to specify event, perf will record only
those events which are present in uprobe_events. This is to make perf
semantics consistent across normal and SDT events. And If user has
not used pattern, perf will record all events found from probe-cache
by reusing name for existing one and adding entries for missing one.
For ex,
$ sudo ./perf probe sdt_libpthread:mutex_release
Added new events:
sdt_libpthread:mutex_release (on %mutex_release in /usr/lib64/libpthread-2.24.so)
sdt_libpthread:mutex_release_1 (on %mutex_release in /usr/lib64/libpthread-2.24.so)
sdt_libpthread:mutex_release_2 (on %mutex_release in /usr/lib64/libpthread-2.24.so)
sdt_libpthread:mutex_release_3 (on %mutex_release in /usr/lib64/libpthread-2.24.so)
$ sudo ./perf probe -d sdt_libpthread:mutex_release
$ sudo ./perf probe -d sdt_libpthread:mutex_release_2
$ sudo ./perf record -a -e sdt_libpthread:mutex_release*
Warning: Recording on 2 occurrences of sdt_libpthread:mutex_release*
$ sudo ./perf record -a -e sdt_libpthread:mutex_release
Warning: Recording on 4 occurrences of sdt_libpthread:mutex_release
Changes in v5:
- Patch 2/7 is new. New option introduced in this patch helps to pass
custome data from builtin-*.c to libperf.
- All direct callbacks from libelf to builtin-record.c is removed.
- Merged 2nd and 4th patch of v4 into patch 2 of v5.
- Moved all functions from util/probe-file.c to util/probe-event.c
which operates on perf_probe_event.
- Made free_sdt_list() static as it's only used inside util/probe-event.c.
- Couple of other changes as Masami has suggested in v4 review.
Note: Patchset is prepared on top of acme/perf/core.
v4 link: https://lkml.org/lkml/2017/3/6/565
[1] https://lkml.org/lkml/2017/2/7/59
[2] https://lkml.org/lkml/2016/5/3/810
Hemant Kumar (1):
perf/sdt: Directly record SDT events with 'perf record'
Ravi Bangoria (6):
perf/sdt: Introduce util func is_sdt_event()
perf tool: Add option macro OPT_CALLBACK_ARG
perf/sdt: Allow recording of existing events
perf/sdt: Warn when number of events recorded are not equal to cached
events
perf/sdt: List events fetched from uprobe_events
perf/sdt: List events fetched from uprobe_events
tools/lib/api/fs/tracing_path.c | 17 +-
tools/lib/subcmd/parse-options.h | 4 +
tools/perf/builtin-record.c | 27 ++-
tools/perf/util/parse-events.c | 60 +++++++
tools/perf/util/parse-events.h | 23 +++
tools/perf/util/probe-event.c | 362 +++++++++++++++++++++++++++++++++++++--
tools/perf/util/probe-event.h | 16 ++
tools/perf/util/probe-file.c | 48 ++++++
tools/perf/util/probe-file.h | 1 +
9 files changed, 527 insertions(+), 31 deletions(-)
--
2.9.3
next reply other threads:[~2017-03-14 15:07 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-14 15:06 Ravi Bangoria [this message]
2017-03-14 15:06 ` [PATCH v5 1/7] perf/sdt: Introduce util func is_sdt_event() Ravi Bangoria
2017-03-16 16:34 ` [tip:perf/core] perf probe: " tip-bot for Ravi Bangoria
2017-03-14 15:06 ` [PATCH v5 2/7] perf tool: Add option macro OPT_CALLBACK_ARG Ravi Bangoria
2017-03-14 21:00 ` Arnaldo Carvalho de Melo
2017-03-14 15:06 ` [PATCH v5 3/7] perf/sdt: Directly record SDT events with 'perf record' Ravi Bangoria
2017-03-15 12:03 ` Jiri Olsa
2017-03-15 13:16 ` Arnaldo Carvalho de Melo
2017-03-15 13:49 ` Ravi Bangoria
2017-03-17 9:05 ` Masami Hiramatsu
2017-03-20 3:51 ` Ravi Bangoria
2017-03-14 15:06 ` [PATCH v5 4/7] perf/sdt: Allow recording of existing events Ravi Bangoria
2017-03-17 23:13 ` Masami Hiramatsu
2017-03-20 9:12 ` Ravi Bangoria
2017-03-21 4:52 ` Masami Hiramatsu
2017-03-14 15:06 ` [PATCH v5 5/7] perf/sdt: Warn when number of events recorded are not equal to cached events Ravi Bangoria
2017-03-14 15:06 ` [PATCH v5 6/7] perf/sdt: List events fetched from uprobe_events Ravi Bangoria
2017-03-14 15:06 ` [PATCH v5 7/7] " Ravi Bangoria
2017-03-17 23:14 ` Masami Hiramatsu
2017-03-20 9:16 ` Ravi Bangoria
2017-03-16 9:51 ` [PATCH v5 0/7] perf/sdt: Directly record SDT events with 'perf record' Masami Hiramatsu
2017-03-16 11:27 ` Ravi Bangoria
2017-03-17 4:42 ` Masami Hiramatsu
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=20170314150658.7065-1-ravi.bangoria@linux.vnet.ibm.com \
--to=ravi.bangoria@linux.vnet.ibm.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=ananth@in.ibm.com \
--cc=brendan.d.gregg@gmail.com \
--cc=hekuang@huawei.com \
--cc=hemant@linux.vnet.ibm.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=naveen.n.rao@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=sukadev@linux.vnet.ibm.com \
--cc=treeze.taeung@gmail.com \
--cc=wangnan0@huawei.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®