All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Garry <john.garry@huawei.com>
To: Ian Rogers <irogers@google.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
	Yonghong Song <yhs@fb.com>, Andrii Nakryiko <andriin@fb.com>,
	John Fastabend <john.fastabend@gmail.com>,
	KP Singh <kpsingh@chromium.org>, Kajol Jain <kjain@linux.ibm.com>,
	Andi Kleen <ak@linux.intel.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Kim Phillips <kim.phillips@amd.com>,
	<linux-kernel@vger.kernel.org>
Cc: <netdev@vger.kernel.org>, <bpf@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>,
	Stephane Eranian <eranian@google.com>
Subject: Issue of metrics for multiple uncore PMUs (was Re: [RFC PATCH v2 23/23] perf metricgroup: remove duped metric group events)
Date: Fri, 2 Oct 2020 12:57:04 +0100	[thread overview]
Message-ID: <e3c4f253-e1ed-32f6-c252-e8657968fc42@huawei.com> (raw)
In-Reply-To: <20200507140819.126960-24-irogers@google.com>

On 07/05/2020 15:08, Ian Rogers wrote:

Hi Ian,

I was wondering if you ever tested commit 2440689d62e9 ("perf 
metricgroup: Remove duped metric group events") for when we have a 
metric which aliases multiple instances of the same uncore PMU in the 
system?

I have been rebasing some of my arm64 perf work to v5.9-rc7, and find an 
issue where find_evsel_group() fails for the uncore metrics under the 
condition mentioned above.

Unfortunately I don't have an x86 machine to which this test applies. 
However, as an experiment, I added a test metric to my broadwell JSON:

diff --git a/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json 
b/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json
index 8cdc7c13dc2a..fc6d9adf996a 100644
--- a/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json
+++ b/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json
@@ -348,5 +348,11 @@
         "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
         "MetricGroup": "Power",
         "MetricName": "C7_Pkg_Residency"
+    },
+    {
+        "BriefDescription": "test metric",
+        "MetricExpr": "UNC_CBO_XSNP_RESPONSE.MISS_XCORE * 
UNC_CBO_XSNP_RESPONSE.MISS_EVICTION",
+        "MetricGroup": "Test",
+        "MetricName": "test_metric_inc"
     }
]


And get this:

john@localhost:~/linux/tools/perf> sudo ./perf stat -v -M 
test_metric_inc sleep 1
Using CPUID GenuineIntel-6-3D-4
metric expr unc_cbo_xsnp_response.miss_xcore * 
unc_cbo_xsnp_response.miss_eviction for test_metric_inc
found event unc_cbo_xsnp_response.miss_eviction
found event unc_cbo_xsnp_response.miss_xcore
adding 
{unc_cbo_xsnp_response.miss_eviction,unc_cbo_xsnp_response.miss_xcore}:W
unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_1/umask=0x81,event=0x22/
unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_0/umask=0x81,event=0x22/
unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_1/umask=0x41,event=0x22/
unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_0/umask=0x41,event=0x22/
Cannot resolve test_metric_inc: unc_cbo_xsnp_response.miss_xcore * 
unc_cbo_xsnp_response.miss_eviction
task-clock: 688876 688876 688876
context-switches: 2 688876 688876
cpu-migrations: 0 688876 688876
page-faults: 69 688876 688876
cycles: 2101719 695690 695690
instructions: 1180534 695690 695690
branches: 249450 695690 695690
branch-misses: 10815 695690 695690

Performance counter stats for 'sleep 1':

              0.69 msec task-clock                #    0.001 CPUs 
utilized
                 2      context-switches          #    0.003 M/sec 

                 0      cpu-migrations            #    0.000 K/sec 

                69      page-faults               #    0.100 M/sec 

         2,101,719      cycles                    #    3.051 GHz 

         1,180,534      instructions              #    0.56  insn per 
cycle
           249,450      branches                  #  362.112 M/sec 

            10,815      branch-misses             #    4.34% of all 
branches

       1.001177693 seconds time elapsed

       0.001149000 seconds user
       0.000000000 seconds sys


john@localhost:~/linux/tools/perf>


Any idea what is going wrong here, before I have to dive in? The issue 
seems to be this named commit.

Thanks,
John

