From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.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 36D7F18C03F for ; Fri, 29 Aug 2025 03:31:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438310; cv=none; b=KG6Nrv77Ex/bIKoz3vekVMf6EW8f4uIkBrZYpQYgg8RG5fYU2PXq+xC7VkeqfqLsYpkVdLWh7Eia3SCcaJVEQPElzMUQXxVqU8WKorhKdetOXY4Pj2ZaKhUZi3TCKPZCv1qZVWSYXeqjGLU0fO+0T4HQBZbObxIydlJom1dvoes= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438310; c=relaxed/simple; bh=ulhd6SIWCuSYAsAp5BTBuzPtj36lmz0hvxm8Tn9b1mA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=cmHrv//HoDMXjD/9xt1m/9sPUv8D28AvuzdLO8s+8VroyCEGHUt9TnpkBBCLZd1qVj3RUIJl4dRxnrnpjqEIhlRGrkGZg5uWPL/khx+GbDTWoLUB7hkJlMjCseTxGgg1z4R3vnO2QNO59KqYXVdbkma438NENkkiRsotyI4I87o= 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=2F8fQK/J; arc=none smtp.client-ip=209.85.214.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="2F8fQK/J" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-246cf6af2f4so32078165ad.1 for ; Thu, 28 Aug 2025 20:31:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438308; x=1757043108; 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=gDSqJfxhe7LKyb+9xI4v8fjVARMypVtealD8aimELAs=; b=2F8fQK/J/V0q9s2x0pUqFimcveOTakLvcVnOJjrRnqfpd1F+bKAi8mZ37W4tCa6EWA Z2HIQMUVsYU6QWYPs0aiuNkGNlpP0sRMsqTp1GmgpdUVyDXP1g1uVCUG+2cvYM6ORPc6 kgD++IWLIbVKNscquYekZn4xdz6Z5BZnsCF14ZyAj5KrBZ7moesaaHMW2r47kicSdY/r X13Brg372+zIZkjYLRw4+mcPHN3DKJh4q/ndDjqBvfr2TN3nyoAHFY/HS/hohkbgP8st v10xBjgMAFDz1P38FxMKs5ttTT8uEUbEj3nYg4FfALES1s2NyRXdvizk+TU3A4TAGfuK 0Fwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438308; x=1757043108; 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=gDSqJfxhe7LKyb+9xI4v8fjVARMypVtealD8aimELAs=; b=eoHIlsySxAwY6eu8OPDc8LQ2vTN+JCOkdZ7CY6tqcN7i1s2FB7hTU4cN7EoStB0X49 3kJW+WVELDjIDwsuY6bI0UQwDGp+852639mC9sZpC/DRZJZvCsozqN96oRcdNt3tHSkG Kp+IfQbZo9MVoVa+6KI7b1A8g0XhyFckT/hpfnm3NKCfwVayKDTjkmljYTmv/VaA9oMK 04UK/nn2qXjWTjeZg23vCpsL0olrNf6Q4pZXF3OC6YPM2HHTYqqyYwmF06MrB9hHZCC7 qEi0qgicS7/Xok7eUqIQMudvv8wLi4P5DgM5rOBJ3+5u/2tY3baSws93kRMyCUbtg42c asxg== X-Forwarded-Encrypted: i=1; AJvYcCWtiCAOJOfnC/Ql4cIeys5+GaaZSnnlUqrneUVFL8WEMyw410OzWej8Eidr2Bt6E0p1y2WNnGGERDM/VYg=@vger.kernel.org X-Gm-Message-State: AOJu0Yymo9T0W9dEp6IoxCywXKx9mkZV+dqjzHOybszhDh7Qaou1r/3c NH9ar+ICTozDQF9mS115rpFKvGWJQgf2M+62YA5XVwOS5DPV+boZVXAGpPosE3RGspYyuDFVjx4 zcq7+DZe55w== X-Google-Smtp-Source: AGHT+IFKCLalt7wpZlr7xPd05a9xgJGKJaAUk64ncFuMeybW5fHsIY9RmdTWBRytsfnSngSg7LEBbvpGXOco X-Received: from pldv13.prod.google.com ([2002:a17:902:ca8d:b0:248:eeb0:262d]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ec87:b0:246:255a:1913 with SMTP id d9443c01a7336-2462eeb7630mr356787005ad.39.1756438308587; Thu, 28 Aug 2025 20:31:48 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:26 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-2-irogers@google.com> Subject: [PATCH v5 01/13] perf jevents: Add RAPL event metric for AMD zen models From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add power per second metrics based on RAPL. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 31 +++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 4f728e7aae4a..2261836eae19 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -1,14 +1,37 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -from metric import (JsonEncodeMetric, JsonEncodeMetricGroupDescriptions, L= oadEvents, - MetricGroup) +from metric import (d_ratio, has_event, Event, JsonEncodeMetric, JsonEncod= eMetricGroupDescriptions, + LoadEvents, Metric, MetricGroup, Select) import argparse import json +import math import os =20 # Global command line arguments. _args =3D None =20 +interval_sec =3D Event("duration_time") + +def Rapl() -> MetricGroup: + """Processor socket power consumption estimate. + + Use events from the running average power limit (RAPL) driver. + """ + # Watts =3D joules/second + # Currently only energy-pkg is supported by AMD: + # https://lore.kernel.org/lkml/20220105185659.643355-1-eranian@google.co= m/ + pkg =3D Event("power/energy\-pkg/") + cond_pkg =3D Select(pkg, has_event(pkg), math.nan) + scale =3D 2.3283064365386962890625e-10 + metrics =3D [ + Metric("lpm_cpu_power_pkg", "", + d_ratio(cond_pkg * scale, interval_sec), "Watts"), + ] + + return MetricGroup("lpm_cpu_power", metrics, + description=3D"Processor socket power consumption est= imates") + + def main() -> None: global _args =20 @@ -31,7 +54,9 @@ def main() -> None: directory =3D f"{_args.events_path}/x86/{_args.model}/" LoadEvents(directory) =20 - all_metrics =3D MetricGroup("",[]) + all_metrics =3D MetricGroup("", [ + Rapl(), + ]) =20 if _args.metricgroups: print(JsonEncodeMetricGroupDescriptions(all_metrics)) --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.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 1F8D9217F23 for ; Fri, 29 Aug 2025 03:31:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438312; cv=none; b=QTDx+DT9cUqKSmw4cHIwQDi25VZcRHEp4tylkQ5vGoEvvNseIbg/4yh9inKiol/Yfv/dUdIgyWTRAgqikR5m9EzArieEfRd6KGZ/7NOrSYufwzgcxv2NE1M2oFt+M3dz1djpqayxc+rdpTpQHYjQHmtxlKG51Wfokhx8Q+4CzPg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438312; c=relaxed/simple; bh=f6tZULxXzOYJabi15j8Tzs5VwOMZcIv+Utk6vqhZv0o=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=lM5WdZtaDz4O9UCE+bWCDcvIG+Io8dvhIgSFw/kBa77+pPUIbpT1rQrxnY6uP6d16IPcEWVwlOrKxqM/FpUqTFDk62p4zOQvTIW7hGPG3OoP+K25L7cS4QvMZGfoyuum0rSiwrcAPUiUzT5hTLyCykO8VyR6sGEbKYj3QN8UGb8= 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=hAaVks2y; arc=none smtp.client-ip=209.85.215.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="hAaVks2y" Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b4c3547bd78so1292973a12.0 for ; Thu, 28 Aug 2025 20:31:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438310; x=1757043110; 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=g2KPWVxhZfNI2wSoQnR4yc5PGFGxNKw8RrtXTGVAxeo=; b=hAaVks2yAFjjb2X6Js4bA4rqLOUlc+/4LyADOF6i92T7VXBS+vkCEnKzteejHuaE/R XKlJk5+Y2VACGCy0ubzX5tfnmhNGZXpSQDvS11pevNcF+avthf1FWz1mVVK+EMa460DO sKB4RnTOhvNcLNFQX0t4p4hB3UddcbwBbbJzN4Pn0fX1zhVEiQNB8kE4CwUHkKpwgv4K JXKO988CKzY6rZ22BhgcBdI1yZp00EiE8lfviyF0dxOkJ7MzriUXZ+l23TYzj2zhfh2l gdvARDjGY9CwiyB70OvaYI+Cvyae/Txfp37pFO7NkUuwbZyFbXJce4EEdvXfSxflVoBZ 2pvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438310; x=1757043110; 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=g2KPWVxhZfNI2wSoQnR4yc5PGFGxNKw8RrtXTGVAxeo=; b=tU3pZPphUi1OSZGvPVVKSRXge9/f1Oyzja84K9r3OBEj53pHWXLuU/Jw2LABp4XIc8 384Epg8vJfAwT5AE1C9WV88ibzlZPzvqb7mQN8fQYBdezWb5bHXTlBrpCgfOYaGI/Uw7 Trdy8/qNSbuN75c+ov/1cktgY82KOL88uUQ0h+IfvdcDzO8p1UO4+mToyj6g156wXdeA bRaehi/cGlvk1ocYVAQ+mK5QGMAEkSsvSv2HXFKtglRX0migEfglvM4AL6VqfooMyTYj kmSlFODa1gOgDqnji1O+3dsIj1SKtuafDXDWunWF/SeiDfm0O5GzdiUeeV5WXsUAHM9Z G8aA== X-Forwarded-Encrypted: i=1; AJvYcCV9DgAE+uHToWIg+z/QRWaJsEsqKBDUtRlaGYoKpsB3qcLVI0xWQ9cOcf14YFs3uwCGIzDRI200scfkKbs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4u32KHZFh8GjZfqIhHB34OLqssScnAJ4QQRspRhDagfIMZ/LY nJGGAT7UPr2zSBuUTJotp8+GretJFJdMFQePNYadZ6H2gM+kt+2861HpKq8ijqBovcNhjdBzPTS jyRwyrkwVAg== X-Google-Smtp-Source: AGHT+IG1joouvBqPMX2hF04OOQp5MJw306wbLSPjyrev6oBcRL+UG3HbKsN/piOLACw1lxmtS40dAi2bJK9C X-Received: from pjk15.prod.google.com ([2002:a17:90b:558f:b0:327:e57c:38aa]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:99aa:b0:240:101c:4417 with SMTP id adf61e73a8af0-24340b8da85mr36531605637.4.1756438310394; Thu, 28 Aug 2025 20:31:50 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:27 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-3-irogers@google.com> Subject: [PATCH v5 02/13] perf jevents: Add idle metric for AMD zen models From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Compute using the msr PMU the percentage of wallclock cycles where the CPUs are in a low power state. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 2261836eae19..0dd13ddd67d5 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -from metric import (d_ratio, has_event, Event, JsonEncodeMetric, JsonEncod= eMetricGroupDescriptions, - LoadEvents, Metric, MetricGroup, Select) +from metric import (d_ratio, has_event, max, Event, JsonEncodeMetric, + JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, + MetricGroup, Select) import argparse import json import math @@ -12,6 +13,16 @@ _args =3D None =20 interval_sec =3D Event("duration_time") =20 +def Idle() -> Metric: + cyc =3D Event("msr/mperf/") + tsc =3D Event("msr/tsc/") + low =3D max(tsc - cyc, 0) + return Metric( + "lpm_idle", + "Percentage of total wallclock cycles where CPUs are in low power st= ate (C1 or deeper sleep state)", + d_ratio(low, tsc), "100%") + + def Rapl() -> MetricGroup: """Processor socket power consumption estimate. =20 @@ -55,6 +66,7 @@ def main() -> None: LoadEvents(directory) =20 all_metrics =3D MetricGroup("", [ + Idle(), Rapl(), ]) =20 --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.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 1701C221FB4 for ; Fri, 29 Aug 2025 03:31:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438314; cv=none; b=i7EKkjwCbVhxUQIUwLIhTO6fAKVv/ceF8bo5kkkcbC4EKLxiwWaB3hdNNC5kzx9W1nTXfnUJNWOXx+jkbjOLdipRM+8C0A64d2SzGKbnCYeD/1LxYooBAwKMOQPeMAgPopFzKSxa5EZEnwTkfx1VjObvjEMzSZ/CxKmkU+jX160= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438314; c=relaxed/simple; bh=0hmtggqLeq5FZz3J/tcXe5RX6ni47uj1egDznrFtV+w=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=MfFdsVK6KTE9AtY6Or6az1UVoc45e3f9sMZoV3Z4+FrgKrz7dCg/XB2dVzdFrkYGSEdnEXAjf3FlVv7Xr4NlXKR15yYl5aKuj3Y4/L2lscDeevNk4h3k+o2FArbYLD6V2wZ6plcz5xi68lJ1+Bk7H1qpYRTPxI1F9GWv20aR0yk= 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=VrLibCtm; arc=none smtp.client-ip=209.85.215.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="VrLibCtm" Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b4c2c09a760so1254844a12.2 for ; Thu, 28 Aug 2025 20:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438312; x=1757043112; 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=3LGdhiSVnvTWsQxfBgDtDf70Ls0jjr8wD8lE+3rfd64=; b=VrLibCtm+d4Ry5G2zkhJVvUNcdXyzMHe30SppyIl1BvqSNFjF68kc2VGjGeuZBeARo y64izYesc5Xb8T0J7JPdzW3YzVCmvVeFl54j81NXet+8lx9WPrUWofKzxjLrfpdbSaKB 8sqAoWfr+0umSK0AZh5kZfIaXIz89X08bRDaWy4T0o5YL+2yQCr9/wiTJYKBaVkiYXlQ /JwmZZhwc5Y3+Iqe7YVx33JNyY/VK9+Ubqs7YD2jF2jCOc49hjjdG8Vf9yqzOpuM/uqj 5s6zeLNL4fZnNn8LdhXeKSP4K6Xx4RseenksllTW+meNZs8c8zyuKAcwBFONGX0ikQuJ neSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438312; x=1757043112; 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=3LGdhiSVnvTWsQxfBgDtDf70Ls0jjr8wD8lE+3rfd64=; b=PIU7f+sZ3eC9M0t2HOshrw42uIPOuhJ84+/AKxVDSWQ/TfNH7g9cTY9zI1kIosc0dW CHgCjuE+wPwxLM5o0q/3WW5A60Gn/rLlilPfo6uUkyqHmi6sdMXnnimDkAttYi+tKDJR ov6ybLt4vWqTdFq7tpUDyE6WyRLRJrngdH1k1nkNNovKyKXHlRpjVew+u1ttI/OgOHW5 RNNUml4LMfrmop74aqehjnXEMxABjOjH8ncZkn34yUDlcp6UXR5MiBE1E/Q3SkKpgjSj lrbFX8YBvLQ19HfHETN1HNqTMP5y2QSiMkmChsSb0YUpCcqa6t7zLZEgw4EbGTy/DUYr ojkg== X-Forwarded-Encrypted: i=1; AJvYcCXBga1Ob4xxWDC3idL7tLQEtiEpHun2sJ5RZjCsJUm2L70vnCwSomllJfC7qtEk5gqOWqHo9GqfdquJD2w=@vger.kernel.org X-Gm-Message-State: AOJu0Yywj9vNWw6Cess8IzbjKoK0jxR/KTgCJkNyJoN3RtJZQG6GQ+zT pF2oLHt4D//FgBQ64D0lChwzNWwUzxOaGXgWKwvIKNSywyfpbVhqZj2+UroSgYAnrha+lPrTdaC v9zSxAHXSRQ== X-Google-Smtp-Source: AGHT+IHNI+7cwsIV3L+Ri+qfg2uOAy15bKI1YaCe6UsneLEmJ4EuP/aIRZUmC5XyYMKnwVQnVRwF2bPfwA0k X-Received: from plmd12.prod.google.com ([2002:a17:903:ecc:b0:248:c91f:34f3]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ea09:b0:249:112c:f947 with SMTP id d9443c01a7336-249112d0302mr7415985ad.19.1756438312306; Thu, 28 Aug 2025 20:31:52 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:28 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-4-irogers@google.com> Subject: [PATCH v5 03/13] perf jevents: Add upc metric for uops per cycle for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The metric adjusts for whether or not SMT is on. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 0dd13ddd67d5..3c36078ce727 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) from metric import (d_ratio, has_event, max, Event, JsonEncodeMetric, - JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, - MetricGroup, Select) + JsonEncodeMetricGroupDescriptions, Literal, LoadEvents, + Metric, MetricGroup, Select) import argparse import json import math @@ -10,8 +10,17 @@ import os =20 # Global command line arguments. _args =3D None - +_zen_model: int =3D 1 interval_sec =3D Event("duration_time") +cycles =3D Event("cycles") +# Number of CPU cycles scaled for SMT. +smt_cycles =3D Select(cycles / 2, Literal("#smt_on"), cycles) + +def AmdUpc() -> Metric: + ops =3D Event("ex_ret_ops", "ex_ret_cops") + upc =3D d_ratio(ops, smt_cycles) + return Metric("lpm_upc", "Micro-ops retired per core cycle (higher is be= tter)", + upc, "uops/cycle") =20 def Idle() -> Metric: cyc =3D Event("msr/mperf/") @@ -45,6 +54,7 @@ def Rapl() -> MetricGroup: =20 def main() -> None: global _args + global _zen_model =20 def dir_path(path: str) -> str: """Validate path is a directory for argparse.""" @@ -65,7 +75,10 @@ def main() -> None: directory =3D f"{_args.events_path}/x86/{_args.model}/" LoadEvents(directory) =20 + _zen_model =3D int(_args.model[6:]) + all_metrics =3D MetricGroup("", [ + AmdUpc(), Idle(), Rapl(), ]) --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.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 D936922F386 for ; Fri, 29 Aug 2025 03:31:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438316; cv=none; b=XC9pAZMksD6DMLNEIIgq/yfHb++APsHVrm2UNkatlemWRrOrb5bzTEQM+2fXPUUA3UCSVeQ5h9NsRPSP5pjXjtWN4XMk6d88t9Kd2eRkJmQm2ZNBVUgMqqUi+R89KBXlqIPGesekmjkPKzVWdgSy02Rdn0Gk4vVlkViLcoKLePo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438316; c=relaxed/simple; bh=c3ejxxmCpih2FejWuj1uI7JXyYijFQDEVDox/rS/kio=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=ETH8Aq4of0y1Udbw5cSDdj8ch/ABJqPXEeVUtKrbh+1x8eBgeg4kpWegvg528jZjYtlGnXl+kWnfw3Hd4123UcP1q6HZGysobl05F7NF/dkvmwCeF6h1DhOgwgX/5G39wlNeOgDNzYFOMFqNqj3J5oc/wbuPFxX87BC6IleFnW8= 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=OMby2EK8; arc=none smtp.client-ip=209.85.214.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="OMby2EK8" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-24895637fe1so18550465ad.2 for ; Thu, 28 Aug 2025 20:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438314; x=1757043114; 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=AoMWzySU45oKrnsAGKA2ac/gq6rzQnZKhL6Vg5y4z4c=; b=OMby2EK8sro081ivtaG4nciZ8O33BUhbn3nw/jgLGpt97K1fI1NhkeLtqp0NV8Y980 fPtE4VhqUki+C2Moe8VbLrrRHxcVBcWISE+EHcqCwhvORte0rFSFdqVEtD97xojDAZ7j 4zVLH5NWBrDkaa2FxSJ/MmF8aSQNDkXFaF/a6O5GCaZDCmvsaP6EYdgqb4uI8evLiSOt LiirhnLtJoEgbSjfgMgoFhVUJsdMCTA35nHKwYdMQScwByOJyAj8LG4+CRUX6opTS/ky oDRSF8fdgaKUQv/Eu09K4WhZX16H3bY1fWGRVS1r9vjYTCk6gMzEHQKzw0I1znmRtw1C FPFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438314; x=1757043114; 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=AoMWzySU45oKrnsAGKA2ac/gq6rzQnZKhL6Vg5y4z4c=; b=SqJtvx5CBBwkChwMr46D5GYKDNdUzYDEGLzdNn0RvCW9fxP//UZG8+ZEXj+KsZcLCy 6iki8MqOGRRbtXJO9w+r7z4oSJnFyK5LKYRVZoFdJNsQMTJ27i2xeMcRplMmIa3bAZa4 50JoeDCts8BlvUBEDr7d9ljJdh2YgQV9g3mwhRbkC8gdhtEfpcF7M/9/c/k7Qap7+G4w ULCk0hw5Pip2EnKBrCkWmbQ/VWiSaFYIATQ6TbL9mttlcZRpTvw6O7nuoDwYxApRtVaI BsmIry1qIJcTdHM1GwxWPKck8F8Dz/AQDsYvD4r0stsRcJD7sQLLDn+pwDhSQHeupZbQ /cRQ== X-Forwarded-Encrypted: i=1; AJvYcCVlHG6sJSI/A5TXkF2JbL+DnWCx0yAqQ+vNtbMRWKgiQNTMmcQMDgDdkc567BMjyNXNwJAJy2+TiSGPpSQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxpDtiRpX1lTQDDURpFykbBuPgYYvkIHdO2J59/Ee9ZxKfDueZ/ RRUxquXm/7utevgWVlzjkXR8+5mJyrZijHsm7a2Q4O04kJfrN10mMIJsfKq5rLVv1rFO12fulIH BxOjeILqBoQ== X-Google-Smtp-Source: AGHT+IGDpZCeQHu8P5QFeXYfRIGjydBHiyNGTL4cQZaEokQB/kxuwm2ylp5bN7HDVQ9zEnM1p6Nt4kdd+fFG X-Received: from plxj4.prod.google.com ([2002:a17:902:da84:b0:246:b41d:2524]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:1249:b0:240:7247:f738 with SMTP id d9443c01a7336-2462edee76fmr351166985ad.1.1756438314047; Thu, 28 Aug 2025 20:31:54 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:29 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-5-irogers@google.com> Subject: [PATCH v5 04/13] perf jevents: Add br metric group for branch statistics on AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The br metric group for branches itself comprises metric groups for total, taken, conditional, fused and far metric groups using json events. The lack of conditional events on anything but zen2 means this category is lacking on zen1, zen3 and zen4. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 105 +++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 3c36078ce727..9171d23039cc 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -7,15 +7,119 @@ import argparse import json import math import os +from typing import Optional =20 # Global command line arguments. _args =3D None _zen_model: int =3D 1 interval_sec =3D Event("duration_time") +ins =3D Event("instructions") cycles =3D Event("cycles") # Number of CPU cycles scaled for SMT. smt_cycles =3D Select(cycles / 2, Literal("#smt_on"), cycles) =20 +def AmdBr(): + def Total() -> MetricGroup: + br =3D Event("ex_ret_brn") + br_m_all =3D Event("ex_ret_brn_misp") + br_clr =3D Event("ex_ret_msprd_brnch_instr_dir_msmtch", "ex_ret_brn_re= sync") + + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + misp_r =3D d_ratio(br_m_all, br) + clr_r =3D d_ratio(br_clr, interval_sec) + + return MetricGroup("lpm_br_total", [ + Metric("lpm_br_total_retired", + "The number of branch instructions retired per second.", br= _r, + "insn/s"), + Metric( + "lpm_br_total_mispred", + "The number of branch instructions retired, of any type, that = were " + "not correctly predicted as a percentage of all branch instruc= ions.", + misp_r, "100%"), + Metric("lpm_br_total_insn_between_branches", + "The number of instructions divided by the number of branch= es.", + ins_r, "insn"), + Metric("lpm_br_total_insn_fe_resteers", + "The number of resync branches per second.", clr_r, "req/s") + ]) + + def Taken() -> MetricGroup: + br =3D Event("ex_ret_brn_tkn") + br_m_tk =3D Event("ex_ret_brn_tkn_misp") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + misp_r =3D d_ratio(br_m_tk, br) + return MetricGroup("lpm_br_taken", [ + Metric("lpm_br_taken_retired", + "The number of taken branches that were retired per second.= ", + br_r, "insn/s"), + Metric( + "lpm_br_taken_mispred", + "The number of retired taken branch instructions that were " + "mispredicted as a percentage of all taken branches.", misp_r, + "100%"), + Metric( + "lpm_br_taken_insn_between_branches", + "The number of instructions divided by the number of taken bra= nches.", + ins_r, "insn"), + ]) + + def Conditional() -> Optional[MetricGroup]: + global _zen_model + br =3D Event("ex_ret_cond") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + + metrics =3D [ + Metric("lpm_br_cond_retired", "Retired conditional branch instruct= ions.", + br_r, "insn/s"), + Metric("lpm_br_cond_insn_between_branches", + "The number of instructions divided by the number of condit= ional " + "branches.", ins_r, "insn"), + ] + if _zen_model =3D=3D 2: + br_m_cond =3D Event("ex_ret_cond_misp") + misp_r =3D d_ratio(br_m_cond, br) + metrics +=3D [ + Metric("lpm_br_cond_mispred", + "Retired conditional branch instructions mispredicted as = a " + "percentage of all conditional branches.", misp_r, "100%"= ), + ] + + return MetricGroup("lpm_br_cond", metrics) + + def Fused() -> MetricGroup: + br =3D Event("ex_ret_fused_instr", "ex_ret_fus_brnch_inst") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + return MetricGroup("lpm_br_cond", [ + Metric("lpm_br_fused_retired", + "Retired fused branch instructions per second.", br_r, "ins= n/s"), + Metric( + "lpm_br_fused_insn_between_branches", + "The number of instructions divided by the number of fused " + "branches.", ins_r, "insn"), + ]) + + def Far() -> MetricGroup: + br =3D Event("ex_ret_brn_far") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + return MetricGroup("lpm_br_far", [ + Metric("lpm_br_far_retired", "Retired far control transfers per se= cond.", + br_r, "insn/s"), + Metric( + "lpm_br_far_insn_between_branches", + "The number of instructions divided by the number of far branc= hes.", + ins_r, "insn"), + ]) + + return MetricGroup("lpm_br", [Total(), Taken(), Conditional(), Fused(), = Far()], + description=3D"breakdown of retired branch instructio= ns") + + def AmdUpc() -> Metric: ops =3D Event("ex_ret_ops", "ex_ret_cops") upc =3D d_ratio(ops, smt_cycles) @@ -78,6 +182,7 @@ def main() -> None: _zen_model =3D int(_args.model[6:]) =20 all_metrics =3D MetricGroup("", [ + AmdBr(), AmdUpc(), Idle(), Rapl(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.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 95ADC235050 for ; Fri, 29 Aug 2025 03:31:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438318; cv=none; b=ldNQ7QNP7iezhNbk9VRMTLDxOuq2H43vXWoSJ+7+7C/SBBHo+UyK6wBgqA5sMaXvI7UziR4RscxLqnTJ00g0971OnSQBmwy9O931lVCgYY3ZvSmPQ1My5n4/3BgreDFpgPVYrYP0VMj0/Q58ifcf+Nyq742g0LQwLTzIcdX3w6w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438318; c=relaxed/simple; bh=NTEta9CDl4/pZtDUETmRfUb72kP1/XXoaXSchlZvbQ4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=dst/wwW3r4fMzFPcV4pCYQJSpt1g9d50kSB9OVjpqVdioCceT39L8+B04zbPw7uwBaApTscth32KTMNeKag7GOfEp6R+YEIzeRgHPKoVkR7xh78EtA5remiWdCnWOqv8QLLQRigNxfY/qPYd2QuoB+JipucanjoM/n6OU7g4kQo= 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=i5fLKlQB; arc=none smtp.client-ip=209.85.214.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="i5fLKlQB" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-2445805d386so18015905ad.1 for ; Thu, 28 Aug 2025 20:31:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438316; x=1757043116; 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=whnG4Rb09JN6lb0BqM80HVTDUfySh66UmBX7PaHYxzs=; b=i5fLKlQB4p0rYFg1nSOVjILIcKvvKcRj3n3u5jDhUWRD369I/Xgqew/x5BMtppBff4 ivUJAsR9rU3Tzm2z45TP9xPRCXh3B3uy8vCM9oYf+QMPqGRCE2OxR0z4B8ZDxIfgmvvE hdi7hRjlf0WMLxH4q8PWmglyEtZdsTN3eJPt+gTngnBiYgq7BFQsm4MDKMz+DM7G5Cr+ tkR/xVpNh9MJbWIR1RfzkjOYmKCSYA3kUC3ORbpsXJAgu53AvifM1X5e4kRJnG/wwoKs ek1TkbBgV6Ol+/R9GHb3y9qPz0+0OCQtfk4fwItkK/E6RYwevPgOMQq5XytfFt8uVnrJ 6xEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438316; x=1757043116; 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=whnG4Rb09JN6lb0BqM80HVTDUfySh66UmBX7PaHYxzs=; b=Zt+KTx3xXG+FoqwsUS0IvCeWWxtEfiYcb/syz1ozAGZw0etQ96hFccejC1a/xF/F87 FsQ/uTjXjcl9f5yDUv459QhVfL89SiqBVWJvjpm+2s6mgS1o6tuuh2vXYFsHStq5Cwbd lDo+e3ukK8QcTswQ+aHMi2EZTYG73n1eqchQE1NTvzezxkhwQvMCdfgXHN5bC3+oh1ab pElVFWm9o+eODeHmDzrVizy+x2wOvGTASxWwTCEazDLF5U6gpKcMNgky1/bqiuA0R4fX jvCLNnftYZp+40ytU3WDu3kdkb40s6m6dxQIjwmbDAFGF0bC82OeFN4Kjg9YscFRfJzS G2tQ== X-Forwarded-Encrypted: i=1; AJvYcCXFRoWn1g+3WN8xDWy9lVSOoercHolo5AUZV+uO9baAhzNp6ZIXjzkgpkRpL0uYy3jc6RLLGFO9fUENYzE=@vger.kernel.org X-Gm-Message-State: AOJu0Yzu9ag7/Msmfr8BXPKLt7kzx4bJPDk+Jl9CqRGih5HS4Fu+Kbgp VZij+UYk7R7TY4wUbs1b2UJSuNP67tNiemZElA1TpsYeSyJ9F0a1AQhD+ewInobYbEZErmOG+FP YfLh+7CaXvQ== X-Google-Smtp-Source: AGHT+IGyx49fHN7mtpVJ7uspFCCYJHfCYKNwLcq0NjwswPYI3Vhst5S0Vo5cUomtJ/mSsBJpQwPVtZ3k6T23 X-Received: from plmd12.prod.google.com ([2002:a17:903:ecc:b0:248:c91f:34f3]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:230f:b0:246:eb4d:80c8 with SMTP id d9443c01a7336-246eb4d83d5mr212920015ad.34.1756438315990; Thu, 28 Aug 2025 20:31:55 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:30 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-6-irogers@google.com> Subject: [PATCH v5 05/13] perf jevents: Add software prefetch (swpf) metric group for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give the utility of software prefetches on zen2, zen3 and zen4. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 96 ++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 9171d23039cc..cc5dea81e5bc 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,101 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdSwpf() -> Optional[MetricGroup]: + """Returns a MetricGroup representing AMD software prefetch metrics.""" + global _zen_model + if _zen_model <=3D 1: + return None + + swp_ld =3D Event("ls_dispatch.ld_dispatch") + swp_t0 =3D Event("ls_pref_instr_disp.prefetch") + swp_w =3D Event("ls_pref_instr_disp.prefetch_w") # Missing on Zen1 + swp_nt =3D Event("ls_pref_instr_disp.prefetch_nta") + swp_mab =3D Event("ls_inef_sw_pref.mab_mch_cnt") + swp_l2 =3D Event("ls_sw_pf_dc_fills.local_l2", + "ls_sw_pf_dc_fills.lcl_l2", + "ls_sw_pf_dc_fill.ls_mabresp_lcl_l2") + swp_lc =3D Event("ls_sw_pf_dc_fills.local_ccx", + "ls_sw_pf_dc_fills.int_cache", + "ls_sw_pf_dc_fill.ls_mabresp_lcl_cache") + swp_lm =3D Event("ls_sw_pf_dc_fills.dram_io_near", + "ls_sw_pf_dc_fills.mem_io_local", + "ls_sw_pf_dc_fill.ls_mabresp_lcl_dram") + swp_rc =3D Event("ls_sw_pf_dc_fills.far_cache", + "ls_sw_pf_dc_fills.ext_cache_remote", + "ls_sw_pf_dc_fill.ls_mabresp_rmt_cache") + swp_rm =3D Event("ls_sw_pf_dc_fills.dram_io_far", + "ls_sw_pf_dc_fills.mem_io_remote", + "ls_sw_pf_dc_fill.ls_mabresp_rmt_dram") + + # All the swpf that were satisfied beyond L1D are good. + all_pf =3D swp_t0 + swp_w + swp_nt + good_pf =3D swp_l2 + swp_lc + swp_lm + swp_rc + swp_rm + bad_pf =3D max(all_pf - good_pf, 0) + + loc_pf =3D swp_l2 + swp_lc + swp_lm + rem_pf =3D swp_rc + swp_rm + + req_pend =3D max(0, bad_pf - swp_mab) + + r1 =3D d_ratio(ins, all_pf) + r2 =3D d_ratio(swp_ld, all_pf) + r3 =3D d_ratio(swp_t0, interval_sec) + r4 =3D d_ratio(swp_w, interval_sec) + r5 =3D d_ratio(swp_nt, interval_sec) + overview =3D MetricGroup("lpm_swpf_overview", [ + Metric("lpm_swpf_ov_insn_bt_swpf", "Insn between SWPF", r1, "insns"), + Metric("lpm_swpf_ov_loads_bt_swpf", "Loads between SWPF", r2, "loads= "), + Metric("lpm_swpf_ov_rate_prefetch_t0_t1_t2", "Rate prefetch TO_T1_T2= ", r3, + "insns/sec"), + Metric("lpm_swpf_ov_rate_prefetch_w", "Rate prefetch W", r4, "insns/= sec"), + Metric("lpm_swpf_ov_rate_preftech_nta", "Rate prefetch NTA", r5, "in= sns/sec"), + ]) + + r1 =3D d_ratio(swp_mab, all_pf) + r2 =3D d_ratio(req_pend, all_pf) + usefulness_bad =3D MetricGroup("lpm_swpf_usefulness_bad", [ + Metric("lpm_swpf_use_bad_hit_l1", "Usefulness bad hit L1", r1, "100%= "), + Metric("lpm_swpf_use_bad_req_pend", "Usefulness bad req pending", r2= , "100%"), + ]) + + r1 =3D d_ratio(good_pf, all_pf) + usefulness_good =3D MetricGroup("lpm_swpf_usefulness_good", [ + Metric("lpm_swpf_use_good_other_src", "Usefulness good other src", r= 1, + "100%"), + ]) + + usefulness =3D MetricGroup("lpm_swpf_usefulness", [ + usefulness_bad, + usefulness_good, + ]) + + r1 =3D d_ratio(swp_l2, good_pf) + r2 =3D d_ratio(swp_lc, good_pf) + r3 =3D d_ratio(swp_lm, good_pf) + data_src_local =3D MetricGroup("lpm_swpf_data_src_local", [ + Metric("lpm_swpf_data_src_local_l2", "Data source local l2", r1, "10= 0%"), + Metric("lpm_swpf_data_src_local_ccx_l3_loc_ccx", + "Data source local ccx l3 loc ccx", r2, "100%"), + Metric("lpm_swpf_data_src_local_memory_or_io", + "Data source local memory or IO", r3, "100%"), + ]) + + r1 =3D d_ratio(swp_rc, good_pf) + r2 =3D d_ratio(swp_rm, good_pf) + data_src_remote =3D MetricGroup("lpm_swpf_data_src_remote", [ + Metric("lpm_swpf_data_src_remote_cache", "Data source remote cache",= r1, + "100%"), + Metric("lpm_swpf_data_src_remote_memory_or_io", + "Data source remote memory or IO", r2, "100%"), + ]) + + data_src =3D MetricGroup("lpm_swpf_data_src", [data_src_local, data_src_= remote]) + + return MetricGroup("lpm_swpf", [overview, usefulness, data_src], + description=3D"Software prefetch breakdown (CCX L3 = =3D L3 of current thread, Loc CCX =3D CCX cache on some socket)") + + def AmdUpc() -> Metric: ops =3D Event("ex_ret_ops", "ex_ret_cops") upc =3D d_ratio(ops, smt_cycles) @@ -183,6 +278,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdSwpf(), AmdUpc(), Idle(), Rapl(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.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 C8C55238D49 for ; Fri, 29 Aug 2025 03:31:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438320; cv=none; b=jWjgJ+I5yObEgTQd7fGTv+o6zkVVvZY7Rfl5I8yq8p2xmSS1v67+IoW5sGxNsiH7Khv6x2IIjM7MXBbkKCqYE5/furmkIE7zV6Ph2XuN5OuxqqBfNmLaPcAQi6Mt0oFxRoF965cfsDvZ5kfv7KKz3fFX9pZJ08+ZKHZ0A791QdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438320; c=relaxed/simple; bh=X4btRLWlBKMCbDq20TaBkhH8QJ88/PgYuJR20fzITLI=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=VEmn6uKibNN1+2GCQ/BsxArDJIh6hWVXr2XEKrwpLy1PoVxiVUz4RChFiXaUa4Y7BM00cEt7bKTWVeNClf3TSHcb4OsEKi2FnvoDaWOsrcz1DbOQAvnyb0QYwhFH3e62J9Lb6+45+EgT/DP3NZgsyx++MA+WqkH4ei/8QhcvT8g= 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=O38CrkZ1; arc=none smtp.client-ip=209.85.210.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="O38CrkZ1" Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-772248bb841so1270929b3a.2 for ; Thu, 28 Aug 2025 20:31:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438318; x=1757043118; 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=O/OVMbJgRW/eDVvO/RVDtjvYaZaemVWZQ+ygQFZUFfU=; b=O38CrkZ1+Uo1DfcF0zlq8SQdRRSH/jh0T2lwjpfrySo45cGUQPO4Bgt0tTBGDnriTp 8WLcQQhSpte9eJ4vyShh1YQvWKmIojKxEPLvYtlww3+zsduIlA5PYzBxwF8AGMBpMTLF Kfcl1PKgrU+4VbvI85MVxkSVDZwLBHNdD1R0jIQwSag+t+XMSPWAGOaxhNH4dRyBjzr6 RmAEfQV7c9RtI6LYFeloS/dyOK7uqN02yl4S+B7vzI5Y2r9IJTmgB3aSAdDCktF+vqJv QlxYqyFkQERXmQydzFa16HhJPsxE2WpWZQ8cqJ57+WeBi7y39/imOjR5Z8NmqdBRTRrV fznQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438318; x=1757043118; 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=O/OVMbJgRW/eDVvO/RVDtjvYaZaemVWZQ+ygQFZUFfU=; b=MhcU7qWq/q6P4Eau7outacpRLL+g4YGijn92hEtTAnRNX/9gr9qzATSC/IOmoIt41P e4E5W/t/5p/mmr4UXNsoDKrNYmSkt1eGBRI9gSrXTqrn9nDE5dRvLJpOUOyhATeEq0jG b6IiZZGOqlmygXI9ZOFZIEl8bk9axH+lDKBcOMbD9s4xAsNoByCKxuQmmIA91vCL+uzM O5/LLJdlBj/gopPiMjX4DnHa9Uqb3CJ/44GcLG36XVjrVW1SzQKpnUw28Qa+tX16AkHz L6pngthShfIsN5qspzt9KS2obP63tcYT7DV4eWjd6WNt11VqDASW6OLJ/9GwBupqITfQ /oSQ== X-Forwarded-Encrypted: i=1; AJvYcCWYsv+TBbyu1kBCQLlmN+adcV/rFBoIfrslQm/3uTAl/K6I5CkEu1poWr2TojKqNSsQRT2fM/NhIW1UBws=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8H25yWqkoiKrmSSlmgPQbFJsFfBu91kZec+wtrPMxyVcyP03D mvLCd1l5WAmIVKqMAUqNjphGnexH1wUsM9SIgHjXgAoMD63j3Pnw3hx24keGUdGt/arZMY8s8OX Ow3j2G7QecQ== X-Google-Smtp-Source: AGHT+IGhi52JYXfipG1wyhGfPBLIRE9xiOewfEUPtc/4XnPiRu/83zMdprb9oJxsmjZ5FWUY2C0Sizv1hqcE X-Received: from pfbeq3.prod.google.com ([2002:a05:6a00:37c3:b0:770:9dee:4113]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:13a6:b0:771:e4c6:10cc with SMTP id d2e1a72fcca58-771e4c6143bmr25352444b3a.6.1756438317943; Thu, 28 Aug 2025 20:31:57 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:31 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-7-irogers@google.com> Subject: [PATCH v5 06/13] perf jevents: Add hardware prefetch (hwpf) metric group for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give the utility of hardware prefetches on zen2, zen3 and zen4. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index cc5dea81e5bc..98dfd5e9bd2f 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,67 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdHwpf(): + """Returns a MetricGroup representing AMD hardware prefetch metrics.""" + global _zen_model + if _zen_model <=3D 1: + return None + + hwp_ld =3D Event("ls_dispatch.ld_dispatch") + hwp_l2 =3D Event("ls_hw_pf_dc_fills.local_l2", + "ls_hw_pf_dc_fills.lcl_l2", + "ls_hw_pf_dc_fill.ls_mabresp_lcl_l2") + hwp_lc =3D Event("ls_hw_pf_dc_fills.local_ccx", + "ls_hw_pf_dc_fills.int_cache", + "ls_hw_pf_dc_fill.ls_mabresp_lcl_cache") + hwp_lm =3D Event("ls_hw_pf_dc_fills.dram_io_near", + "ls_hw_pf_dc_fills.mem_io_local", + "ls_hw_pf_dc_fill.ls_mabresp_lcl_dram") + hwp_rc =3D Event("ls_hw_pf_dc_fills.far_cache", + "ls_hw_pf_dc_fills.ext_cache_remote", + "ls_hw_pf_dc_fill.ls_mabresp_rmt_cache") + hwp_rm =3D Event("ls_hw_pf_dc_fills.dram_io_far", + "ls_hw_pf_dc_fills.mem_io_remote", + "ls_hw_pf_dc_fill.ls_mabresp_rmt_dram") + + loc_pf =3D hwp_l2 + hwp_lc + hwp_lm + rem_pf =3D hwp_rc + hwp_rm + all_pf =3D loc_pf + rem_pf + + r1 =3D d_ratio(ins, all_pf) + r2 =3D d_ratio(hwp_ld, all_pf) + r3 =3D d_ratio(all_pf, interval_sec) + + overview =3D MetricGroup("lpm_hwpf_overview", [ + Metric("lpm_hwpf_ov_insn_bt_hwpf", "Insn between HWPF", r1, "insns"), + Metric("lpm_hwpf_ov_loads_bt_hwpf", "Loads between HWPF", r2, "loads= "), + Metric("lpm_hwpf_ov_rate", "HWPF per second", r3, "hwpf/s"), + ]) + r1 =3D d_ratio(hwp_l2, all_pf) + r2 =3D d_ratio(hwp_lc, all_pf) + r3 =3D d_ratio(hwp_lm, all_pf) + data_src_local =3D MetricGroup("lpm_hwpf_data_src_local", [ + Metric("lpm_hwpf_data_src_local_l2", "Data source local l2", r1, "10= 0%"), + Metric("lpm_hwpf_data_src_local_ccx_l3_loc_ccx", + "Data source local ccx l3 loc ccx", r2, "100%"), + Metric("lpm_hwpf_data_src_local_memory_or_io", + "Data source local memory or IO", r3, "100%"), + ]) + + r1 =3D d_ratio(hwp_rc, all_pf) + r2 =3D d_ratio(hwp_rm, all_pf) + data_src_remote =3D MetricGroup("lpm_hwpf_data_src_remote", [ + Metric("lpm_hwpf_data_src_remote_cache", "Data source remote cache",= r1, + "100%"), + Metric("lpm_hwpf_data_src_remote_memory_or_io", + "Data source remote memory or IO", r2, "100%"), + ]) + + data_src =3D MetricGroup("lpm_hwpf_data_src", [data_src_local, data_src_= remote]) + return MetricGroup("lpm_hwpf", [overview, data_src], + description=3D"Hardware prefetch breakdown (CCX L3 = =3D L3 of current thread, Loc CCX =3D CCX cache on some socket)") + + def AmdSwpf() -> Optional[MetricGroup]: """Returns a MetricGroup representing AMD software prefetch metrics.""" global _zen_model @@ -278,6 +339,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdHwpf(), AmdSwpf(), AmdUpc(), Idle(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.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 A250823D28B for ; Fri, 29 Aug 2025 03:32:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438323; cv=none; b=SelfSz3O8+SiLuK2n315Fw6skO0L6RksEnpLQsosEJljn3duDsyDOvMckcedU5JkbIluu1vCsYpGcEkaod0Pk2o2+O4nz9QwkHA/PlAawlxkNxQeT5M3+Lg+TVwdcV4gceL98ZoEAIufGO9L9514OjXqgLqaRUmYF8jWdQVYh9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438323; c=relaxed/simple; bh=lwmduiXMPylmx2p4goBcEcl5mo4b7khmf4uz1YB5Rns=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=p+bCm7Y3mWAoTZViEFqz2Q7/IBfgSzFYPYF0Z2kttVxQ8Nua9XC7V9AJzO0xnIzQsmwrQwy41eJUcYo4U9KXAWXAxlsviwAU3Gtw5f3gtpCJvYjrAe8/UWLAKWbzyKg1QErJnuWz3JH3nbWjCyqxBUpGdnBy0bbLfA392W+FwyI= 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=rSSg8bn3; arc=none smtp.client-ip=209.85.214.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="rSSg8bn3" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-248d9301475so20965805ad.0 for ; Thu, 28 Aug 2025 20:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438320; x=1757043120; 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=r5JolLGg61q6SOmr3cF75+JHWqY5QYSUqQxMmL2WnA4=; b=rSSg8bn3yD5zkeZBOK4orqcLex5QuabU5pRXes0p9iZCguWuLCoy1IeGwraTgw2t+C qIks37I/1B7rGxZpOikCZlhrTHZ+kkaJz6J9zuDY8/ILyPEnRKvN8DME7sbcfw8htznZ MwQV8wzJaRIUazvkn5CtXED0mkrp1dXOGaNgSC1UkA9mBI0Dw2QTe99DaDx/dhg86IKZ fWtXP6ELqoBd9bCiRmuRRAIBz0QiklrPNPIf+SsyJeaRcJ3SWzV/cDdwmOO5wWCbP3fC PKW3/RDkcmk9T5JvuZpkPIAc1wvAY2LsnSHVOZ/Nfw7FYurxgfJm0WvgRTSy6dWfCluo CjdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438320; x=1757043120; 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=r5JolLGg61q6SOmr3cF75+JHWqY5QYSUqQxMmL2WnA4=; b=Y8jbqM9ea/cvj34yRXuew37lNsxoNIQ7/+d2wE93gLvWnuel7/E+y+y2lTCxOacs8M paiBoFjOn7ta9MVU6GGm10M9fKnMs3DHwS57hJLNJJ/FHBoHKVHS0+aFeXfaj40Eovr1 PoK3OuPdjumY6VhSuwgZMX48g9ojGOcHeRIirkLhdqsNMPCpfRF367yNtocAym/JP7UN wxuQyl5f2Xan7KhxGOR2K6gmktd+qZr4+Nf0qUeWe6pKygRD/0X5a4r/ZfrQ9b3MUQKD FW8KbPeW28o2skyUV5fXSQDeB9WXnZUklnsYm7Y39M/DiDd+KoEWPTFNSrW9Z/OFZXDU k3tw== X-Forwarded-Encrypted: i=1; AJvYcCWiH7taFgLo02NJw/SWJK1lzsC1p5T7awqr/eMMeRpe1of/imXa3GApqnKB6YpMuKelcMRG5tbirq4sWgY=@vger.kernel.org X-Gm-Message-State: AOJu0YyuZACmPGTwXr2qTcCw1s8A3qXt4WZLzBwjU+gD4sjhJhoSTLcf NZmYc7VlY+JephlgQ+cd6aY/4fks5KKA3LugKrR8NtPQuhTsVamU8GpIpm24Z1jXM0gelUdWiHV +0obIRsK+YA== X-Google-Smtp-Source: AGHT+IEHgqCd5KefCLHmp4SgJFYGz0bXyVdzvcwuFaVTzyXAsyS2sBq8Bx5rhu9Y9X2TldXIiKNNHzQrZGfa X-Received: from plbmo11.prod.google.com ([2002:a17:903:a8b:b0:23f:cd4f:c45d]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:943:b0:242:fb32:a51b with SMTP id d9443c01a7336-2462ee5b26fmr370011825ad.19.1756438319879; Thu, 28 Aug 2025 20:31:59 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:32 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-8-irogers@google.com> Subject: [PATCH v5 07/13] perf jevents: Add itlb metric group for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give an overview and details of the l1 itlb (zen1, zen2, zen3) and l2 itlb (all zens). Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 98dfd5e9bd2f..8f7265a732e3 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,53 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdItlb(): + global _zen_model + l2h =3D Event("bp_l1_tlb_miss_l2_tlb_hit", "bp_l1_tlb_miss_l2_hit") + l2m =3D Event("l2_itlb_misses") + l2r =3D l2h + l2m + + itlb_l1_mg =3D None + l1m =3D l2r + if _zen_model <=3D 3: + l1r =3D Event("ic_fw32") + l1h =3D max(l1r - l1m, 0) + itlb_l1_mg =3D MetricGroup("lpm_itlb_l1", [ + Metric("lpm_itlb_l1_hits", + "L1 ITLB hits as a perecentage of L1 ITLB accesses.", + d_ratio(l1h, l1h + l1m), "100%"), + Metric("lpm_itlb_l1_miss", + "L1 ITLB misses as a perecentage of L1 ITLB accesses.", + d_ratio(l1m, l1h + l1m), "100%"), + Metric("lpm_itlb_l1_reqs", + "The number of 32B fetch windows transferred from IC pipe t= o DE " + "instruction decoder per second.", d_ratio(l1r, interval_se= c), + "windows/sec"), + ]) + + return MetricGroup("lpm_itlb", [ + MetricGroup("lpm_itlb_ov", [ + Metric("lpm_itlb_ov_insn_bt_l1_miss", + "Number of instructions between l1 misses", d_ratio( + ins, l1m), "insns"), + Metric("lpm_itlb_ov_insn_bt_l2_miss", + "Number of instructions between l2 misses", d_ratio( + ins, l2m), "insns"), + ]), + itlb_l1_mg, + MetricGroup("lpm_itlb_l2", [ + Metric("lpm_itlb_l2_hits", + "L2 ITLB hits as a percentage of all L2 ITLB accesses.", + d_ratio(l2h, l2r), "100%"), + Metric("lpm_itlb_l2_miss", + "L2 ITLB misses as a percentage of all L2 ITLB accesses.", + d_ratio(l2m, l2r), "100%"), + Metric("lpm_itlb_l2_reqs", "ITLB accesses per second.", + d_ratio(l2r, interval_sec), "accesses/sec"), + ]), + ], description=3D"Instruction TLB breakdown") + + def AmdHwpf(): """Returns a MetricGroup representing AMD hardware prefetch metrics.""" global _zen_model @@ -339,6 +386,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdItlb(), AmdHwpf(), AmdSwpf(), AmdUpc(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.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 66F4723E355 for ; Fri, 29 Aug 2025 03:32:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438323; cv=none; b=QvkcBgSnv4OEutN4LN1daR0rSKNVGAKBRl+SiM1wuW1v5QKhV63guv1y90vfNABigPDRqcLPVWKITlN5Ly9QwysGITEHeAi7VB4OrecnryOAkGZqBjFWATn3M3etwkOQIK2M/Cj0FKPFm1W2xIG7whdgIPAutOInl0IccjgXZho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438323; c=relaxed/simple; bh=7HUXS7jH2VNCmaePpmahYNNoI04Cr4+LxjW5FlN9btQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=t9m0U1+Xwfh+6QVOnYRxzPCEJCK6tbe5ODBDvD1g0ul1xWsaC4W5/gPX2+agAoSmek15J8a0BWF6nXh//a4V/FCC1ehNLIYcx9H/3BWgozyAl9bZASGHh2seCvQ8MWJglhHYpFMkXj+dTkgrUdnyhicvPSMZWwvAd6HNZ8Jtg3w= 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=YzdWfQcz; arc=none smtp.client-ip=209.85.214.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="YzdWfQcz" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-246f49067bdso17014455ad.0 for ; Thu, 28 Aug 2025 20:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438322; x=1757043122; 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=KF2FIgYGl4ZqrDaV8kAKZUXJtv6VcaO/Qv9P5dWo5oo=; b=YzdWfQczec+iI4UIF4YVRVo4wy/djS9aI3C+jmK4+00ZyzC9NjR38JOf+StwN5+5at 2geOlhm21YKBrBGFS9JAS1oS9xuR4KfutOi0HsTe05N4beXp/4LfG5KZiTNTYxfdnPb5 HDE5Qbegb7lUJQS/jf3S2vD58FsPa5xCP/sgxT9d5QdqOVL7Y+/m47vLI28n/JjmAHaP /dZQWt7QOFC5N/HlfnvYkMYNDOAaszu3tFsWQg2sVrgEI0cLJYj3d3oQIBo5AVP8hAPs XUUI3t+hHvd8Hyyuwj798q5RvtnhyR+8Q17XE/TLmmn7VgMxJAEly+H6aX3yW5PBNpEk tVyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438322; x=1757043122; 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=KF2FIgYGl4ZqrDaV8kAKZUXJtv6VcaO/Qv9P5dWo5oo=; b=nu/Y0DQG3QZRpw0hvqvnSfzzrnsMN3kSr7v/V+DYiYpBWvupzi/m84imvbUaqEDecv 38/gn8c9qGK5hGUx9wTghe53kqtTaytvOfNP2TNBFgzP4Nccefn5t87i3sKD4NJSF3Tv 2XPu2dH0lwca/2tAdFv2zuCMTcksJEQB+VoHyxJ6HQdvl1i0PlUf7evZ0vq5MoxtIgaz oKnHyvFUVw1YgV0boWDBSpVBbKNF88KAARDg9voUe+oweO5fHK7GFiovsCIqVh2K4fj3 Xn24qaZnPtUuEVi61lLI6FgiV8AVuf0w7rjIv7qnka75+u7a0GWv0SxItXHM0IouGLk0 1n3A== X-Forwarded-Encrypted: i=1; AJvYcCU87GvMTT6epFXZfRUfMINRTRSI2+iSsLTjvYZndr/sQsabgwhkpYdzTnkFqwtu3vzwrYUv+Qp1FukbgC0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywp2wc/UJLQK4v2EkFC5RFJyEiBaDe06iy9kB1w/+Kc4YVKLpZq 7MHafLlo/HJNNBSLK5Vdu0pmrdzMxpNDnZCv24LoK+HeBE1MHJ/tzf4NLFL1e0qLh1o5d48zxxM lGOVi/0geBg== X-Google-Smtp-Source: AGHT+IEyPzCs03+Fd49SJT4qy0cUi86YdDbdpWb1/R/U+YdYRjcyFlMnA0X80KYGfT4R7u14aQmeh9uuNbfu X-Received: from plps15.prod.google.com ([2002:a17:902:988f:b0:248:96be:d4d]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:e888:b0:240:a54e:21a0 with SMTP id d9443c01a7336-2462ee13154mr350265615ad.19.1756438321737; Thu, 28 Aug 2025 20:32:01 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:33 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-9-irogers@google.com> Subject: [PATCH v5 08/13] perf jevents: Add dtlb metric group for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give an overview and details of the dtlb (zen1, zen2, zen3). Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 109 +++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 8f7265a732e3..38ff7d1caafe 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,114 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdDtlb() -> Optional[MetricGroup]: + global _zen_model + if _zen_model >=3D 4: + return None + + d_dat =3D Event("ls_dc_accesses") if _zen_model <=3D 3 else None + d_h4k =3D Event("ls_l1_d_tlb_miss.tlb_reload_4k_l2_hit") + d_hcoal =3D Event("ls_l1_d_tlb_miss.tlb_reload_coalesced_page_hit") if _= zen_model >=3D 2 else 0 + d_h2m =3D Event("ls_l1_d_tlb_miss.tlb_reload_2m_l2_hit") + d_h1g =3D Event("ls_l1_d_tlb_miss.tlb_reload_1g_l2_hit") + + d_m4k =3D Event("ls_l1_d_tlb_miss.tlb_reload_4k_l2_miss") + d_mcoal =3D Event("ls_l1_d_tlb_miss.tlb_reload_coalesced_page_miss") if = _zen_model >=3D 2 else 0 + d_m2m =3D Event("ls_l1_d_tlb_miss.tlb_reload_2m_l2_miss") + d_m1g =3D Event("ls_l1_d_tlb_miss.tlb_reload_1g_l2_miss") + + d_w0 =3D Event("ls_tablewalker.dc_type0") if _zen_model <=3D 3 else None + d_w1 =3D Event("ls_tablewalker.dc_type1") if _zen_model <=3D 3 else None + walks =3D d_w0 + d_w1 + walks_r =3D d_ratio(walks, interval_sec) + ins_w =3D d_ratio(ins, walks) + l1 =3D d_dat + l1_r =3D d_ratio(l1, interval_sec) + l2_hits =3D d_h4k + d_hcoal + d_h2m + d_h1g + l2_miss =3D d_m4k + d_mcoal + d_m2m + d_m1g + l2_r =3D d_ratio(l2_hits + l2_miss, interval_sec) + l1_miss =3D l2_hits + l2_miss + walks + l1_hits =3D max(l1 - l1_miss, 0) + ins_l =3D d_ratio(ins, l1_miss) + + return MetricGroup("lpm_dtlb", [ + MetricGroup("lpm_dtlb_ov", [ + Metric("lpm_dtlb_ov_insn_bt_l1_miss", + "DTLB overview: instructions between l1 misses.", ins_l, + "insns"), + Metric("lpm_dtlb_ov_insn_bt_walks", + "DTLB overview: instructions between dtlb page table walk= s.", + ins_w, "insns"), + ]), + MetricGroup("lpm_dtlb_l1", [ + Metric("lpm_dtlb_l1_hits", + "DTLB L1 hits as percentage of all DTLB L1 accesses.", + d_ratio(l1_hits, l1), "100%"), + Metric("lpm_dtlb_l1_miss", + "DTLB L1 misses as percentage of all DTLB L1 accesses.", + d_ratio(l1_miss, l1), "100%"), + Metric("lpm_dtlb_l1_reqs", "DTLB L1 accesses per second.", l1_r, + "insns/s"), + ]), + MetricGroup("lpm_dtlb_l2", [ + Metric("lpm_dtlb_l2_hits", + "DTLB L2 hits as percentage of all DTLB L2 accesses.", + d_ratio(l2_hits, l2_hits + l2_miss), "100%"), + Metric("lpm_dtlb_l2_miss", + "DTLB L2 misses as percentage of all DTLB L2 accesses.", + d_ratio(l2_miss, l2_hits + l2_miss), "100%"), + Metric("lpm_dtlb_l2_reqs", "DTLB L2 accesses per second.", l2_r, + "insns/s"), + MetricGroup("lpm_dtlb_l2_4kb", [ + Metric( + "lpm_dtlb_l2_4kb_hits", + "DTLB L2 4kb page size hits as percentage of all DTLB L2= 4kb " + "accesses.", d_ratio(d_h4k, d_h4k + d_m4k), "100%"), + Metric( + "lpm_dtlb_l2_4kb_miss", + "DTLB L2 4kb page size misses as percentage of all DTLB = L2 4kb" + "accesses.", d_ratio(d_m4k, d_h4k + d_m4k), "100%") + ]), + MetricGroup("lpm_dtlb_l2_coalesced", [ + Metric( + "lpm_dtlb_l2_coal_hits", + "DTLB L2 coalesced page (16kb) hits as percentage of all= DTLB " + "L2 coalesced accesses.", d_ratio(d_hcoal, + d_hcoal + d_mcoal), "1= 00%"), + Metric( + "lpm_dtlb_l2_coal_miss", + "DTLB L2 coalesced page (16kb) misses as percentage of a= ll " + "DTLB L2 coalesced accesses.", + d_ratio(d_mcoal, d_hcoal + d_mcoal), "100%") + ]), + MetricGroup("lpm_dtlb_l2_2mb", [ + Metric( + "lpm_dtlb_l2_2mb_hits", + "DTLB L2 2mb page size hits as percentage of all DTLB L2= 2mb " + "accesses.", d_ratio(d_h2m, d_h2m + d_m2m), "100%"), + Metric( + "lpm_dtlb_l2_2mb_miss", + "DTLB L2 2mb page size misses as percentage of all DTLB = L2 " + "accesses.", d_ratio(d_m2m, d_h2m + d_m2m), "100%") + ]), + MetricGroup("lpm_dtlb_l2_1g", [ + Metric( + "lpm_dtlb_l2_1g_hits", + "DTLB L2 1gb page size hits as percentage of all DTLB L2= 1gb " + "accesses.", d_ratio(d_h1g, d_h1g + d_m1g), "100%"), + Metric( + "lpm_dtlb_l2_1g_miss", + "DTLB L2 1gb page size misses as percentage of all DTLB = L2 " + "1gb accesses.", d_ratio(d_m1g, d_h1g + d_m1g), "100%") + ]), + ]), + MetricGroup("lpm_dtlb_walks", [ + Metric("lpm_dtlb_walks_reqs", "DTLB page table walks per second.= ", + walks_r, "walks/s"), + ]), + ], description=3D"Data TLB metrics") + + def AmdItlb(): global _zen_model l2h =3D Event("bp_l1_tlb_miss_l2_tlb_hit", "bp_l1_tlb_miss_l2_hit") @@ -386,6 +494,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdDtlb(), AmdItlb(), AmdHwpf(), AmdSwpf(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-qk1-f202.google.com (mail-qk1-f202.google.com [209.85.222.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 A7E7A242D84 for ; Fri, 29 Aug 2025 03:32:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438326; cv=none; b=F8Z2tMq81FWxHjpccml07E2nls7XEhUY5wd7ju3pCEJYEkwlfZ67zZCYjOWeM3bW/g+yxMlgtAaPXWJG9L7wgOghXCeT52GPwnKp3wBFOG76PpQI6ze/ktIdyNcEaQPd5a6mC4AhqrdpIvo091dfceFzS9oyKJwFeJyIuqrYFaE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438326; c=relaxed/simple; bh=mnGCQoVCpWKnS1efSKzWUWHETYIVpoK2sS6bGiha554=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=lmJKu7YGr6QGSxuy6r6ovpi3bucwFUGji0vFi3IpzdPTIFmWmTyBxrzQrht4SZH8speZEqNsSH1jhDq55JoyHfKE0Jd1MEfCNvGI6Ch3uHyGGFs6TNxgQ/+DLFwKkCIbmNWU10TqXsRoYppxLuGHRYKZpwR1tURhmNQmFK+BPNE= 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=d1RhhSsb; arc=none smtp.client-ip=209.85.222.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="d1RhhSsb" Received: by mail-qk1-f202.google.com with SMTP id af79cd13be357-7fc5584a2e5so124943385a.2 for ; Thu, 28 Aug 2025 20:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438324; x=1757043124; 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=5R53CM2TPsjTVnqMuru1HC/vS2z5OSjStJIxd3R0X+w=; b=d1RhhSsbT1HeejibdehA6zJzSGFoTQ7yB1Cpr3zeXVCqbDv0yFntab+wud7SdBjv5J 7cUUaVLACoXNswKhi2wlD4CUCo/69nouBz3Qmj2x43IGDUmL+ZmDiDCPwN8PEZUNZAVE kjZA0f4UizEw5bzoC++EaewOBM580j0Fb2cieF+Z8/uo1sfaLSXSR/Kf1Y1KpUF/8ZiG xNYcCyB2A/VG4XoQckbOIRbII+EHy6SBVAb9u7+mPrmGu45/hkeMWMThoefuzGb16EO8 T5+atoWycESd0FMJGtH8XjmIk0jd8v07skhPt6B8bkFF3pxABL5InS34HTFAnTKq1Kc3 bV1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438324; x=1757043124; 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=5R53CM2TPsjTVnqMuru1HC/vS2z5OSjStJIxd3R0X+w=; b=Fjspv3+xQd9WcPNg7tB+g0W6Bd6YTc1opVrm0gDN/SStBT/e3XZ601U9Ud75GDrMs8 o/PMahYHUzkZHeNKw54CnvFJDZXBlBsO9aSgDZzb/yyNxHNjASxKHbQDMiF4Pap89O8u B7gTWZuy5WXUm+J37hYaoLZc4n++IhWneSHn+vJceE7P9QZ1Ypo0HPyxTzdRBWvC08te Qw893h3G8Uymzj8bmvSWdvRCEIk/Dl0ikGHb4U/DS2wV/brzTripBxLrYS9rC2EeP42H dYoThqIBqZrpHOwNsi+jpjibDZ/RPkIpUyDPnY3V+mC6IA0SbFpJHZemxiM0FLsi5Vga srbA== X-Forwarded-Encrypted: i=1; AJvYcCVB2lg/UVJ58U31K6RMpn6hRsVx6y8FoAM51LfG0JTcyVGWVxCM1p3XfKScBnyZqfaVfL1ioY+EJyz/Tb0=@vger.kernel.org X-Gm-Message-State: AOJu0YwTVCz3zrqh2Q3WeP8BEbrzwbJkzI0qjex3B4S/eEvvpTn1wKL6 23zC7w9d9bod9HPAidAnH5ncMbqq41HHcC/Y5y4FmUtes/AX9TMJcxI592VT1S1Z1SQWKZyevHi wJ1yW5FsHcg== X-Google-Smtp-Source: AGHT+IE5KwZNXbrjkrGlNCyrW1riQSZJaDMhR8fcmb36i7fQTK2aprs5AGLAz7G1Hsr/ljtWTDIKNCwWp6Y3 X-Received: from qknov6.prod.google.com ([2002:a05:620a:6286:b0:7e6:9480:7485]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:620a:4409:b0:7ea:1060:ccc0 with SMTP id af79cd13be357-7ea10f53884mr2440632985a.8.1756438323478; Thu, 28 Aug 2025 20:32:03 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:34 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-10-irogers@google.com> Subject: [PATCH v5 09/13] perf jevents: Add uncore l3 metric group for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Metrics use the amd_l3 PMU for access/miss/hit information. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 38ff7d1caafe..71500ea2204f 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -466,6 +466,22 @@ def Rapl() -> MetricGroup: return MetricGroup("lpm_cpu_power", metrics, description=3D"Processor socket power consumption est= imates") =20 +def UncoreL3(): + acc =3D Event("l3_lookup_state.all_coherent_accesses_to_l3", + "l3_lookup_state.all_l3_req_typs") + miss =3D Event("l3_lookup_state.l3_miss", + "l3_comb_clstr_state.request_miss") + acc =3D max(acc, miss) + hits =3D acc - miss + + return MetricGroup("lpm_l3", [ + Metric("lpm_l3_accesses", "L3 victim cache accesses", + d_ratio(acc, interval_sec), "accesses/sec"), + Metric("lpm_l3_hits", "L3 victim cache hit rate", d_ratio(hits, acc)= , "100%"), + Metric("lpm_l3_miss", "L3 victim cache miss rate", d_ratio(miss, acc= ), + "100%"), + ], description=3D"L3 cache breakdown per CCX") + =20 def main() -> None: global _args @@ -501,6 +517,7 @@ def main() -> None: AmdUpc(), Idle(), Rapl(), + UncoreL3(), ]) =20 if _args.metricgroups: --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.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 3103F244677 for ; Fri, 29 Aug 2025 03:32:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438327; cv=none; b=LJyqt915RpdPjmFwHw9JzWlAbjN45BhpH0jHQkBCdJLEX65d/PFX5s6J8yST1EVYZSNLvvdvZUYvws/TKJmzbQLIDFBS5lFTMxTjFpboY/BL/g/GfCjShgssM5ptgbntRD2bDbQ0JZqxNAKP07AgOTQw8LrdnRjRfkOpMoj3Sks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438327; c=relaxed/simple; bh=9Hbibjw3LzGMRwYGwD6kAO14AeY+5/BV94P2rvvO/1Y=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=d4t6FO+fH0prl58lmw45THde4GzY4KWcXewY/j5fKi2QvjnsDiiWP8y7RfYaM5UICYrIW/eOap3jXG4uP5Gm6CNWm803MhBa80qcNU8Y0/Sg9vueZuLEu5Nu5yNK3KR5bvSg9ed2zY48UjDjETVUktRMfgW9DGWJ8m/6e9koGow= 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=tHFPYQzh; arc=none smtp.client-ip=209.85.219.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="tHFPYQzh" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-e953a49de25so2123754276.2 for ; Thu, 28 Aug 2025 20:32:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438325; x=1757043125; 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=KO2wQ/2lz2oBZIqRX2yZ/AaUoKZSlBZGjqjdjPcsVhQ=; b=tHFPYQzhKbVLP6a6wvn7xHwGH+CifuASB6VpHTp5hCX9LNfiOAn6q0tGAlEcoeYiXJ SQiYT48jptiMr8DcdEd0U7OD92U1PnYdB+/yfK24eKxV8KJYesMjqYUyRxTKUrobP3ds /5BWwZEEQL/VImnxj/NqYD07A8JyIVvltNXCkffj2GFQWl6Zd3AU3xz9Mzg4BCIQIc4L v+P6frgOZcK6fjghBL6EhVp5KNFLEoCfoqiEQy3qFGtb80NQe96hpRnDLp+2pjyfGXNo HxQSDhNgxSgFHUGtJqnAwRUlAIGB8Uo+ZHMRRw6q+Jgnrwussz/TqlvVUIiNmOOM8akb n6sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438325; x=1757043125; 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=KO2wQ/2lz2oBZIqRX2yZ/AaUoKZSlBZGjqjdjPcsVhQ=; b=YADlLu/Eq07MqR0qPd/SwPsJrAW6JwyOJJIh/HiI/opS05ovHn8CrTmIG2t2W+v+H5 PIX7+ukzyKoPno9Oocm+TZgtWAXv9uuBeN4nNzrsw88ghrNl4gCV4DJ2P/V1sntmED7N Av1vIyXqqrOShnSORo7mtvDcInYcuyoP72CPCKi6e4nTds4ln/53N9lEDaQ4+UNIFlSt TRmXZDa/y8zKqBfbGnHAugpZpdDhK/zLSCgK6p5JLR9tfFlv4GuXP7oFz18TPaz5W9XM 911PhSkLqk7PvLNeowyzfwI3PcTYOHP/XGpCP6gQqwJmNF2C0OVWyEIkUAMyvFWkBCdr oZXg== X-Forwarded-Encrypted: i=1; AJvYcCUxSYcsk8EyObkon3yUMOpCeFmcrtn9SG3P8+1XZep8LjuGWP536Qlkt7Sv5U8vdRRYmdQgDCTeXASnBVA=@vger.kernel.org X-Gm-Message-State: AOJu0YwZfXgXu5lA1sdI6z5Qt2F5hGRB0Z9pA0qpZb3gWKDJPpf0iLSt UZrNIar76MHSZTaDgtV0/cz5RODBbwFj262CIICR1ndRd93V9Xst8r9oH8YBToOpu6yN/SVMhQW NqBVLvZ0vhQ== X-Google-Smtp-Source: AGHT+IG84a7uVj/ZZ8zj/2yLFbZqkS6K3onxgn4Jw9R/Zjn7lRWUDPPoBmRmi3bbthNElPNuUaVXuBR5LHiS X-Received: from ybas10.prod.google.com ([2002:a05:6902:680a:b0:e98:95a8:b6e]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6902:2b87:b0:e97:258:a126 with SMTP id 3f1490d57ef6-e970258a636mr5092153276.46.1756438325187; Thu, 28 Aug 2025 20:32:05 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:35 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-11-irogers@google.com> Subject: [PATCH v5 10/13] perf jevents: Add load store breakdown metrics ldst for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Give breakdown of number of instructions. Use the counter mask (cmask) to show the number of cycles taken to retire the instructions. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 71500ea2204f..13bf3eaf498f 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -275,6 +275,80 @@ def AmdItlb(): ], description=3D"Instruction TLB breakdown") =20 =20 +def AmdLdSt() -> MetricGroup: + ldst_ld =3D Event("ls_dispatch.ld_dispatch") + ldst_st =3D Event("ls_dispatch.store_dispatch") + ldst_ldc1 =3D Event(f"{ldst_ld}/cmask=3D1/") + ldst_stc1 =3D Event(f"{ldst_st}/cmask=3D1/") + ldst_ldc2 =3D Event(f"{ldst_ld}/cmask=3D2/") + ldst_stc2 =3D Event(f"{ldst_st}/cmask=3D2/") + ldst_ldc3 =3D Event(f"{ldst_ld}/cmask=3D3/") + ldst_stc3 =3D Event(f"{ldst_st}/cmask=3D3/") + ldst_cyc =3D Event("ls_not_halted_cyc") + + ld_rate =3D d_ratio(ldst_ld, interval_sec) + st_rate =3D d_ratio(ldst_st, interval_sec) + + ld_v1 =3D max(ldst_ldc1 - ldst_ldc2, 0) + ld_v2 =3D max(ldst_ldc2 - ldst_ldc3, 0) + ld_v3 =3D ldst_ldc3 + + st_v1 =3D max(ldst_stc1 - ldst_stc2, 0) + st_v2 =3D max(ldst_stc2 - ldst_stc3, 0) + st_v3 =3D ldst_stc3 + + return MetricGroup("lpm_ldst", [ + MetricGroup("lpm_ldst_total", [ + Metric("lpm_ldst_total_ld", "Number of loads dispatched per seco= nd.", + ld_rate, "insns/sec"), + Metric("lpm_ldst_total_st", "Number of stores dispatched per sec= ond.", + st_rate, "insns/sec"), + ]), + MetricGroup("lpm_ldst_percent_insn", [ + Metric("lpm_ldst_percent_insn_ld", + "Load instructions as a percentage of all instructions.", + d_ratio(ldst_ld, ins), "100%"), + Metric("lpm_ldst_percent_insn_st", + "Store instructions as a percentage of all instructions.", + d_ratio(ldst_st, ins), "100%"), + ]), + MetricGroup("lpm_ldst_ret_loads_per_cycle", [ + Metric( + "lpm_ldst_ret_loads_per_cycle_1", + "Load instructions retiring in 1 cycle as a percentage of al= l " + "unhalted cycles.", d_ratio(ld_v1, ldst_cyc), "100%"), + Metric( + "lpm_ldst_ret_loads_per_cycle_2", + "Load instructions retiring in 2 cycles as a percentage of a= ll " + "unhalted cycles.", d_ratio(ld_v2, ldst_cyc), "100%"), + Metric( + "lpm_ldst_ret_loads_per_cycle_3", + "Load instructions retiring in 3 or more cycles as a percent= age" + "of all unhalted cycles.", d_ratio(ld_v3, ldst_cyc), "100%"), + ]), + MetricGroup("lpm_ldst_ret_stores_per_cycle", [ + Metric( + "lpm_ldst_ret_stores_per_cycle_1", + "Store instructions retiring in 1 cycle as a percentage of a= ll " + "unhalted cycles.", d_ratio(st_v1, ldst_cyc), "100%"), + Metric( + "lpm_ldst_ret_stores_per_cycle_2", + "Store instructions retiring in 2 cycles as a percentage of = all " + "unhalted cycles.", d_ratio(st_v2, ldst_cyc), "100%"), + Metric( + "lpm_ldst_ret_stores_per_cycle_3", + "Store instructions retiring in 3 or more cycles as a percen= tage" + "of all unhalted cycles.", d_ratio(st_v3, ldst_cyc), "100%"), + ]), + MetricGroup("lpm_ldst_insn_bt", [ + Metric("lpm_ldst_insn_bt_ld", "Number of instructions between lo= ads.", + d_ratio(ins, ldst_ld), "insns"), + Metric("lpm_ldst_insn_bt_st", "Number of instructions between st= ores.", + d_ratio(ins, ldst_st), "insns"), + ]) + ], description=3D"Breakdown of load/store instructions") + + def AmdHwpf(): """Returns a MetricGroup representing AMD hardware prefetch metrics.""" global _zen_model @@ -512,6 +586,7 @@ def main() -> None: AmdBr(), AmdDtlb(), AmdItlb(), + AmdLdSt(), AmdHwpf(), AmdSwpf(), AmdUpc(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.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 2D2E4247280 for ; Fri, 29 Aug 2025 03:32:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438329; cv=none; b=s28ZwrS9/eOQms8th2WWankcWM88q3UQax3L04KOAgUocz3K0CGZZ4hapSLHAnr+h60X+9RNLSwCj8fWpFvgDLQnVawU8E7xq9DFwzaj3503cQaTJUdmwcyr59GMsXdNQNv37g2Rw4ktzLcRsUMIcFxyJKoQOJO3FCNUWpMdNg0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438329; c=relaxed/simple; bh=epB32bgqoBg+Y9IczPEeSot7J5GpkAAMYtGdLSFAUEg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=GLI1OhOa9iqExOSAHxml2dfKq8Qmbn2VniMJKlN8PTsQom6K09VJzNeScxwxNCnnMMzM9oe3utIsXkHknMsgyehkE71Pjziw5VaLerW+zBhwg9c32yko8SlKrhq+yVGXb3vOvCrKeppWhhOa+3Josz1JczNYGl2WUIzRa38Wxd4= 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=01EkYCyN; arc=none smtp.client-ip=209.85.214.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="01EkYCyN" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-244570600a1so19145895ad.1 for ; Thu, 28 Aug 2025 20:32:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438327; x=1757043127; 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=6o45Rbe1ZhPS/kWrkC4UpT//UnRPcEEIFEGMxNVhUzE=; b=01EkYCyN9+LBjLGkw3/aFDe1JoYX5Em1aOjdUqQQWN1Tt26R/H+uBVS5baalOgCMqk Pg17hJdOrnmgxTNVihfvS15WEWwqtOdtv3VnS7GNUjxUYwBK62sNf6Vn3vfyyIbytrMU hFaXk0MjO2MlS9G7Hiq89qUyCW9nwAQZRyXVOgnY1TZZqW9BzAZpXsGlgRxbTdA+Ucm1 pV5wdZg9SFE0s5X/pCYaYBmEfUSxf2T4M3zjUi+PImhLrfNRHXahoxYf/tYLCuc/+hNt +QIkXD9jCoOceEiZCdbSqLMvNKH3PY7+sQSP3lE9mrKFZQh8g3IFXWh76oOLFraTLCMo +Y3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438327; x=1757043127; 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=6o45Rbe1ZhPS/kWrkC4UpT//UnRPcEEIFEGMxNVhUzE=; b=LETQyq7u6bsCigFBBbC/Qg7GNiprL+jaMOpaoMSL82S8Dup+Y6GQmHKp8L9tRqHcyy qRUHa+DLxxN06CgqIa7HIJUB9CHPBSQePenrk3xqBdkkEV9RhPd8Aocm5f8gg/Wm0d7H oiTeOwYImCEHx/Pivphlv4DyJ0gc8CuLeeP/0Dwa1dA1LctJktUW9kVat8v7POPWAhxd /ehgwFKzqQR2mg+jwU9C9nO4UfKxEM/aBAmIxS2qix4PhvNjeYDIKr9uis8Jj6Hl4zwU hzeE44hZj5buJPmBAtmIMaxIZo4kgRCrPdy4DX8OcH1uXDWMhXOHF+oqeDHOpnh8AaU5 U8BQ== X-Forwarded-Encrypted: i=1; AJvYcCVyB0dTgYfiO3GepnwhWrT5GxugjaBApb73FcvoJI9BsGC1k54Et0hnuFSqxbA622rzzq1uCx9jLjmQR9E=@vger.kernel.org X-Gm-Message-State: AOJu0YzqVpaakLAeDitoO58dU5nf6LxPtYQI5xqEm0xvcPKyEYNVDSxp CKp8hmKjFpleDuSqipoXFOW+hsUU4AX9UfhEFcUPE9jV/3kJckHo1+HMKEa8VuKTubPaQyRVKm9 rVSTm06Ezow== X-Google-Smtp-Source: AGHT+IGWFJKyKtY4P8UpIxPqLRFXmtn3fkygNqVRq1CXNPMFQs466KbnXI/f1SsdBuMKTvK8/3nFXr3dKqwg X-Received: from plbmg11.prod.google.com ([2002:a17:903:348b:b0:240:2ea7:26fe]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:d2cf:b0:248:dfaf:2aee with SMTP id d9443c01a7336-248dfaf3002mr61506385ad.28.1756438327192; Thu, 28 Aug 2025 20:32:07 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:36 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-12-irogers@google.com> Subject: [PATCH v5 11/13] perf jevents: Add ILP metrics for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the counter mask (cmask) to see how many cycles an instruction takes to retire. Present as a set of ILP metrics. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 13bf3eaf498f..2101598e8b04 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,41 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdIlp() -> MetricGroup: + tsc =3D Event("msr/tsc/") + c0 =3D Event("msr/mperf/") + low =3D tsc - c0 + inst_ret =3D Event("ex_ret_instr") + inst_ret_c =3D [Event(f"{inst_ret.name}/cmask=3D{x}/") for x in range(= 1, 6)] + ilp =3D [d_ratio(max(inst_ret_c[x] - inst_ret_c[x + 1], 0), cycles) fo= r x in range(0, 4)] + ilp.append(d_ratio(inst_ret_c[4], cycles)) + ilp0 =3D 1 + for x in ilp: + ilp0 -=3D x + return MetricGroup("lpm_ilp", [ + Metric("lpm_ilp_idle", "Lower power cycles as a percentage of all = cycles", + d_ratio(low, tsc), "100%"), + Metric("lpm_ilp_inst_ret_0", + "Instructions retired in 0 cycles as a percentage of all cy= cles", + ilp0, "100%"), + Metric("lpm_ilp_inst_ret_1", + "Instructions retired in 1 cycles as a percentage of all cy= cles", + ilp[0], "100%"), + Metric("lpm_ilp_inst_ret_2", + "Instructions retired in 2 cycles as a percentage of all cy= cles", + ilp[1], "100%"), + Metric("lpm_ilp_inst_ret_3", + "Instructions retired in 3 cycles as a percentage of all cy= cles", + ilp[2], "100%"), + Metric("lpm_ilp_inst_ret_4", + "Instructions retired in 4 cycles as a percentage of all cy= cles", + ilp[3], "100%"), + Metric("lpm_ilp_inst_ret_5", + "Instructions retired in 5 or more cycles as a percentage o= f all cycles", + ilp[4], "100%"), + ]) + + def AmdDtlb() -> Optional[MetricGroup]: global _zen_model if _zen_model >=3D 4: @@ -584,6 +619,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdIlp(), AmdDtlb(), AmdItlb(), AmdLdSt(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 2025 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 C6F2824C66F for ; Fri, 29 Aug 2025 03:32:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438331; cv=none; b=pztDzQu0/+0D747VX+QbrXv8PcQgOLiXMsoaXBWWi84H+JuSBMlJyTofc6k5bjUDD8P/wY8tLtsgvpds7RmE+1fFBXiFGDHHOc2xu8mt3giA8Q9XkS90G5HSgv8v2L9Vy1tgtdpiOjFDWo1OjadoH71+1nRO8dhAPTuhFft+r+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438331; c=relaxed/simple; bh=YLBmUKqyByKfChncNXeVqpD0TLc2h2paQwqWcHTkg5s=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=izyHWCWehFATCvkKY9OhPnuFZQ0OFMuuRXtMWEmYjbgoKWRBpMoxyzjuEgmvu9Kv0fTE3wXEBo0fTYcO9iVSlst2asQJ1PZXZi6KRP2MWSqCkcmqwUcv3qZEzqMtb3B2DwuNdh8neJvEXnSSBXiZIh7QDP8hrvPuGlBH6/N6QGw= 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=FU2wvjC1; arc=none smtp.client-ip=209.85.216.73 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="FU2wvjC1" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-3276af4de80so2395307a91.1 for ; Thu, 28 Aug 2025 20:32:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438329; x=1757043129; 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=azgTYDxidAa0Wg9n60KfmwRnNMDXPxnP7j6zRI4fODQ=; b=FU2wvjC1wPtEbzvphn3i4KvgAx6PxYRmViQYGe4V6RpNeIzF1H7BkiFeNpuLMgECeb pSs7L4U8H8SWNdr+MKywL6ZTlN1UezfZZjx91dLNcwYcbwoVkpgL3+5bj+tP3gHUVdta eV8OYg5h+z0Bmc4clXH6TejtkWdONf3U0723aKJELz4IlCHIEca9tcN5XP+V4sK+Kvlm dnBMlEMller5CLOpSv8poAsfzyzCMDG5zy++eBKKgxz+dnT3LnfFxUUewFsv+xo4Geho EzcbjRDhJGoGDl3fX0fpeoU+KsjAxwpa5urw0HKBzgVLyUAwKDIffM7th9IetXrd6C5u 8NrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438329; x=1757043129; 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=azgTYDxidAa0Wg9n60KfmwRnNMDXPxnP7j6zRI4fODQ=; b=FHJoWXyqGw5IJZSXKjl05Rje5nAaJMjO+L1pqFpIjqputD/dcajkPcSBmkcF3dexeA UsQqxLhJ62AcnBIHgkGJSfzC63EwwfvUOWw3HaP/vtpjPgK7QWtA98kL1Td9IwX2CNnn sdf46hqfAeWj/3RhY99dZAUTZRkb4+nnyPeEh4WeK0GyAUREDqvoaw13qrLbnvKmFHj0 NxNXvEsmciGvPxiYvH8DOdOLFXV1U+sIfNulNWLXlqtxgw8kkF0QBD6m3PGY8yWs8wWq NERHrnH6ZJI6gNU+U82/rSPT7b3g0bcTxu+fL8E6r/ONpYe7IUdUrg1c9N+7mXC/+boM HFCw== X-Forwarded-Encrypted: i=1; AJvYcCU38Y0a7D99zDgKUd8D734yaeo9NRVEVLAqFCxZR0noo9EHvk7jsxoISSy/B4IDrKt/OM3YkSmnM+xx0d0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8mb8FIVVSiAaFdg8Z6B7bQG3KvpTU9IEbTvcXMCFAsGPW3jIu OidinM4cp5yLLsixqCVWniAhNIp8I+MiKVCo/LgodM5T4bU82bzwaZYP+wpDmcOmYBi5WcP43ic CE+upsSIxGg== X-Google-Smtp-Source: AGHT+IHOiZutmCPWmceroMLgbMji6CBXE8Gx9EyD41EFFhxkLVIZbmvadQT7TJATRvQTfh0weEfaVKws5J/J X-Received: from pjbsc11.prod.google.com ([2002:a17:90b:510b:b0:321:c36d:1b8a]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:2ecb:b0:327:e34e:eb16 with SMTP id 98e67ed59e1d1-327e34eed17mr1435964a91.1.1756438329101; Thu, 28 Aug 2025 20:32:09 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:37 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-13-irogers@google.com> Subject: [PATCH v5 12/13] perf jevents: Add context switch metrics for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Metrics break down context switches for different kinds of instruction. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 2101598e8b04..0578ca7fdf92 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,37 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdCtxSw() -> MetricGroup: + cs =3D Event("context\-switches") + metrics =3D [ + Metric("lpm_cs_rate", "Context switches per second", d_ratio(cs, int= erval_sec), "ctxsw/s") + ] + + ev =3D Event("instructions") + metrics.append(Metric("lpm_cs_instr", "Instructions per context switch", + d_ratio(ev, cs), "instr/cs")) + + ev =3D Event("cycles") + metrics.append(Metric("lpm_cs_cycles", "Cycles per context switch", + d_ratio(ev, cs), "cycles/cs")) + + ev =3D Event("ls_dispatch.ld_dispatch") + metrics.append(Metric("lpm_cs_loads", "Loads per context switch", + d_ratio(ev, cs), "loads/cs")) + + ev =3D Event("ls_dispatch.store_dispatch") + metrics.append(Metric("lpm_cs_stores", "Stores per context switch", + d_ratio(ev, cs), "stores/cs")) + + ev =3D Event("ex_ret_brn_tkn") + metrics.append(Metric("lpm_cs_br_taken", "Branches taken per context swi= tch", + d_ratio(ev, cs), "br_taken/cs")) + + return MetricGroup("lpm_cs", metrics, + description =3D ("Number of context switches per seco= nd, instructions " + "retired & core cycles between context= switches")) + + def AmdIlp() -> MetricGroup: tsc =3D Event("msr/tsc/") c0 =3D Event("msr/mperf/") @@ -619,6 +650,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdCtxSw(), AmdIlp(), AmdDtlb(), AmdItlb(), --=20 2.51.0.318.gd7df087d1a-goog From nobody Fri Oct 3 14:29:33 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 9FDEC221546 for ; Fri, 29 Aug 2025 03:32:11 +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=1756438334; cv=none; b=tBy551vRjBeFWs+0hcwDjMVZxtgaYL8DccnKq8V4ehuwVn4qKl128M9bdZWx9PNHlMDVA6AuhMH9ANJCk2lnW5cX13MyMDVDdinwfBTN63D7VNbGVxD2z5oicfYzbgMkPq5DocAou2jv/sk9pLtwcqUikL2enRhihDwwfP7S7NI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756438334; c=relaxed/simple; bh=UWuqUFoPAbtNw47XnAvBqrdOwtohVNIOBeexM7UAGKw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=AXu9GlBlGe1EPndRX/hZtCjBpoJF+PgSsCVxGvCWZD/nAHY4h3XwN0Y1BfsRaE1L1Rey/Lmh+y3jnOUJyc76+C6A1CWEbeWj2PtZeSGgu0SW+Ii/Ka7aP8o0GtdtFV5HHzdz2axls2iJKVUv+nW4GRBSxoro4aJ5LOidcngG2Q8= 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=VdjIH+qz; 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="VdjIH+qz" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-b471757d82fso1288900a12.3 for ; Thu, 28 Aug 2025 20:32:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1756438331; x=1757043131; 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=9QGW1t2fTrlxsy99oh9r+8W3JLxNT7O01vCVlWKIguI=; b=VdjIH+qzsUOn4WEaym3bsio8QUzhrrIF9GbeEp4y02I+hPE1yMStpesMDm4N0HNZrT i7MxL0WVbBFGwwKCNVwSDGgq+f9Gva6kIXumRioEAvdyT5kvCdQ2ujRyujAW3Gj7fB3l sSMlIcVQXfH5sdjhryi6iW/rQGFmAOVXHdCI8Ti21nCAwUBSAWJzBCjXY3k+mJi19j6Q kpIqtCYi5/cpKfPh4kpWnuTu9uD18Svyre0236If4AcIogDz+TWmECFDkQS/y3LZcVRq m8aQtwgNaeMtYSxItC+IVr2MChxvv8DCP1CbhyLrmD2kZCrFPBOCb/jpv1QsMqikk9Qa wvoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756438331; x=1757043131; 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=9QGW1t2fTrlxsy99oh9r+8W3JLxNT7O01vCVlWKIguI=; b=qkrjVNkB4dkQkfPfrcs7tmUno76kU+E6zQ/RjushvomtQH6lvI8F3Ar35U3v2xxaoO 6RiiauWrAiFgw080fFtz0T7iT3uZObsSNApt/lmRav9nArtKKmQwMbfaYvUU4DY27yun 28Td1V425g35czs3k6kcH1eIEEI22L4NsGGQuYPWVZBA4A5q5t5mb3uZWob8K44Fo86J k7+k0ROOlN2pAhl0uG7E4wJxwSOtF6S0ZI6FHCzyMpX6R1DqSJLjwsfw6tlLDJGIukwf iAdfCYz8geM6OeFuqT1VfZlmzrKglVSgB+jxSEJMXyivjuqHRZ3bnkMTHgSNIlLaC8iD DSCQ== X-Forwarded-Encrypted: i=1; AJvYcCWJOCvI4Nqf0IkU4WpUSp5eajuukXmNGrfLZArXMnzksw3bXeE0EB5ouuPeDX8UtSq2+GHWAOwplUPO8ns=@vger.kernel.org X-Gm-Message-State: AOJu0YwXrq89vvPWQOJ/1+GKeREN1xitVLo6M3UcOlDnZmHTqup9Fiq9 VHU6jA6LFmVkDZR0xCjcGYymDCU8eur76fIxzy6Y9nX8G25cAvAXjwHHqmlwgqx6ObjRDKbQ6Fn hyTfI/dAztA== X-Google-Smtp-Source: AGHT+IFruY13+0TIPjlDfpbi3fSgUGsWRBLlzXlFgq9LQVQaDvQ7884Pr78k5HIex9b+grU3F8xjr/hDvs29 X-Received: from pjbsb4.prod.google.com ([2002:a17:90b:50c4:b0:325:8ff7:fd4e]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:2d83:b0:327:9345:7097 with SMTP id 98e67ed59e1d1-32793457259mr9000011a91.10.1756438330967; Thu, 28 Aug 2025 20:32:10 -0700 (PDT) Date: Thu, 28 Aug 2025 20:31:38 -0700 In-Reply-To: <20250829033138.4166591-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: <20250829033138.4166591-1-irogers@google.com> X-Mailer: git-send-email 2.51.0.318.gd7df087d1a-goog Message-ID: <20250829033138.4166591-14-irogers@google.com> Subject: [PATCH v5 13/13] perf jevents: Add uop cache hit/miss rates for AMD From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Xu Yang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Jing Zhang , Sandipan Das , Benjamin Gray Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics giving ratio of uop cache hits to misses. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 0578ca7fdf92..d51f4c3fe0cb 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -571,6 +571,23 @@ def AmdSwpf() -> Optional[MetricGroup]: description=3D"Software prefetch breakdown (CCX L3 = =3D L3 of current thread, Loc CCX =3D CCX cache on some socket)") =20 =20 +def AmdUopCache() -> Optional[MetricGroup]: + try: + op_cache_hit =3D Event("op_cache_hit_miss.op_cache_hit") + op_cache_miss =3D Event("op_cache_hit_miss.op_cache_miss") + except: + return None + op_cache_total =3D op_cache_hit + op_cache_miss + return MetricGroup("lpm_uop_cache", [ + Metric("lpm_uop_cache_hit_ratio", "Uop cache full or partial hits ra= te", + d_ratio(op_cache_hit, op_cache_total), + "100%"), + Metric("lpm_uop_cache_miss_ratio", "Uop cache misses rate", + d_ratio(op_cache_miss, op_cache_total), + "100%"), + ], description=3D"Micro-op (uop) hit and miss rates.") + + def AmdUpc() -> Metric: ops =3D Event("ex_ret_ops", "ex_ret_cops") upc =3D d_ratio(ops, smt_cycles) @@ -657,6 +674,7 @@ def main() -> None: AmdLdSt(), AmdHwpf(), AmdSwpf(), + AmdUopCache(), AmdUpc(), Idle(), Rapl(), --=20 2.51.0.318.gd7df087d1a-goog