Re: [BUG] perf report --pid not reporting correctly
From: Jiri Olsa
Date: Thu Sep 22 2016 - 09:36:27 EST
On Thu, Sep 22, 2016 at 10:34:57AM +0900, Namhyung Kim wrote:
SNIP
> $ perf report -s pid,cpu --stdio --hierarchy
> #
> # Overhead Pid:Command / CPU
> # ........... .......................
> #
> 31.21% 0:swapper
> 12.16% 000
> 3.09% 001
> 2.76% 002
> 2.23% 003
> 1.65% 007
> 1.65% 008
> 1.52% 009
> 1.51% 006
> 1.46% 004
> 1.34% 005
> 0.94% 010
> 0.90% 011
> 19.15% 8618:getmail
> ...
>
>
>
>
>
> -----------------------8<-------------------------------
> diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
> index 8d363d5e65a2..42b1bfd29ef8 100644
> --- a/tools/perf/util/event.h
> +++ b/tools/perf/util/event.h
> @@ -262,6 +262,7 @@ enum auxtrace_error_type {
> */
> struct events_stats {
> u64 total_period;
> + u64 total_early_filtered_period;
looks good, but why the word early? wouldn't total_filtered_period be just fine?
thanks,
jirka
> u64 total_non_filtered_period;
> u64 total_lost;
> u64 total_lost_samples;
> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index 37a08f20730a..c7045411cce2 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -1017,12 +1017,21 @@ int hist_entry_iter__add(struct hist_entry_iter *iter, struct addr_location *al,
> int max_stack_depth, void *arg)
> {
> int err, err2;
> + struct hists *hists = evsel__hists(iter->evsel);
>
> err = sample__resolve_callchain(iter->sample, &callchain_cursor, &iter->parent,
> iter->evsel, al, max_stack_depth);
> if (err)
> return err;
>
> + if (symbol__parent_filter(iter->parent))
> + al->filtered |= symbol__parent_filter(iter->parent);
> +
> + if (al->filtered) {
> + hists->stats.total_early_filtered_period += iter->sample->period;
SNIP