> A metric group contains multiple metrics. These metrics may use the same
> events. If metrics use separate events then it leads to more
> multiplexing and overall metric counts fail to sum to 100%.
> Modify how metrics are associated with events so that if the events in
> an earlier group satisfy the current metric, the same events are used.
> A record of used events is kept and at the end of processing unnecessary
> events are eliminated.
> 
> Before:

WARNING: multiple messages have this Message-ID (diff)
From: John Garry <john.garry@huawei.com>
To: Ian Rogers <irogers@google.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
	Yonghong Song <yhs@fb.com>, Andrii Nakryiko <andriin@fb.com>,
	John Fastabend <john.fastabend@gmail.com>,
	KP Singh <kpsingh@chromium.org>, Kajol Jain <kjain@linux.ibm.com>,
	Andi Kleen <ak@linux.intel.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	Kan Liang <kan.liang@linux.intel.com>, Cong Wang <xi>
Cc: netdev@vger.kernel.org, bpf@vger.kernel.org,
	linux-perf-users@vger.kernel.org,
	Stephane Eranian <eranian@google.com>
Subject: Issue of metrics for multiple uncore PMUs (was Re: [RFC PATCH v2 23/23] perf metricgroup: remove duped metric group events)
Date: Fri, 2 Oct 2020 12:57:04 +0100	[thread overview]
Message-ID: <e3c4f253-e1ed-32f6-c252-e8657968fc42@huawei.com> (raw)
In-Reply-To: <20200507140819.126960-24-irogers@google.com>

On 07/05/2020 15:08, Ian Rogers wrote:

Hi Ian,

I was wondering if you ever tested commit 2440689d62e9 ("perf 
metricgroup: Remove duped metric group events") for when we have a 
metric which aliases multiple instances of the same uncore PMU in the 
system?

I have been rebasing some of my arm64 perf work to v5.9-rc7, and find an 
issue where find_evsel_group() fails for the uncore metrics under the 
condition mentioned above.

Unfortunately I don't have an x86 machine to which this test applies. 
However, as an experiment, I added a test metric to my broadwell JSON:

diff --git a/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json 
b/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json
index 8cdc7c13dc2a..fc6d9adf996a 100644
--- a/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json
+++ b/tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json
@@ -348,5 +348,11 @@
         "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
         "MetricGroup": "Power",
         "MetricName": "C7_Pkg_Residency"
+    },
+    {
+        "BriefDescription": "test metric",
+        "MetricExpr": "UNC_CBO_XSNP_RESPONSE.MISS_XCORE * 
UNC_CBO_XSNP_RESPONSE.MISS_EVICTION",
+        "MetricGroup": "Test",
+        "MetricName": "test_metric_inc"
     }
]


And get this:

john@localhost:~/linux/tools/perf> sudo ./perf stat -v -M 
test_metric_inc sleep 1
Using CPUID GenuineIntel-6-3D-4
metric expr unc_cbo_xsnp_response.miss_xcore * 
unc_cbo_xsnp_response.miss_eviction for test_metric_inc
found event unc_cbo_xsnp_response.miss_eviction
found event unc_cbo_xsnp_response.miss_xcore
adding 
{unc_cbo_xsnp_response.miss_eviction,unc_cbo_xsnp_response.miss_xcore}:W
unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_1/umask=0x81,event=0x22/
unc_cbo_xsnp_response.miss_eviction -> uncore_cbox_0/umask=0x81,event=0x22/
unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_1/umask=0x41,event=0x22/
unc_cbo_xsnp_response.miss_xcore -> uncore_cbox_0/umask=0x41,event=0x22/
Cannot resolve test_metric_inc: unc_cbo_xsnp_response.miss_xcore * 
unc_cbo_xsnp_response.miss_eviction
task-clock: 688876 688876 688876
context-switches: 2 688876 688876
cpu-migrations: 0 688876 688876
page-faults: 69 688876 688876
cycles: 2101719 695690 695690
instructions: 1180534 695690 695690
branches: 249450 695690 695690
branch-misses: 10815 695690 695690

Performance counter stats for 'sleep 1':

              0.69 msec task-clock                #    0.001 CPUs 
utilized
                 2      context-switches          #    0.003 M/sec 

                 0      cpu-migrations            #    0.000 K/sec 

                69      page-faults               #    0.100 M/sec 

         2,101,719      cycles                    #    3.051 GHz 

         1,180,534      instructions              #    0.56  insn per 
