From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org, Jiri Olsa <jolsa@redhat.com>,
Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH V6 08/17] perf tools: Add Intel PT support
Date: Fri, 26 Jun 2015 10:41:56 -0300 [thread overview]
Message-ID: <20150626134156.GA3265@kernel.org> (raw)
In-Reply-To: <558CF5B4.70901@intel.com>
Em Fri, Jun 26, 2015 at 09:48:20AM +0300, Adrian Hunter escreveu:
> On 26/06/15 03:09, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Jun 25, 2015 at 08:56:34PM -0300, Arnaldo Carvalho de Melo escreveu:
> >> Will do the same tests with intel_pt as well, on a remote machine, add examples
> >> to the changeset logs and everything going well, aim for pushing for Ingo soon,
> >
> > So, I asked for callchains, with:
> >
> > perf record -g -e intel_bts// ls
> >
> > And it got stuck somewhere, then I did a perf top to see where it was,
> > and got to:
> >
> > 96.24% perf [.] intel_bts_process_queue
> >
> > Annotating I get to:
> >
> > 1.17 │1a0:┌─→mov 0x8(%r13),%rdx
> > │ │ test %rdx,%rdx
> > 98.83 │ └──je 1a0
> >
> >
> > Which is an endless loop! Source code for intel_bts_process_buffer(),
> > inlined there:
> >
> > while (sz > sizeof(struct branch)) {
> > if (!branch->from && !branch->to)
> > continue;
> > err = intel_bts_synth_branch_sample(btsq, branch);
> > if (err)
> > break;
> > branch += 1;
> > sz -= sizeof(struct branch);
> > }
> >
> > Can you fix this, please, so that I can fold it into where it was
> > introduced, namely:
> >
> > commit 439ad895a2aecea09416206f023336297cc72efe
> > Author: Adrian Hunter <adrian.hunter@intel.com>
> > Date: Fri May 29 16:33:39 2015 +0300
> >
> > perf tools: Add Intel BTS support
>
> It is fixed as an unexpected side-effect of a following patch (which is probably why I didn't notice it - or perhaps I rolled the fix into the wrong patch O_o). The fix is in:
>
> perf tools: Output sample flags and insn_len from intel_bts
>
> intel_bts synthesizes samples. Fill in the new flags and insn_len
> members with instruction information.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>
>
> So what you want is:
>
>
> diff --git a/tools/perf/util/intel-bts.c b/tools/perf/util/intel-bts.c
> index 48bcbd607ef7..68bb6fede55b 100644
> --- a/tools/perf/util/intel-bts.c
> +++ b/tools/perf/util/intel-bts.c
> @@ -304,7 +304,7 @@ static int intel_bts_process_buffer(struct intel_bts_queue *btsq,
> struct auxtrace_buffer *buffer)
> {
> struct branch *branch;
> - size_t sz;
> + size_t sz, bsz = sizeof(struct branch);
> int err = 0;
>
> if (buffer->use_data) {
> @@ -318,14 +318,12 @@ static int intel_bts_process_buffer(struct intel_bts_queue *btsq,
> if (!btsq->bts->sample_branches)
> return 0;
>
> - while (sz > sizeof(struct branch)) {
> + for (; sz > bsz; branch += 1, sz -= bsz) {
> if (!branch->from && !branch->to)
> continue;
> err = intel_bts_synth_branch_sample(btsq, branch);
> if (err)
> break;
> - branch += 1;
> - sz -= sizeof(struct branch);
> }
> return err;
> }
>
>
> But obviously that will conflict with "perf tools: Output sample flags and insn_len from intel_bts"
I can fix those things up, to keep it bisectable, next time please try
to do it this way :-)
> Another thing, the intel_bts implementation does not support
> "instructions" samples because there is no timing information to
> use to create periodic samples. But callchains are added only
> to "instructions" samples so there are no callchains in 'perf report'
> for intel_bts. The call information is still available for
Humm, so IOW, what you say is that we should refuse to run 'record' when
asking for callchains and intel_bts?
> db-export and the example call-graph, though.
- Arnaldo
next prev parent reply other threads:[~2015-06-26 13:42 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-29 13:33 [PATCH V6 00/17] perf tools: Introduce an abstraction for AUX Area and Instruction Tracing Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 01/17] perf db-export: Fix thread ref-counting Adrian Hunter
2015-05-29 18:35 ` [tip:perf/core] " tip-bot for Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 02/17] perf tools: Ensure thread-stack is flushed Adrian Hunter
2015-06-18 21:56 ` Arnaldo Carvalho de Melo
2015-06-19 5:50 ` Adrian Hunter
2015-06-19 23:15 ` [tip:perf/core] " tip-bot for Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 03/17] perf auxtrace: Add Intel PT as an AUX area tracing type Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 04/17] perf tools: Add Intel PT packet decoder Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 05/17] perf tools: Add Intel PT instruction decoder Adrian Hunter
2015-06-18 22:29 ` Arnaldo Carvalho de Melo
2015-06-19 15:44 ` Arnaldo Carvalho de Melo
2015-06-22 12:40 ` Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 06/17] perf tools: Add Intel PT log Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 07/17] perf tools: Add Intel PT decoder Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 08/17] perf tools: Add Intel PT support Adrian Hunter
2015-06-19 16:04 ` Arnaldo Carvalho de Melo
2015-06-19 16:22 ` Arnaldo Carvalho de Melo
2015-06-19 19:33 ` Adrian Hunter
2015-06-19 19:41 ` Arnaldo Carvalho de Melo
2015-06-22 18:24 ` Arnaldo Carvalho de Melo
2015-06-22 20:26 ` Adrian Hunter
2015-06-22 23:00 ` Arnaldo Carvalho de Melo
2015-06-23 6:29 ` Adrian Hunter
2015-06-23 15:15 ` Arnaldo Carvalho de Melo
2015-06-25 13:37 ` Adrian Hunter
2015-06-25 13:45 ` Arnaldo Carvalho de Melo
2015-06-25 23:56 ` Arnaldo Carvalho de Melo
2015-06-26 0:09 ` Arnaldo Carvalho de Melo
2015-06-26 6:48 ` Adrian Hunter
2015-06-26 13:41 ` Arnaldo Carvalho de Melo [this message]
2015-06-26 13:47 ` Adrian Hunter
2015-06-26 15:08 ` Arnaldo Carvalho de Melo
2015-06-26 20:34 ` Arnaldo Carvalho de Melo
2015-05-29 13:33 ` [PATCH V6 09/17] perf tools: Take Intel PT into use Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 10/17] perf tools: Allow auxtrace data alignment Adrian Hunter
2015-06-25 7:58 ` [tip:perf/core] " tip-bot for Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 11/17] perf tools: Add Intel BTS support Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 12/17] perf tools: Output sample flags and insn_len from intel_pt Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 13/17] perf tools: Output sample flags and insn_len from intel_bts Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 14/17] perf tools: Intel PT to always update thread stack trace number Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 15/17] perf tools: Intel BTS " Adrian Hunter
2015-06-19 16:11 ` Arnaldo Carvalho de Melo
2015-06-22 12:38 ` Adrian Hunter
2015-06-22 14:33 ` Arnaldo Carvalho de Melo
2015-05-29 13:33 ` [PATCH V6 16/17] perf tools: Put itrace options into an asciidoc include Adrian Hunter
2015-05-29 13:33 ` [PATCH V6 17/17] perf tools: Add example call-graph script Adrian Hunter
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=20150626134156.GA3265@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=eranian@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).