All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Ingo Molnar <mingo@redhat.com>,
	linux-kernel@vger.kernel.org, kan.liang@linux.intel.com,
	Adrian Hunter <adrian.hunter@intel.com>
Subject: Re: [PATCH v6 7/7] perf intel-pt: Add brief documentation for PEBS via Intel PT
Date: Tue, 13 Aug 2019 11:14:53 -0300	[thread overview]
Message-ID: <20190813141453.GB3754@redhat.com> (raw)
In-Reply-To: <87imr12m9x.fsf@ashishki-desk.ger.corp.intel.com>

Em Tue, Aug 13, 2019 at 05:05:46PM +0300, Alexander Shishkin escreveu:
> Arnaldo Carvalho de Melo <acme@redhat.com> writes:
> 
> > Em Tue, Aug 06, 2019 at 11:46:06AM +0300, Alexander Shishkin escreveu:
> >> From: Adrian Hunter <adrian.hunter@intel.com>
> >> 
> >> Document how to select PEBS via Intel PT and how to display synthesized
> >> PEBS samples.
> >> 
> >> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> >> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> >> ---
> >>  tools/perf/Documentation/intel-pt.txt | 15 +++++++++++++++
> >>  1 file changed, 15 insertions(+)
> >> 
> >> diff --git a/tools/perf/Documentation/intel-pt.txt b/tools/perf/Documentation/intel-pt.txt
> >> index 50c5b60101bd..8dc513b6607b 100644
> >> --- a/tools/perf/Documentation/intel-pt.txt
> >> +++ b/tools/perf/Documentation/intel-pt.txt
> >> @@ -919,3 +919,18 @@ amended to take the number of elements as a parameter.
> >>  
> >>  Note there is currently no advantage to using Intel PT instead of LBR, but
> >>  that may change in the future if greater use is made of the data.
> >> +
> >> +
> >> +PEBS via Intel PT
> >> +=================
> >> +
> >> +Some hardware has the feature to redirect PEBS records to the Intel PT trace.
> >> +Recording is selected by using the aux-output config term e.g.
> >> +
> >> +	perf record  -c 10000 -e cycles/aux-output/ppp -e intel_pt/branch=0/ uname
> >> +
> >> +Note that currently, software only supports redirecting at most one PEBS event.
> >
> > So, with these patches, but not the kernel ones I end up getting:
> >
> > [root@quaco ~]# perf record  -c 10000 -e cycles/aux-output/ppp -e intel_pt/branch=0/ uname
> 
> FWIW, the correct command line for that would have the two events
> grouped and intel_pt be the group leader.

I've just blindly followed the provided documentation :)

So you say I should have tried this instead:

  # perf record -c 10000 -e '{intel_pt/branch=0/,cycles/aux-output/ppp}' uname
  Error:
  The 'aux_output' feature is not supported, update the kernel.
  #

Or with leader sampling?

  # perf record -c 10000 -e '{intel_pt/branch=0/,cycles/aux-output/ppp}:S' uname
  Error:
  The 'aux_output' feature is not supported, update the kernel.
  # 

This is with the patch at the end of this message and without the kernel counterpart.

- Arnaldo