cycle
           249,450      branches                  #  362.112 M/sec 

            10,815      branch-misses             #    4.34% of all 
branches

       1.001177693 seconds time elapsed

       0.001149000 seconds user
       0.000000000 seconds sys


john@localhost:~/linux/tools/perf>


Any idea what is going wrong here, before I have to dive in? The issue 
seems to be this named commit.

Thanks,
John

> A metric group contains multiple metrics. These metrics may use the same
> events. If metrics use separate events then it leads to more
> multiplexing and overall metric counts fail to sum to 100%.
> Modify how metrics are associated with events so that if the events in
> an earlier group satisfy the current metric, the same events are used.
> A record of used events is kept and at the end of processing unnecessary
> events are eliminated.
> 
> Before:

  reply	other threads:[~2020-10-02 12:00 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-07 14:07 [RFC PATCH v2 00/23] Share events between metrics Ian Rogers
2020-05-07 14:07 ` Ian Rogers
2020-05-07 14:07 ` [RFC PATCH v2 01/23] perf expr: unlimited escaped characters in a symbol Ian Rogers
2020-05-07 14:07   ` Ian Rogers
2020-05-07 14:07 ` [RFC PATCH v2 02/23] perf metrics: fix parse errors in cascade lake metrics Ian Rogers
2020-05-07 14:07   ` Ian Rogers
2020-05-07 14:07 ` [RFC PATCH v2 03/23] perf metrics: fix parse errors in skylake metrics Ian Rogers
2020-05-07 14:07   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 04/23] perf expr: allow ',' to be an other token Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 05/23] perf expr: increase max other Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 06/23] perf expr: parse numbers as doubles Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 07/23] perf expr: debug lex if debugging yacc Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 08/23] perf metrics: fix parse errors in power8 metrics Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 09/23] perf metrics: fix parse errors in power9 metrics Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 10/23] perf expr: print a debug message for division by zero Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 11/23] perf parse-events: expand add PMU error/verbose messages Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 12/23] perf test: improve pmu event metric testing Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 13/23] lib/bpf hashmap: increase portability Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 14/23] libbpf: Fix memory leak and possible double-free in hashmap__clear Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 15/23] perf expr: fix memory leaks in bison Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 16/23] perf evsel: fix 2 memory leaks Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 17/23] perf expr: migrate expr ids table to libbpf's hashmap Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 18/23] perf metricgroup: change evlist_used to a bitmap Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 19/23] perf metricgroup: free metric_events on error Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 20/23] perf metricgroup: always place duration_time last Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 21/23] perf metricgroup: delay events string creation Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 22/23] perf metricgroup: order event groups by size Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-05-07 14:08 ` [RFC PATCH v2 23/23] perf metricgroup: remove duped metric group events Ian Rogers
2020-05-07 14:08   ` Ian Rogers
2020-10-02 11:57   ` John Garry [this message]
2020-10-02 11:57     ` Issue of metrics for multiple uncore PMUs (was Re: [RFC PATCH v2 23/23] perf metricgroup: remove duped metric group events) John Garry
2020-10-02 20:46     ` Ian Rogers
2020-10-02 20:46       ` Ian Rogers
2020-10-05 10:03       ` John Garry
2020-10-05 10:03         ` John Garry
2020-10-05 16:28         ` Ian Rogers
2020-10-05 16:28           ` Ian Rogers
2020-10-05 18:05           ` John Garry
2020-10-05 18:05             ` John Garry
2020-10-06 14:19             ` John Garry
2020-10-06 14:19               ` John Garry
2020-10-06 14:42               ` Ian Rogers
2020-10-06 14:42                 ` Ian Rogers

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=e3c4f253-e1ed-32f6-c252-e8657968fc42@huawei.com \
    --to=john.garry@huawei.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andriin@fb.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=kafai@fb.com \
    --cc=kan.liang@linux.intel.com \
    --cc=kim.phillips@amd.com \
    --cc=kjain@linux.ibm.com \
    --cc=kpsingh@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=songliubraving@fb.com \
    --cc=xiyou.wangcong@gmail.com \
    --cc=yao.jin@linux.intel.com \
    --cc=yhs@fb.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.