From nobody Mon Feb 9 12:23:50 2026 Received: from mail-dy1-f201.google.com (mail-dy1-f201.google.com [74.125.82.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 354B936A03A for ; Tue, 27 Jan 2026 18:46:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769539582; cv=none; b=Ivn+lfFLUF56Y4K9lJak5vDJrNhIJUKpGDwX09Vg/gPeBbClX1rhbejiTtJeg44NJHQ48V7ToxqGdwdJ1UH5Ih5l4dG0pnRttz1N3oaVMB9sE6G4MNlPdTn79HoUg/0wJzfT9aRHgF587kbLpEjv0UQBIqj9wQoapOFoZF/ha4w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769539582; c=relaxed/simple; bh=iFgxYI8YkDQdRRykiWwbB91svFRxih0jHTs5Ccf/Mo4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=ktEA/bfKiqNNDXjsZR1Xd7eAgS3Xs5nfQzAHXttLDIXSuk8XnUo5QQV8UvswBsKcezVXtiAs/riwpsQZh70VD/8tS4cO16UZkn9YtqhH5Y2/qnlgrSrFC/8bsysEUBDcIFkDtKL0LNiLkNOsay9X87uqJAvR3wtgK5eVYuyDyXk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=MtK8vIcD; arc=none smtp.client-ip=74.125.82.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="MtK8vIcD" Received: by mail-dy1-f201.google.com with SMTP id 5a478bee46e88-2b71bdcd037so81934eec.1 for ; Tue, 27 Jan 2026 10:46:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1769539580; x=1770144380; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=W5NprC8R5leRz2bKlO+oNnE5MEyD18eL1u1cM1xoByk=; b=MtK8vIcD/nSp5QtBsr91wkuxDWnoFUf+vFjvLWRvPJfpckZN300xLmUgXB8NyaVrrq MdZW4sqtrmUkLlCdzv0VhwzrCNPva6eNlvDgoe2azpnb5zKk+obSzvOf4Wt3eW+rsgcX jhrZ4LUtlf2ZWFGsdEdLvm4u3LbNex6ydfR+bkSKn0p9ZZst7erd/2qZfysjA8Zv4gce C1+Jjzd1zEFySoJnrvI/z64CK+XFRww4O1GTXXyWQDXpwmBAUIWafEu+Hnnq17JyRRTq 2oCeVec6Mzrhljy7Mes6u1uDIjFihh0vYxFITC6WNlZUF0I/4xlONKhyCpHiLJnyfM/O 8+5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769539580; x=1770144380; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=W5NprC8R5leRz2bKlO+oNnE5MEyD18eL1u1cM1xoByk=; b=Q3Kebf/YCGEuS5iryZvKnl5AwOGWFI/S4ecMGJBMFS3UkQx4grIJSyFtAJqPTqq98r LChmfRDO4xh0Nnmyr+risyN65GBKWWJC84erg/KwUHq9W5I9dkjMvhSyrwDAD7xICyxU TmZ38Xdo7SwqiGmKiMrq5ytJbI4/tlpYzPvOkYtCdzFMd/QRZsn0b0w14uOU5rskPCez YeOllbuvYkWsTEeEsKP57yHtzR4lYXjcAiZdPINbtGZ5pjHei3xJTbdBej9FIpN0nca9 gqiAgy/GrO9hbLN5ns6sVTKh+QGv4l9F08UyrEfERmNeFDHp4QCfpS8sCz6OQedBi46U DvJA== X-Forwarded-Encrypted: i=1; AJvYcCWX3IZgmGZSrunWc2I7D8DeTemMye3CSQobiWA4MjpHYO2QNemi/Rg1zkDiNu/dNKT4xsqUggN0tpd+ApE=@vger.kernel.org X-Gm-Message-State: AOJu0YwYGoXb9UWZVEU6TOnf2qQ1hStMlLf8NDdwgRBvfKP7gulyJxCN 2fnSR/ZANMna3s5OnD6LPCCxOnaqwLCw78LQxkGLTcJeNthEjHvtoOcw7i8PKqUWWvQEHfAN38H CKyGVhIesdg== X-Received: from dybqf15.prod.google.com ([2002:a05:7301:648f:b0:2ae:582c:694f]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:cd8d:b0:2ab:9d23:f0b1 with SMTP id 5a478bee46e88-2b78e7bbecbmr1229676eec.13.1769539580277; Tue, 27 Jan 2026 10:46:20 -0800 (PST) Date: Tue, 27 Jan 2026 10:44:59 -0800 In-Reply-To: <20260127184506.3059493-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260127184506.3059493-1-irogers@google.com> X-Mailer: git-send-email 2.52.0.457.g6b5491de43-goog Message-ID: <20260127184506.3059493-29-irogers@google.com> Subject: [PATCH v11 28/35] perf jevents: Add local/remote "mem" breakdown metrics for Intel From: Ian Rogers To: Adrian Hunter , Alexander Shishkin , Arnaldo Carvalho de Melo , Benjamin Gray , Caleb Biggers , Edward Baker , Ian Rogers , Ingo Molnar , James Clark , Jing Zhang , Jiri Olsa , John Garry , Leo Yan , Namhyung Kim , Perry Taylor , Peter Zijlstra , Sandipan Das , Thomas Falcon , Weilin Wang , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Breakdown local and remote memory bandwidth, read and writes. The implementation uses the HA and CHA PMUs present in server models broadwellde, broadwellx cascadelakex, emeraldrapids, haswellx, icelakex, ivytown, sapphirerapids and skylakex. Tested-by: Thomas Falcon Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index f671d6e4fd67..983e5021f3d3 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -815,6 +815,36 @@ def IntelLdSt() -> Optional[MetricGroup]: ], description=3D"Breakdown of load/store instructions") =20 =20 +def UncoreMem() -> Optional[MetricGroup]: + try: + loc_rds =3D Event("UNC_CHA_REQUESTS.READS_LOCAL", + "UNC_H_REQUESTS.READS_LOCAL") + rem_rds =3D Event("UNC_CHA_REQUESTS.READS_REMOTE", + "UNC_H_REQUESTS.READS_REMOTE") + loc_wrs =3D Event("UNC_CHA_REQUESTS.WRITES_LOCAL", + "UNC_H_REQUESTS.WRITES_LOCAL") + rem_wrs =3D Event("UNC_CHA_REQUESTS.WRITES_REMOTE", + "UNC_H_REQUESTS.WRITES_REMOTE") + except: + return None + + scale =3D 64 / 1_000_000 + return MetricGroup("lpm_mem", [ + MetricGroup("lpm_mem_local", [ + Metric("lpm_mem_local_read", "Local memory read bandwidth not = including directory updates", + d_ratio(loc_rds, interval_sec), f"{scale}MB/s"), + Metric("lpm_mem_local_write", "Local memory write bandwidth no= t including directory updates", + d_ratio(loc_wrs, interval_sec), f"{scale}MB/s"), + ]), + MetricGroup("lpm_mem_remote", [ + Metric("lpm_mem_remote_read", "Remote memory read bandwidth no= t including directory updates", + d_ratio(rem_rds, interval_sec), f"{scale}MB/s"), + Metric("lpm_mem_remote_write", "Remote memory write bandwidth = not including directory updates", + d_ratio(rem_wrs, interval_sec), f"{scale}MB/s"), + ]), + ], description=3D"Memory Bandwidth breakdown local vs. remote (remote = requests in). directory updates not included") + + def UncoreMemBw() -> Optional[MetricGroup]: mem_events =3D [] try: @@ -914,6 +944,7 @@ def main() -> None: IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreMem(), UncoreMemBw(), ]) =20 --=20 2.52.0.457.g6b5491de43-goog