Re: [PATCH RFC V9 2/3] perf,tools: per-event callgraph support

From: Arnaldo Carvalho de Melo
Date: Mon Aug 10 2015 - 11:39:47 EST


Em Mon, Aug 10, 2015 at 12:56:04PM +0000, Liang, Kan escreveu:
> > Em Fri, Aug 07, 2015 at 12:38:43PM -0300, Arnaldo Carvalho de Melo escreveu:
> > [root@zoo ~]# perf report --header-only
> > # cmdline :
> > /home/acme/bin/perf record -e {cpu/cpu-cycles,call-
> > graph=fp,time,period=10000/pp,cpu/instructions,call-
> > graph=no,time=0,period=20000/p} -a
<SNIP>

> > I get:

> > Samples: 2K of event 'cpu/instructions,call-
> > graph=no,time=0,period=20000/p', Event count (approx.): 46956518
> > Children Self Command Shared Object Symbol â
> > - 67.56% 0.00% qemu-system-x86 [unknown] [.]
> > 0xad5e258d4c544155 â
> > 0xad5e258d4c544155 â
> > - 67.56% 0.00% qemu-system-x86 libc-2.20.so [.] __libc_start_main â
> > __libc_start_main â
> > 0xad5e258d4c544155 â

> > This is in the 'perf report' TUI, why, for an event with 'callgraph=no', we get
> > callchains? How come?

> That's the design.
> For sampling multiple events, it may not be needed to collect callgraphs for
> all of them. Because the sample sites are usually nearby. It's enough to collect
> the callgraphs on a reference event. For other events, it can still show callgraphs
> according to the callgraphs on a reference event.

So, "call-graph=no" doesn't mean you don't want callchains for a
particular events _if_ there is another event in the group for which
callchains is available.

But if "call-graph=no" for all events, then, yes, "no" means really
"no". :-)

I think we should use "call-graph=ref" to mean that no callchains should
be requested to the kernel infrastructure for that particular event, but
that when doing the report, use callchains available in some other event
(perhaps would be good to specify which one), while "call-graph=no"
really means "no", i.e. no callchains asked from the kernel for this
event, and _no_ callchains to appear on report.

If "ref" is used and no callchains are available anywhere, that is a bug
as well, i.e. I asked for callchains up to a event to be used, by
getting that info from another event, but no event has callchains:
error.

- Arnaldo

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/