From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Oleg Nesterov <oleg@redhat.com>, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux-mm <linux-mm@kvack.org>, Andi Kleen <andi@firstfloor.org>,
Christoph Hellwig <hch@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Roland McGrath <roland@hack.frob.com>,
Thomas Gleixner <tglx@linutronix.de>,
Arnaldo Carvalho de Melo <acme@infradead.org>,
Anton Arapov <anton@redhat.com>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Jim Keniston <jkenisto@linux.vnet.ibm.com>,
Stephen Rothwell <sfr@canb.auug.org.au>,
yrl.pp-manager.tt@hitachi.com
Subject: Re: [PATCH v8 3.2.0-rc5 9/9] perf: perf interface for uprobes
Date: Fri, 13 Jan 2012 10:56:17 +0900 [thread overview]
Message-ID: <4F0F8F41.3060806@hitachi.com> (raw)
In-Reply-To: <20120109112236.GA10189@linux.vnet.ibm.com>
(2012/01/09 20:22), Srikar Dronamraju wrote:
>>> return true;
>>>
>>> for (i = 0; i < pev->nargs; i++)
>>> @@ -1344,11 +1389,17 @@ char *synthesize_probe_trace_command(struct
probe_trace_event *tev)
>>> if (buf == NULL)
>>> return NULL;
>>>
>>> - len = e_snprintf(buf, MAX_CMDLEN, "%c:%s/%s %s%s%s+%lu",
>>> - tp->retprobe ? 'r' : 'p',
>>> - tev->group, tev->event,
>>> - tp->module ?: "", tp->module ? ":" : "",
>>> - tp->symbol, tp->offset);
>>> + if (tev->uprobes)
>>> + len = e_snprintf(buf, MAX_CMDLEN, "%c:%s/%s %s",
>>> + tp->retprobe ? 'r' : 'p',
>>> + tev->group, tev->event, tp->symbol);
>>> + else
>>> + len = e_snprintf(buf, MAX_CMDLEN, "%c:%s/%s %s%s%s+%lu",
>>> + tp->retprobe ? 'r' : 'p',
>>> + tev->group, tev->event,
>>> + tp->module ?: "", tp->module ? ":" : "",
>>> + tp->symbol, tp->offset);
>>
>> I think tp->module should be the executable file even when
>> tp is a user space probe, because when parsing the uprobes list
>> in tracing/trace_uprobes, exec file will be stored in tp->module.
>
> can be done. What I used to do is overload the tp->symbol with the
> real-name as well as the offset. Now I will just keep the offset in the
> symbol and use the target that the user has requested.
I mean that tp->module always !NULL if uprobe, then, we don't need
to change the code. (thus we can reduce the patch size :))
>>> +int show_available_funcs(const char *target, struct strfilter *_filter,
>>> + bool user)
>>> +{
>>> + struct map *map;
>>> + int ret;
>>> +
>>> + setup_pager();
>>> available_func_filter = _filter;
>>> +
>>> + if (!user)
>>> + return available_kernel_funcs(target);
>>> +
>>> + symbol_conf.try_vmlinux_path = false;
>>> + symbol_conf.sort_by_name = true;
>>> + ret = symbol__init();
>>> + if (ret < 0) {
>>> + pr_err("Failed to init symbol map.\n");
>>> + return ret;
>>> + }
>>> + map = dso__new_map(target);
>>> + ret = __show_available_funcs(map);
>>> + dso__delete(map->dso);
>>> + map__delete(map);
>>> + return ret;
>>> +}
>>> +
>>> +#define DEFAULT_FUNC_FILTER "!_*"
>>
>> This is a hidden rule for users ... please remove it.
>> (or, is there any reason why we need to have it?)
>>
>
> This is to be in sync with your commit
> 3c42258c9a4db70133fa6946a275b62a16792bb5
I see, but that commit also provides filter option for changing
the function filter. Here, user can not change the filter rule.
I think, currently, we don't need to filter any function by name
here, since the user obviously intends to probe given function :)
>>> +
>>> +/*
>>> + * uprobe_events only accepts address:
>>> + * Convert function and any offset to address
>>> + */
>>> +static int convert_name_to_addr(struct perf_probe_event *pev, const char *exec)
>>> +{
>>
>> I'm not sure why wouldn't you convert function to "vaddr",
>> instead of "exec:vaddr"?
>>
>
> If the user provides a symbolic link, convert_name_to_addr would get the
> target executable for the given executable. This would handy if we were
> to compare existing probes registered on the same application using a
> different name (symbolic links). Since you seem to like that we register
> with the name the user has provided, I will just feed address here.
Hmm, why do we need to compare the probe points? Of course, event-name
conflict should be solved, but I think it is acceptable that user puts
several probes on the same exec:vaddr. Since different users may want
to use it concurrently bit different ways.
Thank you,
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Oleg Nesterov <oleg@redhat.com>, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux-mm <linux-mm@kvack.org>, Andi Kleen <andi@firstfloor.org>,
Christoph Hellwig <hch@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Roland McGrath <roland@hack.frob.com>,
Thomas Gleixner <tglx@linutronix.de>,
Arnaldo Carvalho de Melo <acme@infradead.org>,
Anton Arapov <anton@redhat.com>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Jim Keniston <jkenisto@linux.vnet.ibm.com>,
Stephen Rothwell <sfr@canb.auug.org.au>,
yrl.pp-manager.tt@hitachi.com
Subject: Re: [PATCH v8 3.2.0-rc5 9/9] perf: perf interface for uprobes
Date: Fri, 13 Jan 2012 10:56:17 +0900 [thread overview]
Message-ID: <4F0F8F41.3060806@hitachi.com> (raw)
In-Reply-To: <20120109112236.GA10189@linux.vnet.ibm.com>
(2012/01/09 20:22), Srikar Dronamraju wrote:
>>> return true;
>>>
>>> for (i = 0; i < pev->nargs; i++)
>>> @@ -1344,11 +1389,17 @@ char *synthesize_probe_trace_command(struct
probe_trace_event *tev)
>>> if (buf == NULL)
>>> return NULL;
>>>
>>> - len = e_snprintf(buf, MAX_CMDLEN, "%c:%s/%s %s%s%s+%lu",
>>> - tp->retprobe ? 'r' : 'p',
>>> - tev->group, tev->event,
>>> - tp->module ?: "", tp->module ? ":" : "",
>>> - tp->symbol, tp->offset);
>>> + if (tev->uprobes)
>>> + len = e_snprintf(buf, MAX_CMDLEN, "%c:%s/%s %s",
>>> + tp->retprobe ? 'r' : 'p',
>>> + tev->group, tev->event, tp->symbol);
>>> + else
>>> + len = e_snprintf(buf, MAX_CMDLEN, "%c:%s/%s %s%s%s+%lu",
>>> + tp->retprobe ? 'r' : 'p',
>>> + tev->group, tev->event,
>>> + tp->module ?: "", tp->module ? ":" : "",
>>> + tp->symbol, tp->offset);
>>
>> I think tp->module should be the executable file even when
>> tp is a user space probe, because when parsing the uprobes list
>> in tracing/trace_uprobes, exec file will be stored in tp->module.
>
> can be done. What I used to do is overload the tp->symbol with the
> real-name as well as the offset. Now I will just keep the offset in the
> symbol and use the target that the user has requested.
I mean that tp->module always !NULL if uprobe, then, we don't need
to change the code. (thus we can reduce the patch size :))
>>> +int show_available_funcs(const char *target, struct strfilter *_filter,
>>> + bool user)
>>> +{
>>> + struct map *map;
>>> + int ret;
>>> +
>>> + setup_pager();
>>> available_func_filter = _filter;
>>> +
>>> + if (!user)
>>> + return available_kernel_funcs(target);
>>> +
>>> + symbol_conf.try_vmlinux_path = false;
>>> + symbol_conf.sort_by_name = true;
>>> + ret = symbol__init();
>>> + if (ret < 0) {
>>> + pr_err("Failed to init symbol map.\n");
>>> + return ret;
>>> + }
>>> + map = dso__new_map(target);
>>> + ret = __show_available_funcs(map);
>>> + dso__delete(map->dso);
>>> + map__delete(map);
>>> + return ret;
>>> +}
>>> +
>>> +#define DEFAULT_FUNC_FILTER "!_*"
>>
>> This is a hidden rule for users ... please remove it.
>> (or, is there any reason why we need to have it?)
>>
>
> This is to be in sync with your commit
> 3c42258c9a4db70133fa6946a275b62a16792bb5
I see, but that commit also provides filter option for changing
the function filter. Here, user can not change the filter rule.
I think, currently, we don't need to filter any function by name
here, since the user obviously intends to probe given function :)
>>> +
>>> +/*
>>> + * uprobe_events only accepts address:
>>> + * Convert function and any offset to address
>>> + */
>>> +static int convert_name_to_addr(struct perf_probe_event *pev, const char *exec)
>>> +{
>>
>> I'm not sure why wouldn't you convert function to "vaddr",
>> instead of "exec:vaddr"?
>>
>
> If the user provides a symbolic link, convert_name_to_addr would get the
> target executable for the given executable. This would handy if we were
> to compare existing probes registered on the same application using a
> different name (symbolic links). Since you seem to like that we register
> with the name the user has provided, I will just feed address here.
Hmm, why do we need to compare the probe points? Of course, event-name
conflict should be solved, but I think it is acceptable that user puts
several probes on the same exec:vaddr. Since different users may want
to use it concurrently bit different ways.
Thank you,
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
next prev parent reply other threads:[~2012-01-13 1:56 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-16 12:27 [PATCH v8 3.2.0-rc5 0/9] uprobes patchset Srikar Dronamraju
2011-12-16 12:27 ` Srikar Dronamraju
2011-12-16 12:28 ` [PATCH v8 3.2.0-rc5 1/9] uprobes: Install and remove breakpoints Srikar Dronamraju
2011-12-16 12:28 ` Srikar Dronamraju
2012-01-04 16:49 ` Peter Zijlstra
2012-01-04 16:49 ` Peter Zijlstra
2012-01-06 6:14 ` Srikar Dronamraju
2012-01-06 6:14 ` Srikar Dronamraju
2012-01-06 10:57 ` Peter Zijlstra
2012-01-06 10:57 ` Peter Zijlstra
2012-01-06 11:08 ` Srikar Dronamraju
2012-01-06 11:08 ` Srikar Dronamraju
2012-01-04 16:51 ` Peter Zijlstra
2012-01-04 16:51 ` Peter Zijlstra
2012-01-04 17:12 ` Steven Rostedt
2012-01-04 17:12 ` Steven Rostedt
2011-12-16 12:28 ` [PATCH v8 3.2.0-rc5 2/9] uprobes: handle breakpoint and signal step exception Srikar Dronamraju
2011-12-16 12:28 ` Srikar Dronamraju
2011-12-16 12:28 ` [PATCH v8 3.2.0-rc5 3/9] uprobes: slot allocation Srikar Dronamraju
2011-12-16 12:28 ` Srikar Dronamraju
2011-12-16 12:28 ` [PATCH v8 3.2.0-rc5 4/9] uprobes: counter to optimize probe hits Srikar Dronamraju
2011-12-16 12:28 ` Srikar Dronamraju
2011-12-16 12:28 ` [PATCH v8 3.2.0-rc5 5/9] tracing: modify is_delete, is_return from ints to bool Srikar Dronamraju
2011-12-16 12:28 ` Srikar Dronamraju
2011-12-16 12:29 ` [PATCH v8 3.2.0-rc5 6/9] tracing: Extract out common code for kprobes/uprobes traceevents Srikar Dronamraju
2011-12-16 12:29 ` Srikar Dronamraju
2011-12-16 12:29 ` [PATCH v8 3.2.0-rc5 7/9] tracing: uprobes trace_event interface Srikar Dronamraju
2011-12-16 12:29 ` Srikar Dronamraju
2011-12-16 12:29 ` [PATCH v8 3.2.0-rc5 8/9] perf: rename target_module to target Srikar Dronamraju
2011-12-16 12:29 ` Srikar Dronamraju
2011-12-16 12:29 ` [PATCH v8 3.2.0-rc5 9/9] perf: perf interface for uprobes Srikar Dronamraju
2011-12-16 12:29 ` Srikar Dronamraju
2012-01-06 10:51 ` Masami Hiramatsu
2012-01-06 10:51 ` Masami Hiramatsu
2012-01-09 11:22 ` Srikar Dronamraju
2012-01-09 11:22 ` Srikar Dronamraju
2012-01-13 1:56 ` Masami Hiramatsu [this message]
2012-01-13 1:56 ` Masami Hiramatsu
2012-01-13 5:14 ` Srikar Dronamraju
2012-01-13 5:14 ` Srikar Dronamraju
2012-01-13 14:02 ` Masami Hiramatsu
2012-01-13 14:02 ` Masami Hiramatsu
2012-01-16 14:21 ` [PATCH v9 3.2 " Srikar Dronamraju
2012-01-16 14:21 ` Srikar Dronamraju
2012-01-09 11:24 ` [PATCH v8 3.2.0-rc5 " Srikar Dronamraju
2012-01-09 11:24 ` Srikar Dronamraju
2012-01-12 14:50 ` Masami Hiramatsu
2012-01-12 14:50 ` 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=4F0F8F41.3060806@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=acme@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=ananth@in.ibm.com \
--cc=andi@firstfloor.org \
--cc=anton@redhat.com \
--cc=hch@infradead.org \
--cc=jkenisto@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=roland@hack.frob.com \
--cc=rostedt@goodmis.org \
--cc=sfr@canb.auug.org.au \
--cc=srikar@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=yrl.pp-manager.tt@hitachi.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.