All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.