lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <680b4844-aa4a-cb75-72ea-1a70221beb1f@linux.intel.com>
Date:   Fri, 29 Jan 2021 08:37:29 +0800
From:   "Jin, Yao" <yao.jin@...ux.intel.com>
To:     Arnaldo Carvalho de Melo <acme@...nel.org>
Cc:     jolsa@...nel.org, peterz@...radead.org, mingo@...hat.com,
        alexander.shishkin@...ux.intel.com, Linux-kernel@...r.kernel.org,
        ak@...ux.intel.com, kan.liang@...el.com, yao.jin@...el.com
Subject: Re: [PATCH 2/2] perf script: Support dso filter

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@...-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@...hat.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@...ux.intel.com>
>      Cc: Andi Kleen <ak@...ux.intel.com>
>      Cc: Ingo Molnar <mingo@...hat.com>
>      Cc: Jin Yao <yao.jin@...ux.intel.com>
>      Cc: Jiri Olsa <jolsa@...nel.org>
>      Cc: Kan Liang <kan.liang@...el.com>
>      Cc: Namhyung Kim <namhyung@...nel.org>
>      Cc: Peter Zijlstra <peterz@...radead.org>
>      Fixes: 96415e4d3f5fdf9c ("perf symbols: Avoid unnecessary symbol loading when dso list is specified")
>      Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.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@...ux.intel.com>

Thanks
Jin Yao

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