public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: "Wang, Weilin" <weilin.wang@intel.com>
Cc: Ian Rogers <irogers@google.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	"Hunter, Adrian" <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	"linux-perf-users@vger.kernel.org"
	<linux-perf-users@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Taylor, Perry" <perry.taylor@intel.com>,
	"Alt, Samantha" <samantha.alt@intel.com>,
	"Biggers, Caleb" <caleb.biggers@intel.com>
Subject: Re: [RFC PATCH v16 8/8] perf test: Add test for Intel TPEBS counting mode
Date: Thu, 11 Jul 2024 14:45:18 -0700	[thread overview]
Message-ID: <ZpBSbjF3QP81_637@google.com> (raw)
In-Reply-To: <CO6PR11MB5635F6A59A405ED9CB63B8B0EEDB2@CO6PR11MB5635.namprd11.prod.outlook.com>

Hello,

On Tue, Jul 09, 2024 at 06:23:51AM +0000, Wang, Weilin wrote:
> > On Mon, Jul 8, 2024 at 9:58 PM Wang, Weilin <weilin.wang@intel.com>
> > wrote:
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Namhyung Kim <namhyung@kernel.org>
> > > > Sent: Monday, July 8, 2024 9:44 PM
> > > > To: Wang, Weilin <weilin.wang@intel.com>
> > > > Cc: Ian Rogers <irogers@google.com>; Arnaldo Carvalho de Melo
> > > > <acme@kernel.org>; Peter Zijlstra <peterz@infradead.org>; Ingo Molnar
> > > > <mingo@redhat.com>; Alexander Shishkin
> > > > <alexander.shishkin@linux.intel.com>; Jiri Olsa <jolsa@kernel.org>; Hunter,
> > > > Adrian <adrian.hunter@intel.com>; Kan Liang <kan.liang@linux.intel.com>;
> > > > linux-perf-users@vger.kernel.org; linux-kernel@vger.kernel.org; Taylor,
> > Perry
> > > > <perry.taylor@intel.com>; Alt, Samantha <samantha.alt@intel.com>;
> > Biggers,
> > > > Caleb <caleb.biggers@intel.com>
> > > > Subject: Re: [RFC PATCH v16 8/8] perf test: Add test for Intel TPEBS
> > counting
> > > > mode
> > > >
> > > > Hello Weilin,
> > > >
> > > > On Sat, Jul 6, 2024 at 4:30 PM <weilin.wang@intel.com> wrote:
> > > > >
> > > > > From: Weilin Wang <weilin.wang@intel.com>
> > > > >
> > > > > Intel TPEBS sampling mode is supported through perf record. The
> > counting
> > > > mode
> > > > > code uses perf record to capture retire_latency value and use it in metric
> > > > > calculation. This test checks the counting mode code.
> > > > >
> > > > > Signed-off-by: Weilin Wang <weilin.wang@intel.com>
> > > > > ---
> > > > >  .../perf/tests/shell/test_stat_intel_tpebs.sh  | 18
> > ++++++++++++++++++
> > > > >  1 file changed, 18 insertions(+)
> > > > >  create mode 100755 tools/perf/tests/shell/test_stat_intel_tpebs.sh
> > > > >
> > > > > diff --git a/tools/perf/tests/shell/test_stat_intel_tpebs.sh
> > > > b/tools/perf/tests/shell/test_stat_intel_tpebs.sh
> > > > > new file mode 100755
> > > > > index 000000000000..fea8cb1b8367
> > > > > --- /dev/null
> > > > > +++ b/tools/perf/tests/shell/test_stat_intel_tpebs.sh
> > > > > @@ -0,0 +1,18 @@
> > > > > +#!/bin/bash
> > > > > +# test Intel TPEBS counting mode
> > > > > +# SPDX-License-Identifier: GPL-2.0
> > > > > +
> > > > > +set -e
> > > > > +
> > > > > +# Use this event for testing because it should exist in all platforms
> > > > > +event=cache-misses:R
> > > > > +
> > > > > +# Without this cmd option, default value or zero is returned
> > > > > +echo "Testing without --record-tpebs"
> > > > > +result=$(perf stat -e "$event" true 2>&1)
> > > > > +[[ "$result" =~ $event ]] || exit 1
> > > > > +
> > > > > +# In platforms that do not support TPEBS, it should execute without
> > error.
> > > > > +echo "Testing with --record-tpebs"
> > > > > +result=$(perf stat -e "$event" --record-tpebs -a sleep 0.01 2>&1)
> > > >
> > > > It never finishes on my AMD machine.
> > > >
> > > Hi Namhyung,
> > >
> > > Do you see any message while it executes? Is the perf record forked
> > successfully
> > > but failed to return?
> > 
> > I don't know.. all I can get is like below:
> > 
> > $ sudo ./perf test tpebs -vv
> > 121: test Intel TPEBS counting mode:
> > --- start ---
> > test child forked, pid 583475
> > Testing without --record-tpebs
> > Testing with --record-tpebs
> > ^C
> 
> I think the problem is that the forked "perf record" encountered error, which 
> caused the control fifo failed to send a "ACK" back and the PIPE hanged.
> 
> Could you please try out the diff below and see if the test would finish?
> 
> As for the "perf record" error, I think it might because of the fake 
> event(cache-misses:R) cannot be supported in AMD. Could you please test run
> a "perf stat -e cache-misses:R --record-tpebs true" and see if it complains about
> the event?