commit 58c5a9772d88f5dead1e561f6323f9f355625caa
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Aug 13 11:06:38 2019 -0300

    perf evsel: Provide meaningful warning when trying to use 'aux_output' on older kernels
    
    Just like we do with the 'write_backwards' feature:
    
    Before:
    
      # perf record  -c 10000 -e cycles/aux-output/ppp -e intel_pt/branch=0/ uname
      Error:
      The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles/aux-output/ppp).
      /bin/dmesg | grep -i perf may provide additional information.
    
      #
    
    After:
    
      # perf record  -c 10000 -e cycles/aux-output/ppp -e intel_pt/branch=0/ uname
      Error:
      The 'aux_output' feature is not supported, update the kernel.
      #
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/n/tip-wgjsjroe1e150c0metgwmqwd@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 6f08aea4f108..0b3b5af33954 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1738,7 +1738,8 @@ int evsel__open(struct evsel *evsel, struct perf_cpu_map *cpus,
 	int pid = -1, err;
 	enum { NO_CHANGE, SET_TO_MAX, INCREASED_MAX } set_rlimit = NO_CHANGE;
 
-	if (perf_missing_features.write_backward && evsel->core.attr.write_backward)
+	if ((perf_missing_features.write_backward && evsel->core.attr.write_backward) ||
+	    (perf_missing_features.aux_output     && evsel->core.attr.aux_output))
 		return -EINVAL;
 
 	if (cpus == NULL) {
@@ -1912,7 +1913,11 @@ int evsel__open(struct evsel *evsel, struct perf_cpu_map *cpus,
 	 * Must probe features in the order they were added to the
 	 * perf_event_attr interface.
 	 */
-	if (!perf_missing_features.bpf_event && evsel->core.attr.bpf_event) {
+	if (!perf_missing_features.aux_output && evsel->core.attr.aux_output) {
+		perf_missing_features.aux_output = true;
+		pr_debug2("Kernel has no attr.aux_output support, bailing out\n");
+		goto out_close;
+	} else if (!perf_missing_features.bpf_event && evsel->core.attr.bpf_event) {
 		perf_missing_features.bpf_event = true;
 		pr_debug2("switching off bpf_event\n");
 		goto fallback_missing_features;
@@ -2926,6 +2931,8 @@ int perf_evsel__open_strerror(struct evsel *evsel, struct target *target,
 			return scnprintf(msg, size, "clockid feature not supported.");
 		if (perf_missing_features.clockid_wrong)
 			return scnprintf(msg, size, "wrong clockid (%d).", clockid);
+		if (perf_missing_features.aux_output)
+			return scnprintf(msg, size, "The 'aux_output' feature is not supported, update the kernel.");
 		break;
 	default:
 		break;
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 8a316dd54cd0..9cd6e3ae479a 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -184,6 +184,7 @@ struct perf_missing_features {
 	bool group_read;
 	bool ksymbol;
 	bool bpf_event;
+	bool aux_output;
 };
 
 extern struct perf_missing_features perf_missing_features;

  reply	other threads:[~2019-08-13 14:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-06  8:45 [PATCH v6 0/7] perf, intel: Add support for PEBS output to Intel PT Alexander Shishkin
2019-08-06  8:46 ` [PATCH v6 1/7] perf: Allow normal events to output AUX data Alexander Shishkin
2019-08-28 13:30   ` [tip: perf/core] " tip-bot2 for Alexander Shishkin
2019-08-06  8:46 ` [PATCH v6 2/7] perf/x86/intel: Support PEBS output to PT Alexander Shishkin
2019-08-28 13:30   ` [tip: perf/core] " tip-bot2 for Alexander Shishkin
2019-08-06  8:46 ` [PATCH v6 3/7] perf tools: Add aux_output attribute flag Alexander Shishkin
2019-08-15  9:30   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-08-06  8:46 ` [PATCH v6 4/7] perf tools: Add itrace option 'o' to synthesize aux-output events Alexander Shishkin
2019-08-15  9:30   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-08-06  8:46 ` [PATCH v6 5/7] perf intel-pt: Process options for PEBS event synthesis Alexander Shishkin
2019-08-15  9:31   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-08-06  8:46 ` [PATCH v6 6/7] perf tools: Add aux-output config term Alexander Shishkin
2019-08-15  9:32   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-08-06  8:46 ` [PATCH v6 7/7] perf intel-pt: Add brief documentation for PEBS via Intel PT Alexander Shishkin
2019-08-13 13:51   ` Arnaldo Carvalho de Melo
2019-08-13 14:05     ` Alexander Shishkin
2019-08-13 14:14       ` Arnaldo Carvalho de Melo [this message]
2019-08-13 16:21         ` Alexander Shishkin
2019-08-15  9:33   ` [tip:perf/core] " tip-bot for Adrian Hunter
2019-08-06 14:30 ` [PATCH v6 0/7] perf, intel: Add support for PEBS output to " Peter Zijlstra
2019-08-06 14:43   ` Arnaldo Carvalho de Melo

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=20190813141453.GB3754@redhat.com \
    --to=acme@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    /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.