From nobody Sun Feb 8 23:35:11 2026 Received: from mail-dl1-f74.google.com (mail-dl1-f74.google.com [74.125.82.74]) (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 C7E5633507E for ; Thu, 8 Jan 2026 19:12:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767899541; cv=none; b=tcOio/lm9EF1IQ7XqibS1dCrv1xCbuwJkOnoXJVr4Dkbp3WMZPkibZ6ZTMQhU8eVNqOipMeZG2A+6wqztyx9UfBDrdN0BqHK6G4bPTepvHo0irrhU2Ocr3EJp0Ix3uo4ss51eaMlI07F2Fu2GPP5A5MlRBKfys+qKnLLrn8Ivcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767899541; c=relaxed/simple; bh=iFgxYI8YkDQdRRykiWwbB91svFRxih0jHTs5Ccf/Mo4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=b0SgkTuvtTiCK+2YLRco6Z2P5tUqKXNSAAS0QXJaBKeFmmViJYvKTE8sglsctDoUg1fMCozWJA5AdOMg80JOcht34jICyhNcP/Qwqd+S1ZEuVPhvwMY4Oa2Y0X0JCaFQ3BoWgde7KgTV5QJK/OVo70BvjVBBhZ5+OqF1GjTAEao= 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=j2s0/UX/; arc=none smtp.client-ip=74.125.82.74 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="j2s0/UX/" Received: by mail-dl1-f74.google.com with SMTP id a92af1059eb24-121adbf76c3so4041450c88.1 for ; Thu, 08 Jan 2026 11:12:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1767899539; x=1768504339; 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=j2s0/UX/glgZNq127iJ6xRRny/9q394oDyspEAzXd1+tFbxcnpCbUXML/Sglcs1SQc iKH0Jpbc5ojktYStcpiBo/f+acgwKtobkxjDq6jLdNXbBBxPLC/+DMZoDKVmvaV6h24r KfdDuFB6rz426hGMO6Z4ANbReHjeSjdA3URxwDDb1zaZGaWfWxftqve1ZiRcERSlvhzD 7mQHS5CNOhZptzBiX0rOgQBNIFELBt55QUZiZR5PED2OdY+KzDoB8QQ/ovIZTxDT3+eE hKK+BUywqwjdQi1ywVzYpX+xvjPSknWF0ThiIJ6g81LrBKnruBJx0HiS4uWoAaz29UbF ulXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767899539; x=1768504339; 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=HT5Q2/3H23XKDoFWakGWLpDozfbkpk77sCffSexdqNgQPGP5D/zWLeyUL/Hf+Wu3rT radv70Tz+NC8yGmMyEGDE9qk+sAFCM4MdHulmvmHbC8Qx8xpxFLjponxzo90pAQdxb+g 71Geye+HzWEmhBPjdN6I9iP9P7l+Qwp9vI4Ng5nUWfwO6P+eaezo99S1JXnJwWHr+LGY K41XZ8pmjeod7Uo268vtKld4QPgYLdydXTCQAWd5F+l0WA8ZfOvbA2BW0HLr01gDvyjW ZIiaDQEqoJ6JTQ+1v/DobmwTSHYWIdAhiGA/0ip3x5xm3gGQH1RYE54SemaCFqdi8Al1 bIAQ== X-Forwarded-Encrypted: i=1; AJvYcCXA/hczeCAslLZRfqUq3XKHaUY4rXaD6peVpMasj12xzVtR2BFYo3YxlTFykQn/Ao8UfqMplEFvvXx+eXM=@vger.kernel.org X-Gm-Message-State: AOJu0YwvYZzjOLVYUjLFRgFxdrNy2PHBvMv2J44WdwKHEi+rTwo9D/GE 0mnQYa2r0joMTj18E2wt13pyddQ3yLo12UsqjRh767lL/8bnjsiuksvzkjyHUA7fi2xtWNHs2oQ xI4e7H4ihDQ== X-Google-Smtp-Source: AGHT+IHssv1lJq+ZRAgChOEAZYIXFLkt1Jz/1FBVXh/Ql/90xsmBTYzTMcMzs2V6vrwMNahyuFzfmMachatY X-Received: from dll38.prod.google.com ([2002:a05:7022:226:b0:119:78ff:fe0f]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:6188:b0:119:e569:f620 with SMTP id a92af1059eb24-121f8b7a9d1mr7194267c88.25.1767899538693; Thu, 08 Jan 2026 11:12:18 -0800 (PST) Date: Thu, 8 Jan 2026 11:10:58 -0800 In-Reply-To: <20260108191105.695131-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: <20260108191105.695131-1-irogers@google.com> X-Mailer: git-send-email 2.52.0.457.g6b5491de43-goog Message-ID: <20260108191105.695131-29-irogers@google.com> Subject: [PATCH v10 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 , Samantha Alt , 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