mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: Perry Taylor <perry.taylor@intel.com>,
	Samantha Alt <samantha.alt@intel.com>,
	 Caleb Biggers <caleb.biggers@intel.com>,
	Weilin Wang <weilin.wang@intel.com>,
	 Edward Baker <edward.baker@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	 Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	 Mark Rutland <mark.rutland@arm.com>,
	 Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,  Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	 James Clark <james.clark@arm.com>,
	John Garry <john.g.garry@oracle.com>,
	 linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	 Stephane Eranian <eranian@google.com>
Subject: [PATCH v2 17/20] perf jevents: Add dir breakdown metrics for Intel
Date: Fri,  1 Mar 2024 10:55:56 -0800	[thread overview]
Message-ID: <20240301185559.2661241-18-irogers@google.com> (raw)
In-Reply-To: <20240301185559.2661241-1-irogers@google.com>

Breakdown directory hit, misses and requests. The implementation uses
the M2M and CHA PMUs present in server models broadwellde, broadwellx
cascadelakex, emeraldrapids, icelakex, sapphirerapids and skylakex.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/pmu-events/intel_metrics.py | 36 ++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events/intel_metrics.py
index 76e71f11a579..8086aef3557a 100755
--- a/tools/perf/pmu-events/intel_metrics.py
+++ b/tools/perf/pmu-events/intel_metrics.py
@@ -784,6 +784,41 @@ def IntelLdSt() -> Optional[MetricGroup]:
   ], description = "Breakdown of load/store instructions")
 
 
+def UncoreDir() -> Optional[MetricGroup]:
+  try:
+    m2m_upd = Event("UNC_M2M_DIRECTORY_UPDATE.ANY")
+    m2m_hits = Event("UNC_M2M_DIRECTORY_HIT.DIRTY_I")
+    # Turn the umask into a ANY rather than DIRTY_I filter.
+    m2m_hits.name += "/umask=0xFF,name=UNC_M2M_DIRECTORY_HIT.ANY/"
+    m2m_miss = Event("UNC_M2M_DIRECTORY_MISS.DIRTY_I")
+    # Turn the umask into a ANY rather than DIRTY_I filter.
+    m2m_miss.name += "/umask=0xFF,name=UNC_M2M_DIRECTORY_MISS.ANY/"
+    cha_upd = Event("UNC_CHA_DIR_UPDATE.HA")
+    # Turn the umask into a ANY rather than HA filter.
+    cha_upd.name += "/umask=3,name=UNC_CHA_DIR_UPDATE.ANY/"
+  except:
+    return None
+
+  m2m_total = m2m_hits + m2m_miss
+  upd = m2m_upd + cha_upd # in cache lines
+  upd_r = upd / interval_sec
+  look_r = m2m_total / interval_sec
+
+  scale = 64 / 1_000_000 # Cache lines to MB
+  return MetricGroup("dir", [
+      Metric("dir_lookup_rate", "",
+             d_ratio(m2m_total, interval_sec), "requests/s"),
+      Metric("dir_lookup_hits", "",
+             d_ratio(m2m_hits, m2m_total), "100%"),
+      Metric("dir_lookup_misses", "",
+             d_ratio(m2m_miss, m2m_total), "100%"),
+      Metric("dir_update_requests", "",
+             d_ratio(m2m_upd + cha_upd, interval_sec), "requests/s"),
+      Metric("dir_update_bw", "",
+             d_ratio(m2m_upd + cha_upd, interval_sec), f"{scale}MB/s"),
+  ])
+
+
 def UncoreMem() -> Optional[MetricGroup]:
   try:
     loc_rds = Event("UNC_CHA_REQUESTS.READS_LOCAL", "UNC_H_REQUESTS.READS_LOCAL")
@@ -885,6 +920,7 @@ all_metrics = MetricGroup("", [
     IntelMlp(),
     IntelPorts(),
     IntelSwpf(),
+    UncoreDir(),
     UncoreMem(),
     UncoreMemBw(),
 ])
-- 
2.44.0.278.ge034bb2e1d-goog


  parent reply	other threads:[~2024-03-01 18:56 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-01 18:55 [PATCH v2 00/20] Python generated Intel metrics Ian Rogers
2024-03-01 18:55 ` [PATCH v2 01/20] perf jevents: Add RAPL metrics for all Intel models Ian Rogers
2024-03-01 18:55 ` [PATCH v2 02/20] perf jevents: Add idle metric for " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 03/20] perf jevents: Add smi metric group " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 04/20] perf jevents: Add tsx " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 05/20] perf jevents: Add CheckPmu to see if a PMU is in loaded json events Ian Rogers
2024-03-01 18:55 ` [PATCH v2 06/20] perf jevents: Add br metric group for branch statistics on Intel Ian Rogers
2024-03-01 18:55 ` [PATCH v2 07/20] perf jevents: Add software prefetch (swpf) metric group for Intel Ian Rogers
2024-03-01 18:55 ` [PATCH v2 08/20] perf jevents: Add ports metric group giving utilization on Intel Ian Rogers
2024-03-01 18:55 ` [PATCH v2 09/20] perf jevents: Add L2 metrics for Intel Ian Rogers
2024-03-01 18:55 ` [PATCH v2 10/20] perf jevents: Add load store breakdown metrics ldst " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 11/20] perf jevents: Add ILP metrics " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 12/20] perf jevents: Add context switch " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 13/20] perf jevents: Add FPU " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 14/20] perf jevents: Add Miss Level Parallelism (MLP) metric " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 15/20] perf jevents: Add mem_bw " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 16/20] perf jevents: Add local/remote "mem" breakdown metrics " Ian Rogers
2024-03-01 18:55 ` Ian Rogers [this message]
2024-03-01 18:55 ` [PATCH v2 18/20] perf jevents: Add C-State metrics from the PCU PMU " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 19/20] perf jevents: Add local/remote miss latency metrics " Ian Rogers
2024-03-01 18:55 ` [PATCH v2 20/20] perf jevents: Add upi_bw metric " 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=20240301185559.2661241-18-irogers@google.com \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=caleb.biggers@intel.com \
    --cc=edward.baker@intel.com \
    --cc=eranian@google.com \
    --cc=james.clark@arm.com \
    --cc=john.g.garry@oracle.com \
    --cc=jolsa@kernel.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=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

all inboxes | Powered by JetHome®