linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
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 09:48:20 +0300	[thread overview]
Message-ID: <558CF5B4.70901@intel.com> (raw)
In-Reply-To: <20150626000958.GB6633@kernel.org>

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"

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
db-export and the example call-graph, though.


  reply	other threads:[~2015-06-26  6:51 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 [this message]
2015-06-26 13:41                             ` Arnaldo Carvalho de Melo
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=558CF5B4.70901@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=acme@kernel.org \
    --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).