All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: bhargavb <bhargavaramudu@gmail.com>,
	linux-kernel@vger.kernel.org, Paul Clarke <pc@us.ibm.com>,
	Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>,
	linux-rt-users@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Date: Fri, 8 Dec 2017 12:15:38 +0900	[thread overview]
Message-ID: <20171208121538.4b50a1555cd15e19e72c1af0@kernel.org> (raw)
In-Reply-To: <20171207165659.GD3173@kernel.org>

On Thu, 7 Dec 2017 13:56:59 -0300
Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu:
> > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from
> > automatic generated event name. This fixes wildcard event
> > adding like below case;
> > 
> >   =====
> >   # perf probe -x /lib64/libc-2.25.so malloc*
> >   Internal error: "malloc_get_state@GLIBC_2" is wrong event name.
> >     Error: Failed to add events.
> >   =====
> > 
> > This failure was caused by a versioned suffix symbol.
> > With this fix, perf probe automatically cuts the
> > suffix after @ as below.
> > 
> >   =====
> >   # ./perf probe -x /lib64/libc-2.25.so malloc*
> >   Added new events:
> >     probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc    (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so)
> >     probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so)
> 
> Thanks for working on this! I'm now going over it, and one thing I
> noticed was that the (on malloc*) on all the entries matched by that
> wildcard, can I suggest that you expand it there as well? I.e.
> 
>      probe_libc:malloc_set_state (on malloc_set_state in /usr/lib64/libc-2.25.so)
> 

Hmm, the reason why I chose it was perf probe accepted multiple
probe points at once. e.g.

./perf probe -x /lib64/libc-2.25.so -a malloc* -a free* 

So, if we specify several probe points, I guess user will like to
see which events come from which one. 


> This way we'll now when aliases are used, and also for the versioning
> case, i.e. to which version is a probe pointing?

Currently we can know that by perf probe -l. I would recommend this way,
since -l can show you more precise information (and if it take a time
to read/analyze debuginfo, user can understand the reason why).

Thank you,

> 
> See also Paul Clarke's question and suggestion, which I agree, i.e.
> instead of chopping off the version, just replace the chars with valid
> ones or better, do what Paul suggests, be more flexible in interpreting
> @, i.e. if it is a number and/or fails to point to any file, interpret
> it as versioning.
> 
> - Arnaldo
> 
> >   You can now use it in all perf tools, such as:
> > 
> > 	  perf record -e probe_libc:malloc_set_state -aR sleep 1
> > 
> >   =====
> > 
> > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
> > Reported-by: bhargavb <bhargavaramudu@gmail.com>
> > ---
> >  tools/perf/util/probe-event.c |    4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
> > index c0067950e56f..74435fb7ab7f 100644
> > --- a/tools/perf/util/probe-event.c
> > +++ b/tools/perf/util/probe-event.c
> > @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, const char *base,
> >  	if (!nbase)
> >  		return -ENOMEM;
> >  
> > -	/* Cut off the dot suffixes (e.g. .const, .isra)*/
> > -	p = strchr(nbase, '.');
> > +	/* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */
> > +	p = strpbrk(nbase, ".@");
> >  	if (p && p != nbase)
> >  		*p = '\0';
> >  


-- 
Masami Hiramatsu <mhiramat@kernel.org>

  parent reply	other threads:[~2017-12-08  3:15 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-07  7:19 [PATCH v2 0/5] perf-probe: Improve probing on versioned symbols Masami Hiramatsu
2017-12-07  7:19 ` [PATCH v2 1/5] perf-probe: Add warning message if there is unexpected event name Masami Hiramatsu
2017-12-07 15:53   ` Arnaldo Carvalho de Melo
2017-12-08  2:48     ` Masami Hiramatsu
2017-12-07  7:20 ` [PATCH v2 2/5] perf-probe: Cut off the version suffix from " Masami Hiramatsu
2017-12-07 16:34   ` Paul Clarke
2017-12-08  3:01     ` Masami Hiramatsu
2017-12-08 14:49       ` Paul Clarke
2017-12-08 16:12         ` Masami Hiramatsu
2017-12-11 18:25         ` Arnaldo Carvalho de Melo
2017-12-12 15:02           ` Masami Hiramatsu
2017-12-07 16:56   ` Arnaldo Carvalho de Melo
2017-12-07 17:24     ` Paul Clarke
2017-12-07 17:55       ` Arnaldo Carvalho de Melo
2017-12-08  3:15     ` Masami Hiramatsu [this message]
2017-12-07  7:20 ` [PATCH v2 3/5] perf-probe: Add __return suffix for return events Masami Hiramatsu
2017-12-07  7:21 ` [PATCH v2 4/5] perf-probe: Find versioned symbols from map Masami Hiramatsu
2017-12-08 11:08   ` Thomas-Mich Richter
2017-12-08 14:22     ` Masami Hiramatsu
2017-12-07  7:21 ` [PATCH v2 5/5] perf-probe: Support escaped character in parser Masami Hiramatsu
2017-12-08 11:45   ` Thomas-Mich Richter
2017-12-08 15:54     ` Masami Hiramatsu
2017-12-07 12:47 ` [PATCH v2 0/5] perf-probe: Improve probing on versioned symbols Ravi Bangoria
2017-12-08 16:24   ` Masami Hiramatsu
2017-12-08 17:13     ` Ravi Bangoria
2017-12-08 11:56 ` Thomas-Mich Richter
2017-12-08 16:12   ` 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=20171208121538.4b50a1555cd15e19e72c1af0@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=acme@kernel.org \
    --cc=bhargavaramudu@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=pc@us.ibm.com \
    --cc=ravi.bangoria@linux.vnet.ibm.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 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.