All of lore.kernel.org
 help / color / mirror / Atom feed
* [BUG] perf report --pid not reporting correctly
@ 2016-09-21  1:29 Stephane Eranian
  2016-09-21 15:37 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 11+ messages in thread
From: Stephane Eranian @ 2016-09-21  1:29 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, LKML, Peter Zijlstra, Namhyung Kim, mingo, ak, Vince Weaver

Hi Arnaldo,

I ran into an issue trying to use the --pid filtering option of perf report.

I do a system-wide collection and then I want to narrow down the
reporting to a specific process:

$ perf record -a -e cycles:pp sleep 10
$ perf report --sort cpu,comm --pid X

Where X is a process sampled during the run (easy to catch with perf report -D)
If you do it this way, it works, but if you do:

$ perf report --sort cpu --pid X

Then you get an empty output.

I suspect it has to do with the way hist entries are added to the
histogram and aggregated. If the first event for a sort criteria is
not coming from pid X, it will
still be added in the histogram. if pid X aggregates to the same
sample criteria, then you will lose the pid information. And then
later when you try to apply the filter,
it will mark the hist entry as FILTERED because it does not have a matching pid
and nothing will be printed.
I suspect you want to apply the filtering upfront for pid. It will
only add to the histograms matching samples. It changes the
percentages you will see. They will
only report the breakdown for the pid.

I have a quick hack to do upfront filtering which does something as
follows but I am not sure this is the correct way of doing this.

Let me know what you think.
Thanks.


diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 715467d..c24de6e 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1020,6 +1020,9 @@ int hist_entry_iter__add(struct hist_entry_iter
*iter, struct addr_location *al,
 {
        int err, err2;

+       if (thread__is_filtered(al->thread))
+               return 0;
+
        err = sample__resolve_callchain(iter->sample,
&callchain_cursor, &iter->parent,
                                       iter->evsel, al, max_stack_depth);
        if (err)

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-09-23  3:32 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-21  1:29 [BUG] perf report --pid not reporting correctly Stephane Eranian
2016-09-21 15:37 ` Arnaldo Carvalho de Melo
2016-09-21 16:34   ` Jiri Olsa
2016-09-21 20:18     ` Stephane Eranian
2016-09-22  1:34       ` Namhyung Kim
2016-09-22  2:22         ` Stephane Eranian
2016-09-22  3:20           ` Namhyung Kim
2016-09-22 13:36         ` Jiri Olsa
2016-09-23  3:31           ` Namhyung Kim
2016-09-22  0:14   ` Namhyung Kim
2016-09-22 14:57     ` Andi Kleen

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.