| From ceb6763e66f06d0d49a80784aa06d4bc71a214a2 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 6 Apr 2021 16:59:41 -0500 |
| Subject: perf vendor events amd: Fix broken L2 Cache Hits from L2 HWPF metric |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com> |
| |
| [ Upstream commit 86c2bc3da769124e3e856b6e9457be3667c30919 ] |
| |
| Commit 08ed77e414ab2342 ("perf vendor events amd: Add recommended events") |
| added the hits event "L2 Cache Hits from L2 HWPF" with the same metric |
| expression as the accesses event "L2 Cache Accesses from L2 HWPF": |
| |
| $ perf list --details |
| ... |
| l2_cache_accesses_from_l2_hwpf |
| [L2 Cache Accesses from L2 HWPF] |
| [l2_pf_hit_l2 + l2_pf_miss_l2_hit_l3 + l2_pf_miss_l2_l3] |
| l2_cache_hits_from_l2_hwpf |
| [L2 Cache Hits from L2 HWPF] |
| [l2_pf_hit_l2 + l2_pf_miss_l2_hit_l3 + l2_pf_miss_l2_l3] |
| ... |
| |
| This was wrong and led to counting hits the same as accesses. Section |
| 2.1.15.2 "Performance Measurement" of "PPR for AMD Family 17h Model 31h |
| B0 - 55803 Rev 0.54 - Sep 12, 2019", documents the hits event with |
| EventCode 0x70 which is the same as l2_pf_hit_l2. |
| |
| Fix this, and massage the description for l2_pf_hit_l2 as the hits event |
| is now the duplicate of l2_pf_hit_l2. AMD recommends using the recommended |
| event over other events if the duplicate exists and maintain both for |
| consistency. Hence, l2_cache_hits_from_l2_hwpf should override |
| l2_pf_hit_l2. |
| |
| Before: |
| |
| # perf stat -M l2_cache_accesses_from_l2_hwpf,l2_cache_hits_from_l2_hwpf sleep 1 |
| |
| Performance counter stats for 'sleep 1': |
| |
| 1,436 l2_pf_miss_l2_l3 # 11114.00 l2_cache_accesses_from_l2_hwpf |
| # 11114.00 l2_cache_hits_from_l2_hwpf |
| 4,482 l2_pf_hit_l2 |
| 5,196 l2_pf_miss_l2_hit_l3 |
| |
| 1.001765339 seconds time elapsed |
| |
| After: |
| |
| # perf stat -M l2_cache_accesses_from_l2_hwpf sleep 1 |
| |
| Performance counter stats for 'sleep 1': |
| |
| 1,477 l2_pf_miss_l2_l3 # 10442.00 l2_cache_accesses_from_l2_hwpf |
| 3,978 l2_pf_hit_l2 |
| 4,987 l2_pf_miss_l2_hit_l3 |
| |
| 1.001491186 seconds time elapsed |
| |
| # perf stat -e l2_cache_hits_from_l2_hwpf sleep 1 |
| |
| Performance counter stats for 'sleep 1': |
| |
| 3,983 l2_cache_hits_from_l2_hwpf |
| |
| 1.001329970 seconds time elapsed |
| |
| Note the difference in performance counter values for the accesses |
| versus the hits after the fix, and the hits event now counting the same |
| as l2_pf_hit_l2. |
| |
| Fixes: 08ed77e414ab ("perf vendor events amd: Add recommended events") |
| Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=206537 |
| Reviewed-by: Robert Richter <rrichter@amd.com> |
| Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com> |
| Tested-by: Arnaldo Carvalho de Melo <acme@kernel.org> # On a 3900X |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: Ian Rogers <irogers@google.com> |
| Cc: Ingo Molnar <mingo@redhat.com> |
| Cc: Jiri Olsa <jolsa@redhat.com> |
| Cc: Kim Phillips <kim.phillips@amd.com> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Martin Liลกka <mliska@suse.cz> |
| Cc: Michael Petlan <mpetlan@redhat.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Vijay Thakkar <vijaythakkar@me.com> |
| Cc: linux-perf-users@vger.kernel.org |
| Link: https://lore.kernel.org/r/20210406215944.113332-2-Smita.KoralahalliChannabasappa@amd.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/perf/pmu-events/arch/x86/amdzen1/cache.json | 2 +- |
| tools/perf/pmu-events/arch/x86/amdzen1/recommended.json | 6 +++--- |
| tools/perf/pmu-events/arch/x86/amdzen2/cache.json | 2 +- |
| tools/perf/pmu-events/arch/x86/amdzen2/recommended.json | 6 +++--- |
| 4 files changed, 8 insertions(+), 8 deletions(-) |
| |
| diff --git a/tools/perf/pmu-events/arch/x86/amdzen1/cache.json b/tools/perf/pmu-events/arch/x86/amdzen1/cache.json |
| index 4ea7ec4f496e..008f1683e540 100644 |
| --- a/tools/perf/pmu-events/arch/x86/amdzen1/cache.json |
| +++ b/tools/perf/pmu-events/arch/x86/amdzen1/cache.json |
| @@ -275,7 +275,7 @@ |
| { |
| "EventName": "l2_pf_hit_l2", |
| "EventCode": "0x70", |
| - "BriefDescription": "L2 prefetch hit in L2.", |
| + "BriefDescription": "L2 prefetch hit in L2. Use l2_cache_hits_from_l2_hwpf instead.", |
| "UMask": "0xff" |
| }, |
| { |
| diff --git a/tools/perf/pmu-events/arch/x86/amdzen1/recommended.json b/tools/perf/pmu-events/arch/x86/amdzen1/recommended.json |
| index 2cfe2d2f3bfd..3c954543d1ae 100644 |
| --- a/tools/perf/pmu-events/arch/x86/amdzen1/recommended.json |
| +++ b/tools/perf/pmu-events/arch/x86/amdzen1/recommended.json |
| @@ -79,10 +79,10 @@ |
| "UMask": "0x70" |
| }, |
| { |
| - "MetricName": "l2_cache_hits_from_l2_hwpf", |
| + "EventName": "l2_cache_hits_from_l2_hwpf", |
| + "EventCode": "0x70", |
| "BriefDescription": "L2 Cache Hits from L2 HWPF", |
| - "MetricExpr": "l2_pf_hit_l2 + l2_pf_miss_l2_hit_l3 + l2_pf_miss_l2_l3", |
| - "MetricGroup": "l2_cache" |
| + "UMask": "0xff" |
| }, |
| { |
| "EventName": "l3_accesses", |
| diff --git a/tools/perf/pmu-events/arch/x86/amdzen2/cache.json b/tools/perf/pmu-events/arch/x86/amdzen2/cache.json |
| index f61b982f83ca..8ba84a48188d 100644 |
| --- a/tools/perf/pmu-events/arch/x86/amdzen2/cache.json |
| +++ b/tools/perf/pmu-events/arch/x86/amdzen2/cache.json |
| @@ -205,7 +205,7 @@ |
| { |
| "EventName": "l2_pf_hit_l2", |
| "EventCode": "0x70", |
| - "BriefDescription": "L2 prefetch hit in L2.", |
| + "BriefDescription": "L2 prefetch hit in L2. Use l2_cache_hits_from_l2_hwpf instead.", |
| "UMask": "0xff" |
| }, |
| { |
| diff --git a/tools/perf/pmu-events/arch/x86/amdzen2/recommended.json b/tools/perf/pmu-events/arch/x86/amdzen2/recommended.json |
| index 2ef91e25e661..1c624cee9ef4 100644 |
| --- a/tools/perf/pmu-events/arch/x86/amdzen2/recommended.json |
| +++ b/tools/perf/pmu-events/arch/x86/amdzen2/recommended.json |
| @@ -79,10 +79,10 @@ |
| "UMask": "0x70" |
| }, |
| { |
| - "MetricName": "l2_cache_hits_from_l2_hwpf", |
| + "EventName": "l2_cache_hits_from_l2_hwpf", |
| + "EventCode": "0x70", |
| "BriefDescription": "L2 Cache Hits from L2 HWPF", |
| - "MetricExpr": "l2_pf_hit_l2 + l2_pf_miss_l2_hit_l3 + l2_pf_miss_l2_l3", |
| - "MetricGroup": "l2_cache" |
| + "UMask": "0xff" |
| }, |
| { |
| "EventName": "l3_accesses", |
| -- |
| 2.30.2 |
| |