So I tried the below patch and it worked.

  $ ./perf test -v tpebs
  121: test Intel TPEBS counting mode:
  --- start ---
  test child forked, pid 2190174
  Testing without --record-tpebs
  Testing with --record-tpebs
  ---- end(-1) ----
  121: test Intel TPEBS counting mode                                  : FAILED!

It would be better if it can skip rather than fail on
non-supported machines.

Also I saw this message when I run the command manually.

  $ ./perf stat -e cache-misses:R --record-tpebs -v true
  Control descriptor is not initialized
  Retire_latency of event cache-misses:R is required
  Prepare perf record for retire_latency
  Error:
  The cache-misses:pu event is not supported.
  incompatible file format
  incompatible file format (rerun with -v to learn more)
  failed: did not received an ack
  cache-misses:R: 0 1 1
  
   Performance counter stats for 'true':
  
                   0      cache-misses:R                                                        
  
         0.000004939 seconds time elapsed
  
         0.000000000 seconds user
         0.000000000 seconds sys

I'm not sure why it showed the incompatible file format message.

> 
> diff --git a/tools/perf/util/intel-tpebs.c b/tools/perf/util/intel-tpebs.c
> index a0585a6571b5..5b8e104f36f1 100644
> --- a/tools/perf/util/intel-tpebs.c
> +++ b/tools/perf/util/intel-tpebs.c
> @@ -263,6 +263,7 @@ int tpebs_start(struct evlist *evsel_list)
>         }
>  
>         if (tpebs_event_size > 0) {
> +               struct pollfd pollfd = { .events = POLLIN, };
>                 int control_fd[2], ack_fd[2], len;
>                 char ack_buf[8];
>  
> @@ -297,6 +298,19 @@ int tpebs_start(struct evlist *evsel_list)
>                         goto out;
>                 }
>  
> +               /* wait for an ack */
> +               pollfd.fd = ack_fd[0];
> +
> +               if (!poll(&pollfd, 1, 2000)) {

Is it 2 seconds?  Any specific reason for the value?
At least we need a comment to explain the value (or just saying it's a
random one).

Thanks,
Namhyung


> +                       pr_err("failed: perf record ack timeout\n");
> +                       goto out;
> +               }
> +
> +               if (!(pollfd.revents & POLLIN)) {
> +                       pr_err("failed: did not received an ack\n");
> +                       goto out;
> +               }
> +
>                 ret = read(ack_fd[0], ack_buf, sizeof(ack_buf));
>                 if (ret > 0)
>                         ret = strcmp(ack_buf, "ack\n");
> 
> Thanks,
> Weilin

  reply	other threads:[~2024-07-11 21:45 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-06 23:29 [RFC PATCH v16 0/8] TPEBS counting mode support weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 1/8] perf parse-events: Add a retirement latency modifier weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 2/8] perf data: Allow to use given fd in data->file.fd weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 3/8] perf stat: Fork and launch perf record when perf stat needs to get retire latency value for a metric weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 4/8] perf stat: Plugin retire_lat value from sampled data to evsel weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 5/8] perf vendor events intel: Add MTL metric json files weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 6/8] perf stat: Add command line option for enabling tpebs recording weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 7/8] perf Document: Add TPEBS to Documents weilin.wang
2024-07-06 23:29 ` [RFC PATCH v16 8/8] perf test: Add test for Intel TPEBS counting mode weilin.wang
2024-07-09  4:43   ` Namhyung Kim
2024-07-09  4:58     ` Wang, Weilin
2024-07-09  5:03       ` Namhyung Kim
2024-07-09  6:23         ` Wang, Weilin
2024-07-11 21:45           ` Namhyung Kim [this message]
2024-07-11 22:05             ` Wang, Weilin
2024-07-12  3:36               ` Namhyung Kim

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=ZpBSbjF3QP81_637@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=caleb.biggers@intel.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=perry.taylor@intel.com \
    --cc=peterz@infradead.org \
    --cc=samantha.alt@intel.com \
    --cc=weilin.wang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox