From: "Jin, Yao" <yao.jin@linux.intel.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com,
alexander.shishkin@linux.intel.com, Linux-kernel@vger.kernel.org,
ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH 2/2] perf script: Support dso filter
Date: Fri, 29 Jan 2021 08:37:29 +0800 [thread overview]
Message-ID: <680b4844-aa4a-cb75-72ea-1a70221beb1f@linux.intel.com> (raw)
In-Reply-To: <20210128131209.GD775562@kernel.org>
Hi Arnaldo,
On 1/28/2021 9:12 PM, Arnaldo Carvalho de Melo wrote:
> Em Mon, Jan 25, 2021 at 07:27:50AM +0800, Jin Yao escreveu:
>> Other perf tool builtins have already supported dso filter.
>>
>> For example,
>> perf report --dso, which only considers symbols in these dsos.
>>
>> Now dso filter is supported for perf-script.
>>
>> root@kbl-ppc:~# ./perf script --dso "[kernel.kallsyms]"
>> perf 18123 [000] 6142863.075104: 1 cycles: ffffffff9ca77308 native_write_msr+0x8 ([kernel.kallsyms])
>> perf 18123 [000] 6142863.075107: 1 cycles: ffffffff9ca77308 native_write_msr+0x8 ([kernel.kallsyms])
>> perf 18123 [000] 6142863.075108: 10 cycles: ffffffff9ca77308 native_write_msr+0x8 ([kernel.kallsyms])
>> perf 18123 [000] 6142863.075109: 273 cycles: ffffffff9ca7730a native_write_msr+0xa ([kernel.kallsyms])
>> perf 18123 [000] 6142863.075110: 7684 cycles: ffffffff9ca3c9c0 native_sched_clock+0x50 ([kernel.kallsyms])
>> perf 18123 [000] 6142863.075112: 213017 cycles: ffffffff9d765a92 syscall_exit_to_user_mode+0x32 ([kernel.kallsyms])
>> perf 18123 [001] 6142863.075156: 1 cycles: ffffffff9ca77308 native_write_msr+0x8 ([kernel.kallsyms])
>> perf 18123 [001] 6142863.075158: 1 cycles: ffffffff9ca77308 native_write_msr+0x8 ([kernel.kallsyms])
>> perf 18123 [001] 6142863.075159: 17 cycles: ffffffff9ca77308 native_write_msr+0x8 ([kernel.kallsyms])
>
> Applied, and in testing it I noticed this fix was also needed, added
> just before it, please ack :-)
>
> - Arnaldo
>
> commit d4b6078bd58b799a8ea2a57842193504c867bee5
> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> Date: Thu Jan 28 09:52:47 2021 -0300
>
> perf tools: Fix DSO filtering when not finding a map for a sampled address
>
> When we lookup an address and don't find a map we should filter that
> sample if the user specified a list of --dso entries to filter on, fix
> it.
>
> Before:
>
> $ perf script
> sleep 274800 2843.556162: 1 cycles:u: ffffffffbb26bff4 [unknown] ([unknown])
> sleep 274800 2843.556168: 1 cycles:u: ffffffffbb2b047d [unknown] ([unknown])
> sleep 274800 2843.556171: 1 cycles:u: ffffffffbb2706b2 [unknown] ([unknown])
> sleep 274800 2843.556174: 6 cycles:u: ffffffffbb2b0267 [unknown] ([unknown])
> sleep 274800 2843.556176: 59 cycles:u: ffffffffbb2b03b1 [unknown] ([unknown])
> sleep 274800 2843.556180: 691 cycles:u: ffffffffbb26bff4 [unknown] ([unknown])
> sleep 274800 2843.556189: 9160 cycles:u: 7fa9550eeaa3 __GI___tunables_init+0xf3 (/usr/lib64/ld-2.32.so)
> sleep 274800 2843.556312: 86937 cycles:u: 7fa9550e157b _dl_lookup_symbol_x+0x4b (/usr/lib64/ld-2.32.so)
> $
>
> So we have some samples we somehow didn't find in a map for, if we now
> do:
>
> $ perf report --stdio --dso /usr/lib64/ld-2.32.so
> # dso: /usr/lib64/ld-2.32.so
> #
> # Total Lost Samples: 0
> #
> # Samples: 8 of event 'cycles:u'
> # Event count (approx.): 96856
> #
> # Overhead Command Symbol
> # ........ ....... ........................
> #
> 89.76% sleep [.] _dl_lookup_symbol_x
> 9.46% sleep [.] __GI___tunables_init
> 0.71% sleep [k] 0xffffffffbb26bff4
> 0.06% sleep [k] 0xffffffffbb2b03b1
> 0.01% sleep [k] 0xffffffffbb2b0267
> 0.00% sleep [k] 0xffffffffbb2706b2
> 0.00% sleep [k] 0xffffffffbb2b047d
> $
>
> After this patch we get the right output with just entries for the DSOs
> specified in --dso:
>
> $ perf report --stdio --dso /usr/lib64/ld-2.32.so
> # dso: /usr/lib64/ld-2.32.so
> #
> # Total Lost Samples: 0
> #
> # Samples: 8 of event 'cycles:u'
> # Event count (approx.): 96856
> #
> # Overhead Command Symbol
> # ........ ....... ........................
> #
> 89.76% sleep [.] _dl_lookup_symbol_x
> 9.46% sleep [.] __GI___tunables_init
> $
>
> # To display the perf.data header info, please use --header/--header-only options.
> #
>
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> Cc: Andi Kleen <ak@linux.intel.com>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Jin Yao <yao.jin@linux.intel.com>
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Kan Liang <kan.liang@intel.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Fixes: 96415e4d3f5fdf9c ("perf symbols: Avoid unnecessary symbol loading when dso list is specified")
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
> index fbe8578e4c475773..208b6c141d98bb5d 100644
> --- a/tools/perf/util/event.c
> +++ b/tools/perf/util/event.c
> @@ -692,6 +692,8 @@ int machine__resolve(struct machine *machine, struct addr_location *al,
> }
>
> al->sym = map__find_symbol(al->map, al->addr);
> + } else if (symbol_conf.dso_list) {
> + al->filtered |= (1 << HIST_FILTER__DSO);
> }
>
> if (symbol_conf.sym_list) {
>
This fix guarantees the "[unknown]" dso is filtered when we enable "--dso" option (whatever the dso
list in --dso).
Acked-by: Jin Yao (yao.jin@linux.intel.com>
Thanks
Jin Yao
next prev parent reply other threads:[~2021-01-29 0:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-24 23:27 [PATCH 1/2] perf script: Support filtering by hex address Jin Yao
2021-01-24 23:27 ` [PATCH 2/2] perf script: Support dso filter Jin Yao
2021-01-27 22:15 ` Jiri Olsa
2021-01-28 13:12 ` Arnaldo Carvalho de Melo
2021-01-29 0:37 ` Jin, Yao [this message]
2021-01-27 23:13 ` [PATCH 1/2] perf script: Support filtering by hex address Jiri Olsa
2021-01-28 3:31 ` Jin, Yao
2021-01-28 12:43 ` Arnaldo Carvalho de Melo
2021-01-29 0:42 ` Jin, Yao
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=680b4844-aa4a-cb75-72ea-1a70221beb1f@linux.intel.com \
--to=yao.jin@linux.intel.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@intel.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.