188 lines
8.3 KiB
Diff
188 lines
8.3 KiB
Diff
From 6a06ffa3cbe8297a580a72f5b24c6720adeb87b9 Mon Sep 17 00:00:00 2001
|
|
From: Kan Liang <kan.liang@linux.intel.com>
|
|
Date: Mon, 24 Feb 2020 13:59:24 -0800
|
|
Subject: [PATCH 051/201] perf vendor events intel: Add NO_NMI_WATCHDOG metric
|
|
constraint
|
|
|
|
mainline inclusion
|
|
from mainline-v5.7-rc1
|
|
commit b95fcd2c1c25bd14f55d5d6ab268b3ab00b8a774
|
|
category: feature
|
|
bugzilla: https://gitee.com/openeuler/kernel/issues/I8C0CX
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b95fcd2c1c25bd14f55d5d6ab268b3ab00b8a774
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Add NO_NMI_WATCHDOG metric constraint to Page_Walks_Utilization for Sky Lake
|
|
and Cascade Lake.
|
|
|
|
Committer testing:
|
|
|
|
On a Lenovo T480S, Intel(R) Core(TM) i7-8650U Kaby Lake, that looking at x86's
|
|
mapfile.csv file is a:
|
|
|
|
$ grep -w skylake tools/perf/pmu-events/arch/x86/mapfile.csv
|
|
GenuineIntel-6-[4589]E,v24,skylake,core
|
|
$
|
|
|
|
So uses the constraint added in this patch in this file:
|
|
|
|
tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json
|
|
|
|
Before:
|
|
|
|
# perf stat -a -M Page_Walks_Utilization sleep 2
|
|
|
|
Performance counter stats for 'system wide':
|
|
|
|
<not counted> itlb_misses.walk_pending (0.00%)
|
|
<not counted> dtlb_load_misses.walk_pending (0.00%)
|
|
<not counted> dtlb_store_misses.walk_pending (0.00%)
|
|
<not counted> ept.walk_pending (0.00%)
|
|
<not counted> cycles (0.00%)
|
|
|
|
2.001750514 seconds time elapsed
|
|
|
|
Some events weren't counted. Try disabling the NMI watchdog:
|
|
echo 0 > /proc/sys/kernel/nmi_watchdog
|
|
perf stat ...
|
|
echo 1 > /proc/sys/kernel/nmi_watchdog
|
|
The events in group usually have to be from the same PMU. Try reorganizing the group.
|
|
#
|
|
|
|
After:
|
|
|
|
# perf stat -a -M Page_Walks_Utilization sleep 2
|
|
Splitting metric group Page_Walks_Utilization into standalone metrics.
|
|
Try disabling the NMI watchdog to comply NO_NMI_WATCHDOG metric constraint:
|
|
echo 0 > /proc/sys/kernel/nmi_watchdog
|
|
perf stat ...
|
|
echo 1 > /proc/sys/kernel/nmi_watchdog
|
|
,
|
|
Performance counter stats for 'system wide':
|
|
|
|
36,883,102 itlb_misses.walk_pending # 0.1 Page_Walks_Utilization (79.99%)
|
|
123,104,146 dtlb_load_misses.walk_pending (80.02%)
|
|
13,720,795 dtlb_store_misses.walk_pending (79.99%)
|
|
0 ept.walk_pending (79.99%)
|
|
1,519,948,400 cycles (80.01%)
|
|
|
|
2.002170780 seconds time elapsed
|
|
|
|
#
|
|
|
|
Before and after, if we disable the nmi_watchdog we get:
|
|
|
|
# echo 0 > /proc/sys/kernel/nmi_watchdog
|
|
# perf stat -a -M Page_Walks_Utilization sleep 2
|
|
|
|
Performance counter stats for 'system wide':
|
|
|
|
33,721,658 itlb_misses.walk_pending # 0.1 Page_Walks_Utilization
|
|
84,070,996 dtlb_load_misses.walk_pending
|
|
9,816,071 dtlb_store_misses.walk_pending
|
|
0 ept.walk_pending
|
|
704,920,899 cycles
|
|
|
|
2.002331670 seconds time elapsed
|
|
|
|
#
|
|
|
|
More information about the metric expressions:
|
|
|
|
# perf stat -v -a -M Page_Walks_Utilization sleep 2
|
|
Using CPUID GenuineIntel-6-8E-A
|
|
metric expr ( itlb_misses.walk_pending + dtlb_load_misses.walk_pending + dtlb_store_misses.walk_pending + ept.walk_pending ) / ( 2 * cycles ) for Page_Walks_Utilization
|
|
found event itlb_misses.walk_pending
|
|
found event dtlb_load_misses.walk_pending
|
|
found event dtlb_store_misses.walk_pending
|
|
found event ept.walk_pending
|
|
found event cycles
|
|
adding {itlb_misses.walk_pending,dtlb_load_misses.walk_pending,dtlb_store_misses.walk_pending,ept.walk_pending,cycles}:W
|
|
-> cpu/umask=0x10,(null)=0x186a3,event=0x85/
|
|
-> cpu/umask=0x10,(null)=0x1e8483,event=0x8/
|
|
-> cpu/umask=0x10,(null)=0x1e8483,event=0x49/
|
|
-> cpu/umask=0x10,(null)=0x1e8483,event=0x4f/
|
|
itlb_misses.walk_pending: 8085772 16010162799 16010162799
|
|
dtlb_load_misses.walk_pending: 28134579 16010162799 16010162799
|
|
dtlb_store_misses.walk_pending: 7276535 16010162799 16010162799
|
|
ept.walk_pending: 2 16010162799 16010162799
|
|
cycles: 315140605 16010162799 16010162799
|
|
|
|
Performance counter stats for 'system wide':
|
|
|
|
8,085,772 itlb_misses.walk_pending # 0.1 Page_Walks_Utilization
|
|
28,134,579 dtlb_load_misses.walk_pending
|
|
7,276,535 dtlb_store_misses.walk_pending
|
|
2 ept.walk_pending
|
|
315,140,605 cycles
|
|
|
|
2.002333181 seconds time elapsed
|
|
|
|
#
|
|
|
|
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
|
|
Acked-by: Jiri Olsa <jolsa@redhat.com>
|
|
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Cc: Andi Kleen <ak@linux.intel.com>
|
|
Cc: Jin Yao <yao.jin@linux.intel.com>
|
|
Cc: Mark Rutland <mark.rutland@arm.com>
|
|
Cc: Namhyung Kim <namhyung@kernel.org>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
|
|
Link: http://lore.kernel.org/lkml/1582581564-184429-6-git-send-email-kan.liang@linux.intel.com
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
|
|
---
|
|
tools/perf/pmu-events/arch/x86/cascadelakex/clx-metrics.json | 3 ++-
|
|
tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json | 3 ++-
|
|
tools/perf/pmu-events/arch/x86/skylakex/skx-metrics.json | 3 ++-
|
|
3 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/tools/perf/pmu-events/arch/x86/cascadelakex/clx-metrics.json b/tools/perf/pmu-events/arch/x86/cascadelakex/clx-metrics.json
|
|
index 36c903faed0b..13a703c91db8 100644
|
|
--- a/tools/perf/pmu-events/arch/x86/cascadelakex/clx-metrics.json
|
|
+++ b/tools/perf/pmu-events/arch/x86/cascadelakex/clx-metrics.json
|
|
@@ -87,7 +87,8 @@
|
|
"BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
|
|
"MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * (( CPU_CLK_UNHALTED.THREAD_ANY / 2 ) if #SMT_on else cycles) )",
|
|
"MetricGroup": "TLB",
|
|
- "MetricName": "Page_Walks_Utilization"
|
|
+ "MetricName": "Page_Walks_Utilization",
|
|
+ "MetricConstraint": "NO_NMI_WATCHDOG"
|
|
},
|
|
{
|
|
"BriefDescription": "Average CPU Utilization",
|
|
diff --git a/tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json b/tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json
|
|
index 71e9737f4614..91a2422d2ffc 100644
|
|
--- a/tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json
|
|
+++ b/tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json
|
|
@@ -87,7 +87,8 @@
|
|
"BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
|
|
"MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * (( CPU_CLK_UNHALTED.THREAD_ANY / 2 ) if #SMT_on else cycles) )",
|
|
"MetricGroup": "TLB",
|
|
- "MetricName": "Page_Walks_Utilization"
|
|
+ "MetricName": "Page_Walks_Utilization",
|
|
+ "MetricConstraint": "NO_NMI_WATCHDOG"
|
|
},
|
|
{
|
|
"BriefDescription": "Average CPU Utilization",
|
|
diff --git a/tools/perf/pmu-events/arch/x86/skylakex/skx-metrics.json b/tools/perf/pmu-events/arch/x86/skylakex/skx-metrics.json
|
|
index 71e9737f4614..91a2422d2ffc 100644
|
|
--- a/tools/perf/pmu-events/arch/x86/skylakex/skx-metrics.json
|
|
+++ b/tools/perf/pmu-events/arch/x86/skylakex/skx-metrics.json
|
|
@@ -87,7 +87,8 @@
|
|
"BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
|
|
"MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * (( CPU_CLK_UNHALTED.THREAD_ANY / 2 ) if #SMT_on else cycles) )",
|
|
"MetricGroup": "TLB",
|
|
- "MetricName": "Page_Walks_Utilization"
|
|
+ "MetricName": "Page_Walks_Utilization",
|
|
+ "MetricConstraint": "NO_NMI_WATCHDOG"
|
|
},
|
|
{
|
|
"BriefDescription": "Average CPU Utilization",
|
|
--
|
|
2.27.0
|
|
|