From nobody Thu Dec 11 19:08:46 2025 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (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 763FE2E5B0E for ; Tue, 2 Dec 2025 17:54:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764698066; cv=none; b=HcI3JSADn7jK2qngm1qIO0/AoJqKhwXRh2XwfHgq5hMdVeRKjVWID9diUSlGX9GqUMVJtFewhH6G19jiwrgDajDEMi+jJ7M6YAM7wbIKNPR/jvvhRWOwqkX3pkI01O/j3d2EQCnQUBZleUsHCzbpEEZfphddFQbcgVSiWl3iYQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764698066; c=relaxed/simple; bh=DFB/FEt17GQJ+JkWYN3jloDSMAG1wUOHoceC5d8yzJM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=QW0fqvq2MTDETJSk8zz1Zga55igp8eMP2MtZ3xEZuXZdJ2dhYxUbsmzvLJf6zK/aoyy5FckWBHBiew+qtM3P9faOcndFDyVQqWOmWJ+h2Gzw/tUyTsB68Xt1jBC3ipgZooL7SdrBiGPrSTyM2gCSt7t0GA5mC8yM5gr86wosTlc= 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=Znwu8fJv; arc=none smtp.client-ip=209.85.215.202 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="Znwu8fJv" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-b471737e673so6469162a12.1 for ; Tue, 02 Dec 2025 09:54:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1764698064; x=1765302864; 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=zVYfJzXARSKLsQJ3BHueI5NPWshXYIemLwtLligKoO4=; b=Znwu8fJvnjdsfG3TB5BsLJVYBP4Pte2QtINO6AlNl5/0iDsYOIW4XAdR/sSziPDHMz q+OYFjJXtxl1AikWf088xdwVKyjJt/yR5FXUB2+twbu6XtSAyf9qNMOO4HnmMataTQza 1JJSJTIMYC1/0UGry25KlBHsjl0cqD6XNErg6j3qn6CjoZjJOSBdELMTwzcZhaZtI83B dxxu13oOk9eq1jgwJvUcqBX71ApFVqw+IaE9Bvq1ge67S0vbge3sRO1a17C9QZiSV+JE LsBHtBXeV/GkeseW3j7AoFhUX94QhzJrJs5BoW4V8GRskLNVnDWqzz0uIurtdVmRMQl/ 5Bmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764698064; x=1765302864; 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=zVYfJzXARSKLsQJ3BHueI5NPWshXYIemLwtLligKoO4=; b=UTmhKY9XjlmCFkr4ZNerFajssACpUk9lA25ba3S7CJpvEm+6b3inLBjcSRy1/CqSH4 3sLtTMDFRuzJJ+xdg1F1tdXzF0Yp69XKmAtaYy4dLwH/mbd6DFXrmvvYwot8ws7JTaOs wGsjCw7K3RiC5uvtuh6lpd5lVLOpkVKsZ4pcwHjVhkGgXcFrQZb+OSAYxHYCcITSUj4g ELQ4iaj2UgBhFixJr9Vj/zhefMqV6nY3U7hjIY+CHJHpEPBp5sLV6a7s3kH3+7pZ8fbN BsWt6K1QX2g2utdynpkgpmmunR7c+YuCvwm320T2lXgoDp/j4Gf3C+W1XnDtuIqAxENJ 8gFA== X-Forwarded-Encrypted: i=1; AJvYcCXcF/QmRjf/sEMvnjz96rdsCl2293V9feWx2nIcKUDvUbxRYBGs6DjqI8jELJCWB5wicIEqqh2Z+J+i2uk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0bgJosy/moQI2mnyEBR7zH5tAp/2ISHwH/wiCYUECQHIueUCj K6kbnMqjl22U3+V1ax7E+QTRMTrNDQ11vFscWkcgseFy5rEQt92gbYWjz/2St4uYkqunhRX6+ob 3UmzCl1ktDg== X-Google-Smtp-Source: AGHT+IGNJWX2dv4aY45NTWL60AK3Uju57c+XfU19nkoreqO82slcZQsfMfm8Qv81FLYtKO9fyaIgM3tglOrD X-Received: from dybgl36.prod.google.com ([2002:a05:7300:e024:b0:2a4:61a6:6c]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7301:5413:b0:2a4:3593:c7cb with SMTP id 5a478bee46e88-2ab8fa8ca3dmr163971eec.11.1764698063680; Tue, 02 Dec 2025 09:54:23 -0800 (PST) Date: Tue, 2 Dec 2025 09:50:35 -0800 In-Reply-To: <20251202175043.623597-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: <20251202175043.623597-1-irogers@google.com> X-Mailer: git-send-email 2.52.0.158.g65b55ccf14-goog Message-ID: <20251202175043.623597-41-irogers@google.com> Subject: [PATCH v9 40/48] 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. Signed-off-by: Ian Rogers Tested-by: Thomas Falcon --- 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.158.g65b55ccf14-goog