mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Hemant Kumar <hemant@linux.vnet.ibm.com>,
	Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Subject: Re: [PATCH perf/core v5 05/15] perf probe: Use cache entry if possible
Date: Fri, 29 Apr 2016 20:33:19 +0900	[thread overview]
Message-ID: <20160429113319.GA3094@danjae.aot.lge.com> (raw)
In-Reply-To: <20160429085229.8d605ba101838f6552195a53@kernel.org>

Hi Masami,

On Fri, Apr 29, 2016 at 08:52:29AM +0900, Masami Hiramatsu wrote:
> On Thu, 28 Apr 2016 11:47:53 +0900
> Namhyung Kim <namhyung@kernel.org> wrote:
> 
> > On Thu, Apr 28, 2016 at 03:37:52AM +0900, Masami Hiramatsu wrote:
> > > From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> > > 
> > > Before analyzing debuginfo, try to find a corresponding entry
> > > from probe cache always. This does not depend on --cache,
> > > the --cache enables to store/update cache, but looking up
> > > the cache is always enabled.
> > > 
> > > Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > > ---
> > 
> > [SNIP]
> > > +static int find_probe_trace_events_from_cache(struct perf_probe_event *pev,
> > > +					      struct probe_trace_event **tevs)
> > > +{
> > > +	struct probe_cache *cache;
> > > +	struct probe_cache_entry *entry;
> > > +	struct probe_trace_event *tev;
> > > +	struct str_node *node;
> > > +	int ret, i;
> > > +
> > > +	cache = probe_cache__new(pev->target);
> > > +	if (!cache)
> > > +		return 0;
> > > +
> > > +	entry = probe_cache__find(cache, pev);
> > > +
> > > +	if (!entry && !pev->event &&
> > > +	    (!pev->point.file && pev->point.function && !pev->point.retprobe &&
> > > +	     !pev->point.line && !pev->point.offset && !pev->point.lazy_line)) {
> > > +		entry = probe_cache__find_by_name(cache, pev->group,
> > > +						  pev->point.function);
> > > +	}
> > 
> > What about arguments?  It seems that it only checks group and event
> > names of the given pev and use the cached entry's tev if found.  What
> > if they have different argument spec?
> 
> Indeed. I think this is for reusing cached event by using event name.
> however, with 11/15 ("perf probe: Accept %sdt and %cached event name"),
> we don't need this anymore.
> 
> So, I'll remove this fallback code.

Let's think about the following case: if user added an event to cache
with argument XXX earlier and she tries to add the same event but with
different argument YYY later.  But the event is in the cache so it'll
reuse the cached event with XXX, no?

Thanks,
Namhyung

> > 
> > 
> > > +	if (!entry) {
> > > +		ret = 0;
> > > +		goto out;
> > > +	}
> > > +
> > > +	ret = strlist__nr_entries(entry->tevlist);
> > > +	if (ret > probe_conf.max_probes) {
> > > +		pr_debug("Too many entries matched in the cache of %s\n",
> > > +			 pev->target ? : "kernel");
> > > +		ret = -E2BIG;
> > > +		goto out;
> > > +	}
> > > +
> > > +	*tevs = zalloc(ret * sizeof(*tev));
> > > +	if (!*tevs) {
> > > +		ret = -ENOMEM;
> > > +		goto out;
> > > +	}
> > > +
> > > +	i = 0;
> > > +	strlist__for_each(node, entry->tevlist) {
> > > +		tev = &(*tevs)[i++];
> > > +		ret = parse_probe_trace_command(node->s, tev);
> > > +		if (ret < 0)
> > > +			goto out;
> > > +		/* Set the uprobes attribute as same as original */
> > > +		tev->uprobes = pev->uprobes;
> > > +	}
> > > +	ret = i;
> > > +
> > > +out:
> > > +	probe_cache__delete(cache);
> > > +	return ret;
> > > +}
> 
> 
> -- 
> Masami Hiramatsu <mhiramat@kernel.org>

  reply	other threads:[~2016-04-29  2:33 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-27 18:37 [PATCH perf/core v5 00/15] perf-probe --cache and SDT support Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 01/15] perf probe: Use strbuf for making strings Masami Hiramatsu
2016-05-01  7:38   ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 02/15] perf-buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid Masami Hiramatsu
2016-04-27 21:12   ` Arnaldo Carvalho de Melo
2016-04-28  1:52     ` Masami Hiramatsu
2016-04-27 21:23   ` Arnaldo Carvalho de Melo
2016-04-28  1:51     ` Masami Hiramatsu
2016-04-28  1:22   ` Namhyung Kim
2016-04-28 22:50     ` Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 03/15] perf-buildid-cache: Use lsdir for looking up buildid caches Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 04/15] perf probe: Add --cache option to cache the probe definitions Masami Hiramatsu
2016-04-28  2:12   ` Namhyung Kim
2016-04-28 23:14     ` Masami Hiramatsu
2016-04-28  2:32   ` Namhyung Kim
2016-04-28 23:06     ` Masami Hiramatsu
2016-04-27 18:37 ` [PATCH perf/core v5 05/15] perf probe: Use cache entry if possible Masami Hiramatsu
2016-04-28  2:47   ` Namhyung Kim
2016-04-28 23:52     ` Masami Hiramatsu
2016-04-29 11:33       ` Namhyung Kim [this message]
2016-04-27 18:38 ` [PATCH perf/core v5 06/15] perf probe: Show all cached probes Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 07/15] perf probe: Remove caches when --cache is given Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 08/15] perf/sdt: ELF support for SDT Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 09/15] perf probe: Add group name support Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 10/15] perf buildid-cache: Scan and import user SDT events to probe cache Masami Hiramatsu
2016-04-27 20:32   ` Hemant Kumar
2016-04-27 18:38 ` [PATCH perf/core v5 11/15] perf probe: Accept %sdt and %cached event name Masami Hiramatsu
2016-04-27 20:50   ` Hemant Kumar
2016-04-28  5:26   ` Namhyung Kim
2016-04-29  0:13     ` Masami Hiramatsu
2016-04-27 18:38 ` [PATCH perf/core v5 12/15] perf-list: Show SDT and pre-cached events Masami Hiramatsu
2016-04-27 20:46   ` Hemant Kumar
2016-04-27 18:39 ` [PATCH perf/core v5 13/15] perf-list: Skip SDTs placed in invalid binaries Masami Hiramatsu
2016-04-27 18:39 ` [PATCH perf/core v5 14/15] perf probe: Allow wildcard for cached events Masami Hiramatsu
2016-04-27 18:42   ` Masami Hiramatsu
2016-04-27 19:15     ` [PATCH perf/core v5.1 " Masami Hiramatsu
2016-04-27 20:36       ` Hemant Kumar
2016-04-27 18:39 ` [PATCH perf/core v5 15/15] perf probe: Support @BUILDID or @FILE suffix for SDT events Masami Hiramatsu
2016-04-29 13:53 ` [PATCH perf/core v5 00/15] perf-probe --cache and SDT support Hemant Kumar

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=20160429113319.GA3094@danjae.aot.lge.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=ananth@linux.vnet.ibm.com \
    --cc=hemant@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome