public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Liang, Kan" <kan.liang@linux.intel.com>
To: Dapeng Mi <dapeng1.mi@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	Yongwei Ma <yongwei.ma@intel.com>,
	Dapeng Mi <dapeng1.mi@intel.com>
Subject: Re: [Patch v3 3/5] perf x86/topdown: Don't move topdown metric events in group
Date: Mon, 12 Aug 2024 11:37:42 -0400	[thread overview]
Message-ID: <83cfa057-1791-4aab-ace8-fb0ad5a607b7@linux.intel.com> (raw)
In-Reply-To: <20240712170339.185824-4-dapeng1.mi@linux.intel.com>



On 2024-07-12 1:03 p.m., Dapeng Mi wrote:
> when running below perf command, we say error is reported.
> 
> perf record -e "{slots,instructions,topdown-retiring}:S" -vv -C0 sleep 1
> 
> ------------------------------------------------------------
> perf_event_attr:
>   type                             4 (cpu)
>   size                             168
>   config                           0x400 (slots)
>   sample_type                      IP|TID|TIME|READ|CPU|PERIOD|IDENTIFIER
>   read_format                      ID|GROUP|LOST
>   disabled                         1
>   sample_id_all                    1
>   exclude_guest                    1
> ------------------------------------------------------------
> sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 5
> ------------------------------------------------------------
> perf_event_attr:
>   type                             4 (cpu)
>   size                             168
>   config                           0x8000 (topdown-retiring)
>   { sample_period, sample_freq }   4000
>   sample_type                      IP|TID|TIME|READ|CPU|PERIOD|IDENTIFIER
>   read_format                      ID|GROUP|LOST
>   freq                             1
>   sample_id_all                    1
>   exclude_guest                    1
> ------------------------------------------------------------
> sys_perf_event_open: pid -1  cpu 0  group_fd 5  flags 0x8
> sys_perf_event_open failed, error -22
> 
> Error:
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (topdown-retiring).
> 
> The reason of error is that the events are regrouped and
> topdown-retiring event is moved to closely after the slots event and
> topdown-retiring event needs to do the sampling, but Intel PMU driver
> doesn't support to sample topdown metrics events.
> 
> For topdown metrics events, it just requires to be in a group which has
> slots event as leader. It doesn't require topdown metrics event must be
> closely after slots event. Thus it's a overkill to move topdown metrics
> event closely after slots event in events regrouping and furtherly cause
> the above issue.
> 
> Thus don't move topdown metrics events forward if they are already in a
> group.
> 
> Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
> ---
>  tools/perf/arch/x86/util/evlist.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/arch/x86/util/evlist.c b/tools/perf/arch/x86/util/evlist.c
> index 332e8907f43e..6ae044f21843 100644
> --- a/tools/perf/arch/x86/util/evlist.c
> +++ b/tools/perf/arch/x86/util/evlist.c
> @@ -85,7 +85,12 @@ int arch_evlist__cmp(const struct evsel *lhs, const struct evsel *rhs)
>  		/* Followed by topdown events. */
>  		if (arch_is_topdown_metrics(lhs) && !arch_is_topdown_metrics(rhs))
>  			return -1;
> -		if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs))
> +		/*
> +		 * Move topdown events forward only when topdown events
> +		 * are not in same group with previous event.
> +		 */

Do you mean this case?

perf stat -e '{slots,branches},topdown-retiring' -C0 sleep 1
WARNING: events were regrouped to match PMUs

 Performance counter stats for 'CPU(s) 0':

        22,568,316      slots
           569,904      branches
         3,805,637      topdown-retiring


But if I add one more event before topdown-retiring, it seems break again.

perf stat -e '{slots,branches},cycles,topdown-retiring' -C0 sleep 1

 Performance counter stats for 'CPU(s) 0':

        25,218,108      slots
           647,598      branches
         4,345,121      cycles
   <not supported>      topdown-retiring

I'm not asking to support all the above cases. I just try to understand
which cases you plan to support.

Can you please add some comments or update the document to clearly show
which format is supported, which format will be automatically adjusted
by the tool, and which format will be error out?

We should also need test cases for all the supported formats, not just
the standard one.

Thanks,
Kan

> +		if (!arch_is_topdown_metrics(lhs) && arch_is_topdown_metrics(rhs) &&
> +		    lhs->core.leader != rhs->core.leader)
>  			return 1;
>  	}
>  

  reply	other threads:[~2024-08-12 15:37 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-12 17:03 [Patch v3 0/5] Bug fixes on topdown events reordering Dapeng Mi
2024-07-12 17:03 ` [Patch v3 1/5] perf x86/topdown: Complete topdown slots/metrics events check Dapeng Mi
2024-08-12 13:41   ` Arnaldo Carvalho de Melo
2024-08-13  6:54     ` Mi, Dapeng
2024-08-15  6:42     ` Mi, Dapeng
2024-07-12 17:03 ` [Patch v3 2/5] perf x86/topdown: Correct leader selection with sample_read enabled Dapeng Mi
2024-08-12 13:42   ` Arnaldo Carvalho de Melo
2024-08-12 14:37     ` Liang, Kan
2024-08-12 15:18   ` Liang, Kan
2024-08-13  7:15     ` Mi, Dapeng
2024-07-12 17:03 ` [Patch v3 3/5] perf x86/topdown: Don't move topdown metric events in group Dapeng Mi
2024-08-12 15:37   ` Liang, Kan [this message]
2024-08-13  7:30     ` Mi, Dapeng
2024-07-12 17:03 ` [Patch v3 4/5] perf tests: Add leader sampling test in record tests Dapeng Mi
2024-07-12 17:03 ` [Patch v3 5/5] perf tests: Add topdown events counting and sampling tests Dapeng Mi
2024-08-12  5:43 ` [Patch v3 0/5] Bug fixes on topdown events reordering Mi, Dapeng

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=83cfa057-1791-4aab-ace8-fb0ad5a607b7@linux.intel.com \
    --to=kan.liang@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=dapeng1.mi@intel.com \
    --cc=dapeng1.mi@linux.intel.com \
    --cc=irogers@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=yongwei.ma@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