From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.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 DE72113FFC for ; Thu, 14 Mar 2024 05:59:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395981; cv=none; b=sgwCSSRBqRl8ADYKSP6y+h7kgsuCWZagXKlgOIv5b8RfHCq1DT9ueCEiepDQe7HOdjJGSxnw9POIkn3fi7cZyXMmPqgHc/OVfepMiBUHoyYx3djEZNAKuKpygwr8QFZ5tOedq695xhNzKYO6O3XiVu09oQDk6KP1ipoKb2HG/C0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395981; c=relaxed/simple; bh=RoaV1PGHpB7iF+mzzYLJ0/v6xXT6l3SZAuzH3D8tIYE=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=J2NVYUmWGYWgvAHa366atl5imkjjdW/nKmBKQBw5Ywxax4XqAMTsHh+Qf2EcQGyau6/iklUr4w2U6LeVB10mpK32OMK330okMq6VD0oDBCqdnWJ2vvwIOMH5UkBF9H6RAdq06iHDgxLlTsntg4rr93aF1vLOcGzvAkhDNfERv8E= 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=eMQKKVpm; arc=none smtp.client-ip=209.85.128.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="eMQKKVpm" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a0a5bf550so12016977b3.3 for ; Wed, 13 Mar 2024 22:59:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395979; x=1711000779; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=dpyhD4Js3wJeDTz3uN0UEDz2T8BCDX/cFh8ndCI6xOc=; b=eMQKKVpmarxTCEqfJ5/+YdsflY/IyFOviGs99c2eH4IB8SDWOboxbZpunqMwZnpseF CO9ARn1xaKLftS8zAJKWoyssx6NZdpTa0WaZOz8vAcUuStsbCPnmLDI18bf9DB7Gc5bI SOimIugGT8lDELYYX0TCYfCoWEw+BY+KzA4PTysL1o4oklUbimKeEtWaQasdM1u+0/qc i4XMTzEmWz3vMtt8hbmR2VMA6Y7MOoRUfDfeRKVLkP6H+TpIM8Es+kTE6eNpVPwQLSdd eZ+4fmjqTRbdObNfS8nyIZAyoZQaZAXSJ2U/G1HP3HgJoOFYUmIQ47A4ssh7TVc/vKaG wung== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395979; x=1711000779; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dpyhD4Js3wJeDTz3uN0UEDz2T8BCDX/cFh8ndCI6xOc=; b=K90kT6PSXzI4QJfUcvm73c9K3LZYuzDpkzbM3d+nx8zNER6462ven6J1NVtpvrcqRf 5iTa0EmZYf/nJ9e2pxJIwnQyqhRCR60XZ47xJ3MEFwckNpto4IGIyvDkDVU6xzhMeWpI xtND50pOJbqQo0LfHTZCdWNdrpk6b4XECdQRPrNg8EaJ24pT3fGM3uJu18tU+DWUZhKw 5IBoQeIlv0i0kegI7ViPJqGgrt2OJhKbBfqBsi62QRYIuqg5DV3k3NIhtlxvIofC0ZuL 0FVxjxHiNto1UZCWTi/K0nNe839GSMfG/wnL3ayFKba2ui10ldtA6lRv0H4W/ICjLVcu MsBA== X-Forwarded-Encrypted: i=1; AJvYcCUaOsyoDRc25giPY29Vyizewr1KkMjB7XuZzjrfuLBBVxhn9Xebu4qbdvNy5dZelFJa6S5OjR0kh5MwsdUPS1gg/QMmD9jpnBn4kJF3 X-Gm-Message-State: AOJu0YyZioqPyHMFYjc4I7Fd1xlhbe4KnQCgta7j5+IMo59DZXOrYXnO UmcxNR65pLnW9xHcp4qsnChqMQvSnY9bTQy3X2ffPJXdkMsLYgjVEYDl/UsGyfZPYidl9Dmz1kg RmM8g/g== X-Google-Smtp-Source: AGHT+IG1J4Jc5hyWHjED6a03IGV2XHl621GM4AHi1LarrkTaUZeYHjyI667L69+bKaCy3v7R4rM9qXfHQnlj X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:690c:a15:b0:60c:ca8a:4c10 with SMTP id cg21-20020a05690c0a1500b0060cca8a4c10mr172343ywb.2.1710395978939; Wed, 13 Mar 2024 22:59:38 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:00 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-2-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 01/20] perf jevents: Add RAPL metrics for all Intel models From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a 'cpu_power' metric group that computes the power consumption from RAPL events if they are present. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 45 ++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 04a19d05c6c1..58e23eb48312 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -1,13 +1,49 @@ #!/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 +interval_sec =3D Event("duration_time") + +def Rapl() -> MetricGroup: + """Processor power consumption estimate. + + Use events from the running average power limit (RAPL) driver. + """ + # Watts =3D joules/second + pkg =3D Event("power/energy\-pkg/") + cond_pkg =3D Select(pkg, has_event(pkg), math.nan) + cores =3D Event("power/energy\-cores/") + cond_cores =3D Select(cores, has_event(cores), math.nan) + ram =3D Event("power/energy\-ram/") + cond_ram =3D Select(ram, has_event(ram), math.nan) + gpu =3D Event("power/energy\-gpu/") + cond_gpu =3D Select(gpu, has_event(gpu), math.nan) + psys =3D Event("power/energy\-psys/") + cond_psys =3D Select(psys, has_event(psys), math.nan) + scale =3D 2.3283064365386962890625e-10 + metrics =3D [ + Metric("cpu_power_pkg", "", + d_ratio(cond_pkg * scale, interval_sec), "Watts"), + Metric("cpu_power_cores", "", + d_ratio(cond_cores * scale, interval_sec), "Watts"), + Metric("cpu_power_ram", "", + d_ratio(cond_ram * scale, interval_sec), "Watts"), + Metric("cpu_power_gpu", "", + d_ratio(cond_gpu * scale, interval_sec), "Watts"), + Metric("cpu_power_psys", "", + d_ratio(cond_psys * scale, interval_sec), "Watts"), + ] + + return MetricGroup("cpu_power", metrics, + description=3D"Running Average Power Limit (RAPL) pow= er consumption estimates") + =20 def main() -> None: global _args @@ -31,7 +67,10 @@ 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.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 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 D325A2942F for ; Thu, 14 Mar 2024 05:59:41 +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=1710395984; cv=none; b=L05WDBkb8PJPeo4pNO4pkRX2lsvlVygdLyIGgVMBTJX/JZzyjebQ13J+UJvNpGtxU2Fezl9vdCvvh2YK9DEEwhEpZdGUVSvMPG+RP08r8CNYg+u9omXxgoRar12PtEjfG/52U/6o28AY0B+bJ9GCQA70KW4W/oDurPvtiNi5gLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395984; c=relaxed/simple; bh=OQajBVIwbLXlXH3seDBeY4/yU1jC4uwbycQvos7p61U=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=uLBmmVYvkrnc92E1EneW3+eZ5WcoLpzbO9zDpTxE3QmmUMJxg2l07poF7TQyNUF88HlqllgF47sDubjt0LjfaxM7ZQxYWqRVAPmd0zK29mVjvQ1f38kOIdACd6I0xUsrp6PbXPs6Q54KWXg53ZU3ftuhLkvE46qmGkJaqwAf0OQ= 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=uw6UsQ1u; 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="uw6UsQ1u" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dcc58cddb50so881513276.0 for ; Wed, 13 Mar 2024 22:59:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395981; x=1711000781; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=Dca7nBv5ffv1LpnnFFef+qmnX+jAjEuRfkSwVUElMaM=; b=uw6UsQ1u3QZk7Hq7vCjk4/cH2uTRyW57TWrydB7WaSl2OfYNtt2ftiWLUYN9JsI0vF f2vbh8b8LnJZznzBkEjSrVz5cn90y1VQcpmKhJLDqMfHZ1684PjgW2WWwjN/lvE9qUX+ 8YWgbm0Scij/la1XkDRjvBP1/Ess8hPt4FLlFD41mPApBzNEIo0NLWR71N7qJBfLMF6F pXaPAiG7U8ZhpXs8BfodAqQ1zg1nntrP3HRwqGfEs2KA8FYAXFfVa0M/KtiLkhp1QGqb TIWj7AD1FFoNulzupwqWST7jB4rY/DAY9PDBPnSnR9sZrGP9bH3tCB8ty9U0rUrw55yo Qb3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395981; x=1711000781; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Dca7nBv5ffv1LpnnFFef+qmnX+jAjEuRfkSwVUElMaM=; b=uK5gmRgqGxBomsCyrUP4L+lcfOWTFS28wxFBZP9x1h3XePKttogGeiQHO4LsT8j5xl 5cTWtzWSuF0XBY8doROcbYM3orTwrJ4DxHqdWv6KCR/nVHv2sp9NAcsNrIdzQ9hyr0i5 0ZPdPn/SxhJmawA6HxmxNmVK4flAb0Do1wzDGsG3sseooDRVTMrB3hx2OAzZXI5JMswF dglc9r+pPGivtJgoPsYCboliV46ng+rggw7YlKDli/oGjA3yrBpn99MO3dSFv6FUDIhe IFbNuDpjjNRjPUaa5LGBO6Am7j2z4gZzavEGO4joj5AQy36u3vcw2/o+HgpKhHOMd3DB mMiA== X-Forwarded-Encrypted: i=1; AJvYcCUwp+JZ0KxGeQ5iWf0fPcbsSNKE8rOB8ynvIuyNVYMwvZSRYNK1H8Xq2B2M8Al0o6a/uimMZ6KVMFEvkaqbrC3ui2xIS8sAW3XGCmXA X-Gm-Message-State: AOJu0YwLB+MNfYLRixrGOIwtcutHnFEQss66bP5z84lJ/hN8pLZbpTrG ITQlHN9/36kYZC89ZEqLtohVcSvyzOhd1mWZh9H9QrJPibp6C+Hbv8cKOQgr03DvTDRVZO7jP3q DcBAtvg== X-Google-Smtp-Source: AGHT+IE3q0P9tUDVg+d0BLMp1b5jR1m3PPrykyADgJLMI9+R/WuDbjv//oDHpHvz4iACeyIpNNOo/27VzaDB X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:220e:b0:dcb:bc80:8333 with SMTP id dm14-20020a056902220e00b00dcbbc808333mr212170ybb.13.1710395981118; Wed, 13 Mar 2024 22:59:41 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:01 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-3-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 02/20] perf jevents: Add idle metric for Intel models From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian 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/intel_metrics.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 58e23eb48312..f875eb844c78 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_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 @@ -11,6 +12,16 @@ import os _args =3D None 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( + "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 power consumption estimate. =20 @@ -68,6 +79,7 @@ def main() -> None: LoadEvents(directory) =20 all_metrics =3D MetricGroup("", [ + Idle(), Rapl(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 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 F2D2214A8E for ; Thu, 14 Mar 2024 05:59:43 +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=1710395985; cv=none; b=h1XuNCRwwLdIqhAS62NELwyKg5LuqzKfClcn7Ae6wEiwRJDdcTNwf4O9XkvgOlpKTKbN94cKkU+VhRsElarsepTWbb/LeKi9zwO0U+cPcMe/RHUwK1QhtCvIv3digvht/lS+iAuPaS4ONqsVzRmCaUUoRkyQBIwzDlAi3LBPGKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395985; c=relaxed/simple; bh=cCSe3xBYHq317mfPy7MagbKNpW1UoVS0ABuezkShy9Q=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=XLIecPJoEiM6inUFz0zxheu3GMsxSHUu2wukcjXeG2ZR9se6XyWegW5+7VuftaTzw9VTFIu2qrzFi+pIRDbfQlozeXJxeVrIBNLqWZOUp2sG9q+kgCJxxUVfv8ck4xeM/qyUV01yvJxBFI7CIyz+8zih4Twc/h08jS2P7JxhwrM= 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=pStV3YOV; 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="pStV3YOV" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dc746178515so895917276.2 for ; Wed, 13 Mar 2024 22:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395983; x=1711000783; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=+veiSuaqo+0WmGFGd8SW73u7DHqxbnCf8x6yupKtD1s=; b=pStV3YOVX8Jcbj3uaMoU5XRlXBHKihx9wOOx6KtDZgAYLOehiP8IPJG+GmxDAXKgbb Q6I/Dpp74X4KvDnin9qHeKZMRDhwdmgWMY6dXxZ6D/zZiNJjckk1CUA/AKCezp1bWrA5 4yWBrasyqV9j9a+rlHVO9cuHT5HiGXOGXUjZ9rORXUjsXPMOVTukmg2HITF9TanZ8LYt jhVWfJtvLujFx/9TM/FcJ3UfQcv32d798xFTHFc5/tj18XoXMDfFrupb6NL6mwRvk5fn /xsUvfNuAAACgGvxWtstZivRgxtHagb8EPwPUq+NQM2bIZpfl2hBrhBxWu48XQUQU7/v VSJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395983; x=1711000783; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+veiSuaqo+0WmGFGd8SW73u7DHqxbnCf8x6yupKtD1s=; b=V96b1JNfW7+OijF6ta7if3LRuabeDZwkpKmTO+8xwuziS/w2cUqIzWSwatskCW026Q Ple57JNhw3BUJBlXgS3/i4ydiT2QktNgPhPC4Yc9XSSkT8G+FpkG1uPDG/Dqaqsktu9D WHzmnjgqpZNuX5MgjYxZAeYue695YaM79OXaDRNnkACmY/ErYxFBvowRW/UYa0YU04gx U4/iFT7I9OvqrckurnZLfjsRttgjuu+CgYKaop4uUnTXCybqOgUvn7BvBoNJa3RQvlaC gYUPIv1CVWWeyF6rHnIH1qOtsu/q4omDj1JLjA/g8NSFVpqMkiGHHYes2CYZyImbnTl8 VlZA== X-Forwarded-Encrypted: i=1; AJvYcCX1pqLspplSqdiW/NMwNklldXEYEPoUMA0wqfOEHperFCWlbA/8t8VDb7uxYZrx6UHslVvp0JsNRTKmnl1gMoCn6yP/db+0wHcN7L/W X-Gm-Message-State: AOJu0Yw3h9QqU9WgkNc5Sly3L873bM6AB9O1VpMzjtgohwq8Wpg+5/Yz Wk67HFsdE7wDQ//nhRro1D2cCC9pVZp33dKEU553SDlWbvnKN32WQhRsokqsioPw3ERoRhoT7Z/ WMmImlw== X-Google-Smtp-Source: AGHT+IEzFwG3kjeE10nJw0pr6EwNRZ5U8tke7krs3iomuop09QzxhoLt+T1Qb3x2zno97wzCFNTWUvdibRro X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:2181:b0:dc7:49a9:6666 with SMTP id dl1-20020a056902218100b00dc749a96666mr255019ybb.3.1710395983180; Wed, 13 Mar 2024 22:59:43 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:02 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-4-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 03/20] perf jevents: Add smi metric group for Intel models From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Allow duplicated metric to be dropped from json files. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index f875eb844c78..f34b4230a4ee 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -2,7 +2,7 @@ # 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) + MetricGroup, MetricRef, Select) import argparse import json import math @@ -56,6 +56,24 @@ def Rapl() -> MetricGroup: description=3D"Running Average Power Limit (RAPL) pow= er consumption estimates") =20 =20 +def Smi() -> MetricGroup: + aperf =3D Event('msr/aperf/') + cycles =3D Event('cycles') + smi_num =3D Event('msr/smi/') + smi_cycles =3D Select(Select((aperf - cycles) / aperf, smi_num > 0, 0), + has_event(aperf), + 0) + return MetricGroup('smi', [ + Metric('smi_num', 'Number of SMI interrupts.', + Select(smi_num, has_event(smi_num), 0), 'SMI#'), + # Note, the smi_cycles "Event" is really a reference to the metric. + Metric('smi_cycles', + 'Percentage of cycles spent in System Management Interrupts= . ' + 'Requires /sys/devices/cpu/freeze_on_smi to be 1.', + smi_cycles, '100%', threshold=3D(MetricRef('smi_cycles') > = 0.10)) + ], description =3D 'System Management Interrupt metrics') + + def main() -> None: global _args =20 @@ -81,6 +99,7 @@ def main() -> None: all_metrics =3D MetricGroup("", [ Idle(), Rapl(), + Smi(), ]) =20 =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 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 58C9E376F2 for ; Thu, 14 Mar 2024 05:59:46 +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=1710395987; cv=none; b=lCie7dUgbwEWSiC75TP/cjLCpxrfteiKl2GGQZgmhfTQmbCauDThlE1kN97oipSoKENlpCdD5cOeVRsSGIf6luNau7pCEAn/EtsebMbYHNTaVyBxh0tNJSEhJNNZAVF2As1pHYgWdi6Ju6pPxuhP7rW+Pz2YyXV0evyxBo0txs4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395987; c=relaxed/simple; bh=eF7ssQY3Gy21CwAhmYSgaNrkiuCVKaXgj6K+L8MWMqQ=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=GwfPGgZu7GsoMx7sYVUcGw5a/fFmMiBZZe/6/pE3xal3QIZLRmJjpWkjhJGeiYP6nES0SEVBs7bZTCgXTEhos2wAsd6ovhd7iqysf1nDGCf1J02gfwiQrQXhsbAq6C9euEXPpuAEkWh/5NPKoewHYZ1axVUPML23xSFeN4wJDPw= 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=1KwtR3TE; 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="1KwtR3TE" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dcc15b03287so719063276.3 for ; Wed, 13 Mar 2024 22:59:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395985; x=1711000785; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=N0sG6qEZhABASQQZa8hhsLFbDsdErIcnzVgtt+v1EnQ=; b=1KwtR3TEbz2pSx9I9DDjVy11CEvYU64Rzy844tjN5ONp2k/nPVi/ktdpS4m8rtwHPL 2ikDADxVUISluJ/OFc6K0BcI96NW9UIW44bsXzAxoyl5vtHUOmqKFSMBbpe+TEHFpvYJ CAkaz+z5l8j5llIEPhqunJtOvQkfyuT6uaWs/1O2dG4HPq3upTWoVekoz0LVHJ2lrfw0 vsZPFswO32sPmLWHScrVoY57VAE4kMSBpM4gSB+ezghihUP71fCYI33lJb7SFETl0Xvv 9gKW6MaPi4wbpgTjSrtdoB+45L6owFqb3xFVoe/ifg2bJyS33Xxzpws9OF/HieL7LKg7 YJzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395985; x=1711000785; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=N0sG6qEZhABASQQZa8hhsLFbDsdErIcnzVgtt+v1EnQ=; b=kbFXXmggWeEruiCQAjv6lA4wO/b6RR0KUbIcfn565LhIStS7QVQGQKt6KLGW76bnBY Rp9kmRVNRvrAken5dNkqjZ/AK9BaS2pOJTOMRlkg3o/MZbPMDCZtg75XuVUh73klx8jn VmZHhog8JDCZw3v0Icuo1CHCjeCrFfZLmpx9GmaOgWwrYwbFoswUbzh51sRvkqTha7/e Vd+qyVUN4zlhmOueGDwN8iiIyLv1sD8popr9z9PEtlrRK1l3QJVAk2WjXt5DroXRLHxv 9A8uuZl5uU8VUMp6v/sCNKaE4hSUSBpinvx5ll3kJnOu0ZxMzncqGb8ON8IHXEyFrKZ1 /poQ== X-Forwarded-Encrypted: i=1; AJvYcCXGHUuuASsi0KWX2YCQmZIwEMm5IKf9rv0EDyt2OM+sImHRBCjdXx6Pib8ZdaCk8V2DlCGgR0SjrEo3qRpMctmQaK1spYH3k2ay92WQ X-Gm-Message-State: AOJu0YwAY3X5JUnn5J/hE7t/mPPIpB/BjHJAvN2s+seCW03wYoDBvkka 2Lfm8jp02Z19moLHgpTC5wWM10S4cu3beBUoyLMMZ+M0fQBUhHrTw2ttT0vlXXjPViqFqitizQx NhjKBzQ== X-Google-Smtp-Source: AGHT+IHL6Y/lYpr4DVd9H5tWZ6+PnYPxXSSQjocWmXv3H8ehp9WgmcYOHntDqL0eAQFrhyAS4KgtIKhOXyZC X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:1a46:b0:dc7:66ec:9038 with SMTP id cy6-20020a0569021a4600b00dc766ec9038mr20440ybb.1.1710395985568; Wed, 13 Mar 2024 22:59:45 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:03 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-5-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 04/20] perf jevents: Add CheckPmu to see if a PMU is in loaded json events From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" CheckPmu can be used to determine if hybrid events are present, allowing for hybrid conditional metrics/events/pmus to be premised on the json files rather than hard coded tables. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/metric.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/perf/pmu-events/metric.py b/tools/perf/pmu-events/metric= .py index 03312cd6d491..e1847cccfdb0 100644 --- a/tools/perf/pmu-events/metric.py +++ b/tools/perf/pmu-events/metric.py @@ -8,10 +8,12 @@ import re from enum import Enum from typing import Dict, List, Optional, Set, Tuple, Union =20 +all_pmus =3D set() all_events =3D set() =20 def LoadEvents(directory: str) -> None: """Populate a global set of all known events for the purpose of validati= ng Event names""" + global all_pmus global all_events all_events =3D { "context\-switches", @@ -24,12 +26,18 @@ def LoadEvents(directory: str) -> None: filename =3D os.fsdecode(file) if filename.endswith(".json"): for x in json.load(open(f"{directory}/{filename}")): + if "Unit" in x: + all_pmus.add(x["Unit"]) if "EventName" in x: all_events.add(x["EventName"]) elif "ArchStdEvent" in x: all_events.add(x["ArchStdEvent"]) =20 =20 +def CheckPmu(name: str) -> bool: + return name in all_pmus + + def CheckEvent(name: str) -> bool: """Check the event name exists in the set of all loaded events""" global all_events --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.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 BCAA339AE1 for ; Thu, 14 Mar 2024 05:59:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395990; cv=none; b=GK4gOwRmWSswDuH48cgRdQ6dahmdTFtkSO5KntSQMnt7wJ8ILWUT66jiBztgFHhpHBO41eX9pV2Tl/HWUQyrbzXmpJ0GWwZ5PpcgC4ck6f20GSjWTgqfSt6dJ8NoOxaqeXS8VIKM2y9DDMxKh16AibIj/dOpLQN7nN0n+Htik+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395990; c=relaxed/simple; bh=ezts1SNNXZNxj9LhQuYH/wsj+Q9nYnkcvRFPOrQH5NU=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=VRbbQpLjXE4QsQRmVXSH1YVhZcPrBDW48zm4c/MFUkqnmQAA+iCPY6CE91vqKsXAOuADGVLhJjLxOw2jsTJS5PpeajU3h6ewiO/3mk0vZXJb0V1YSO6EYO+CcbO3hshBmPEG2C6VrVnaxLXPtgxAgLFcTmDuz3BTsckfz4bwiXk= 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=4Ijfrqof; arc=none smtp.client-ip=209.85.128.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="4Ijfrqof" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-609f2920b53so10456237b3.0 for ; Wed, 13 Mar 2024 22:59:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395988; x=1711000788; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=wc6YXjrCOCpyJhvEJp6tDQdGSaY//cGMnlBPtpOLWG8=; b=4IjfrqofBkyItL+StkrOLepM6fJXlYqAi/Gcv68JYrW+QIGLigm7hYjcKBkcyrkXuT Pw3PIowx1U9NykU6KnvFbrBnjOllxxa4TByuVt0kDUt5qEjL3DWB7L9tLYICspx1CcL1 0uDCtNuAYlEize0osqOZ5hQUmkhfDv7pluqpJPoLv3zXCnaEHTrD0+0NJGMGRc/HfenA J1SLh5mz9mw9iAHyrJgfjN5SPQq9JGBixt6vKwV4ElOPV/N6Ekcfg5bJXUwDUdUoTRXI 7Hi2sag6sNciQwMllKbAOtt5MZlv9coJvOROYawXhWQpDQ0RWeaASxkt3x9/2uwGCwbJ w1TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395988; x=1711000788; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wc6YXjrCOCpyJhvEJp6tDQdGSaY//cGMnlBPtpOLWG8=; b=mvA+2yya6nGg5w15ImeJfhWiqb4x3LfovUwNApZt0TIl4CznjLywmHfTZZx5UdQPe7 QkmaMtmPa4mJJ5evcE49nSnlv6rcC+Wq9qx21o6lTlQkA4A4wFBncRW0vuG4jiQehr+/ IFfehQ1uha3jhBmv4/d1wvdyZYY7Kg803JqbKTynzTc6BqzkSh5QffhPlBHvTrfRLBgE unqpiByCXliPowKo7v1PCV48EtzZUanT/UzSdcBYF4IdvBpP5DwW1fRZMJIpeyJlDND4 zWcMlmV7PauUjHBmMDQBJ53546DLxWLAxs+E/7xAx0V3FT5UAsvWPT9exiEeqsuMUi73 YRwA== X-Forwarded-Encrypted: i=1; AJvYcCV2nb8V3rXt07nEZEi8e1ke/6LWa9DpULpq7meawdBnCTQpShSBHLuYZ3lhMNZd9X7Bqwl0Qxk2BW3CGBcv+vghNCRbqGffTtyrLtQ6 X-Gm-Message-State: AOJu0Yy/6dWEsM2D8zI2awNz0jYT2FTc34k5vwBCZjMhe43+sPCVA6RC KFyuz7axExB3RNYu6F4QTKvllEJNkO0RObQFfhcCg6YhkMggDRpaMJjUYjOnx7WsXn4K4TEEd61 S8Hq1EA== X-Google-Smtp-Source: AGHT+IEOxKPeWAIPaad3vDYh4PJ0xM4XujFoN/8aPaMrp250cr+Ezt/hXSmH49NAvHShMRe7EKsrv+g3X0FM X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:2301:b0:dc7:865b:22c6 with SMTP id do1-20020a056902230100b00dc7865b22c6mr34277ybb.8.1710395987985; Wed, 13 Mar 2024 22:59:47 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:04 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-6-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 05/20] perf jevents: Add tsx metric group for Intel models From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Allow duplicated metric to be dropped from json files. Detect when TSX is supported by a model by using the json events, use sysfs events at runtime as hypervisors, etc. may disable TSX. Add CheckPmu to metric to determine if which PMUs have been associated with the loaded events. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 52 +++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index f34b4230a4ee..58e243695f0a 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -1,12 +1,13 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -from metric import (d_ratio, has_event, max, Event, JsonEncodeMetric, +from metric import (d_ratio, has_event, max, CheckPmu, Event, JsonEncodeMe= tric, JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, MetricGroup, MetricRef, Select) import argparse import json import math import os +from typing import Optional =20 # Global command line arguments. _args =3D None @@ -74,6 +75,54 @@ def Smi() -> MetricGroup: ], description =3D 'System Management Interrupt metrics') =20 =20 +def Tsx() -> Optional[MetricGroup]: + pmu =3D "cpu_core" if CheckPmu("cpu_core") else "cpu" + cycles =3D Event('cycles') + cycles_in_tx =3D Event(f'{pmu}/cycles\-t/') + cycles_in_tx_cp =3D Event(f'{pmu}/cycles\-ct/') + try: + # Test if the tsx event is present in the json, prefer the + # sysfs version so that we can detect its presence at runtime. + transaction_start =3D Event("RTM_RETIRED.START") + transaction_start =3D Event(f'{pmu}/tx\-start/') + except: + return None + + elision_start =3D None + try: + # Elision start isn't supported by all models, but we'll not + # generate the tsx_cycles_per_elision metric in that + # case. Again, prefer the sysfs encoding of the event. + elision_start =3D Event("HLE_RETIRED.START") + elision_start =3D Event(f'{pmu}/el\-start/') + except: + pass + + return MetricGroup('transaction', [ + Metric('tsx_transactional_cycles', + 'Percentage of cycles within a transaction region.', + Select(cycles_in_tx / cycles, has_event(cycles_in_tx), 0), + '100%'), + Metric('tsx_aborted_cycles', 'Percentage of cycles in aborted transa= ctions.', + Select(max(cycles_in_tx - cycles_in_tx_cp, 0) / cycles, + has_event(cycles_in_tx), + 0), + '100%'), + Metric('tsx_cycles_per_transaction', + 'Number of cycles within a transaction divided by the number = of transactions.', + Select(cycles_in_tx / transaction_start, + has_event(cycles_in_tx), + 0), + "cycles / transaction"), + Metric('tsx_cycles_per_elision', + 'Number of cycles within a transaction divided by the number = of elisions.', + Select(cycles_in_tx / elision_start, + has_event(elision_start), + 0), + "cycles / elision") if elision_start else None, + ], description=3D"Breakdown of transactional memory statistics") + + def main() -> None: global _args =20 @@ -100,6 +149,7 @@ def main() -> None: Idle(), Rapl(), Smi(), + Tsx(), ]) =20 =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.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 C20113B29A for ; Thu, 14 Mar 2024 05:59:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395992; cv=none; b=QGqXfSMjNRrWtscx87vgp8V5E/dC6T3GJ6M4JOi3aSMq9Fl2wUqWtgBj/cmwgr02nMuZHSY9mCmCT0Q2SrsapAQgGTiDKmVZunbpm53FNO6G8LC5oHJeNIdWWwup0mQNoMZfHTWXeBrB5BHRQOiI4KPoAkPAGbsGMI4SkvCwNgg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395992; c=relaxed/simple; bh=FRD4urmCzmXTmNozFD4Dr+8XpRmwK3qVFgHQ1nWF1hg=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=hDrATCognvGYzQpDwV2SghLeXbyBdlCVliQhbAqOg3O9hDR4fcr0lAkgXA2hCIeD6TRjKLR6anr80S1P3q6Vs5k+L98Ep0EC/IvumhhbISuxYmcKvbqwhFgMde5l4zwKlrnZtZ8748lGCsJin5+5OVNPE7LHF5t+EzO0giFHhcQ= 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=PMlh6PXL; arc=none smtp.client-ip=209.85.219.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="PMlh6PXL" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dc647f65573so982558276.2 for ; Wed, 13 Mar 2024 22:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395990; x=1711000790; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=ILfM9APc2QmtUlfGAi2ySSBl9xHV6Dsl5aSOkdQM0Ig=; b=PMlh6PXLWUrJEN7+T4OJ7/W8aW9fYRQz5QAy74V31AntWFlmQFhjzW7PDpa4NyQh7W QPe2vGzFznRxfhIy/wezYn71kbbIzj6hqb2ca1KLeVR0fZll++GYumeSmUbAW/oWC780 BYYLaQOmWjDt7ifndkMUm7+0RnXN8xLSgIxpe4K27wO+LjZ25UJ3YtvDjc+SYxzs8f0B t9AVKvmeqhtGVtUm73jmMVAD/ccJgMC74Zfu6wO+iN3lsvB9vrV0aNHoiBzN1SZWliFw zfbhZsRGLMe6b51SE7X/EzmXA/8iYw6UTtNhtfeHU8JuXvCjhXvE6mi2+OaUhp82wj90 UYTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395990; x=1711000790; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ILfM9APc2QmtUlfGAi2ySSBl9xHV6Dsl5aSOkdQM0Ig=; b=M7Cg7ReneEi8MGSkIy0l9jR3CVEWJ0AettyFIBzNJ4yWLi4kxcCIk8GbwDk16pyaRG plN++2TyE1+gEdKLuYOqDWp/Wf8oC0B08WRCdViq/Da+mc6xwJfFvuFLN3LL2s1nEdGf xSd/Jyp8gt8jX/pCI7zUmS86x02xfhXd6xR8AoNsERwPIYL223Q1ljyLfaXLxzJz4Fc9 geRwXaZSPOIgOf+l96rhO8I1oGP4QIOy2apIaMYtOM4H9R1vJYqHZ0wgqvP9T6O2kxLH o/9/8JFq7O8pcNuyTr+YyF3g+HFw0gcRzcYKmuaNFexwsiOHxlmQZu3Cac9egEOH7JcF 5WoQ== X-Forwarded-Encrypted: i=1; AJvYcCXr7sVMzrNCdWUbBQYBIW3TH/rtjK0ArCMYD2yyaGZhEKcHttpLlVjNYQeCP+VDXkT3JAMVT6vsOk4tPeOCY1L1OQ4yqaFh31BqbJAp X-Gm-Message-State: AOJu0Yxk7KSH87DUzJCtnuhcoDEQFSujosTqzllctlHRy+wPorrwQZAj pVIv/xaR/4vQI8Nuu3KdqpPaH6ho0lxMxJ1d+5jsgeyw6BkW4CCM/b4dzQPX5aRtJ8rmHt7lFEk 79OFbgQ== X-Google-Smtp-Source: AGHT+IFpC7wmiwagj5y8cnwZSsboxN3EC3qcg38805ughEkS1bFKpFs0SIq5TZ9BGVGsPsTfIGRWURAoOFHS X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:160f:b0:dcd:25be:aefb with SMTP id bw15-20020a056902160f00b00dcd25beaefbmr252248ybb.13.1710395990067; Wed, 13 Mar 2024 22:59:50 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:05 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-7-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 06/20] perf jevents: Add br metric group for branch statistics on Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian 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. Conditional taken and not taken metrics are specific to Icelake and later generations, so the presence of the event is used to determine whether the metric should exist. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 138 +++++++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 58e243695f0a..09f7b7159e7c 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -123,6 +123,143 @@ def Tsx() -> Optional[MetricGroup]: ], description=3D"Breakdown of transactional memory statistics") =20 =20 +def IntelBr(): + ins =3D Event("instructions") + + def Total() -> MetricGroup: + br_all =3D Event ("BR_INST_RETIRED.ALL_BRANCHES", "BR_INST_RETIRED.ANY= ") + br_m_all =3D Event("BR_MISP_RETIRED.ALL_BRANCHES", + "BR_INST_RETIRED.MISPRED", + "BR_MISP_EXEC.ANY") + br_clr =3D None + try: + br_clr =3D Event("BACLEARS.ANY", "BACLEARS.ALL") + except: + pass + + br_r =3D d_ratio(br_all, interval_sec) + ins_r =3D d_ratio(ins, br_all) + misp_r =3D d_ratio(br_m_all, br_all) + clr_r =3D d_ratio(br_clr, interval_sec) if br_clr else None + + return MetricGroup("br_total", [ + Metric("br_total_retired", + "The number of branch instructions retired per second.", br= _r, + "insn/s"), + Metric( + "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("br_total_insn_between_branches", + "The number of instructions divided by the number of branch= es.", + ins_r, "insn"), + Metric("br_total_insn_fe_resteers", + "The number of resync branches per second.", clr_r, "req/s" + ) if clr_r else None + ]) + + def Taken() -> MetricGroup: + br_all =3D Event("BR_INST_RETIRED.ALL_BRANCHES", "BR_INST_RETIRED.ANY") + br_m_tk =3D None + try: + br_m_tk =3D Event("BR_MISP_RETIRED.NEAR_TAKEN", + "BR_MISP_RETIRED.TAKEN_JCC", + "BR_INST_RETIRED.MISPRED_TAKEN") + except: + pass + br_r =3D d_ratio(br_all, interval_sec) + ins_r =3D d_ratio(ins, br_all) + misp_r =3D d_ratio(br_m_tk, br_all) if br_m_tk else None + return MetricGroup("br_taken", [ + Metric("br_taken_retired", + "The number of taken branches that were retired per second.= ", + br_r, "insn/s"), + Metric( + "br_taken_mispred", + "The number of retired taken branch instructions that were " + "mispredicted as a percentage of all taken branches.", misp_r, + "100%") if misp_r else None, + Metric( + "br_taken_insn_between_branches", + "The number of instructions divided by the number of taken bra= nches.", + ins_r, "insn"), + ]) + + def Conditional() -> Optional[MetricGroup]: + try: + br_cond =3D Event("BR_INST_RETIRED.COND", + "BR_INST_RETIRED.CONDITIONAL", + "BR_INST_RETIRED.TAKEN_JCC") + br_m_cond =3D Event("BR_MISP_RETIRED.COND", + "BR_MISP_RETIRED.CONDITIONAL", + "BR_MISP_RETIRED.TAKEN_JCC") + except: + return None + + br_cond_nt =3D None + br_m_cond_nt =3D None + try: + br_cond_nt =3D Event("BR_INST_RETIRED.COND_NTAKEN") + br_m_cond_nt =3D Event("BR_MISP_RETIRED.COND_NTAKEN") + except: + pass + br_r =3D d_ratio(br_cond, interval_sec) + ins_r =3D d_ratio(ins, br_cond) + misp_r =3D d_ratio(br_m_cond, br_cond) + taken_metrics =3D [ + Metric("br_cond_retired", "Retired conditional branch instructions= .", + br_r, "insn/s"), + Metric("br_cond_insn_between_branches", + "The number of instructions divided by the number of condit= ional " + "branches.", ins_r, "insn"), + Metric("br_cond_mispred", + "Retired conditional branch instructions mispredicted as a " + "percentage of all conditional branches.", misp_r, "100%"), + ] + if not br_m_cond_nt: + return MetricGroup("br_cond", taken_metrics) + + br_r =3D d_ratio(br_cond_nt, interval_sec) + ins_r =3D d_ratio(ins, br_cond_nt) + misp_r =3D d_ratio(br_m_cond_nt, br_cond_nt) + + not_taken_metrics =3D [ + Metric("br_cond_retired", "Retired conditional not taken branch in= structions.", + br_r, "insn/s"), + Metric("br_cond_insn_between_branches", + "The number of instructions divided by the number of not ta= ken conditional " + "branches.", ins_r, "insn"), + Metric("br_cond_mispred", + "Retired not taken conditional branch instructions mispredi= cted as a " + "percentage of all not taken conditional branches.", misp_r= , "100%"), + ] + return MetricGroup("br_cond", [ + MetricGroup("br_cond_nt", not_taken_metrics), + MetricGroup("br_cond_tkn", taken_metrics), + ]) + + def Far() -> Optional[MetricGroup]: + try: + br_far =3D Event("BR_INST_RETIRED.FAR_BRANCH") + except: + return None + + br_r =3D d_ratio(br_far, interval_sec) + ins_r =3D d_ratio(ins, br_far) + return MetricGroup("br_far", [ + Metric("br_far_retired", "Retired far control transfers per second= .", + br_r, "insn/s"), + Metric( + "br_far_insn_between_branches", + "The number of instructions divided by the number of far branc= hes.", + ins_r, "insn"), + ]) + + return MetricGroup("br", [Total(), Taken(), Conditional(), Far()], + description=3D"breakdown of retired branch instructio= ns") + + def main() -> None: global _args =20 @@ -150,6 +287,7 @@ def main() -> None: Rapl(), Smi(), Tsx(), + IntelBr(), ]) =20 =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.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 01E3514F90 for ; Thu, 14 Mar 2024 05:59:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395994; cv=none; b=sI1Q4KH9u/0ryaD4PdWz3uVLsJxad1PBW3F42/CR0lrG4T2uWvR4NSJ+vFL4S8HuN9tFYrTJaQsjK4X+9gZnBPFfOOtWfC6fyF39zrthmk0op73DfjZBo/z6H9VqYt7Qsxee2ZT/tx5W/DViK6UpPjqywRoRsZjeTHBwKfa/x1s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395994; c=relaxed/simple; bh=nJWLpagX3fnUwoQICD5hV02eLFbaofPniJ75oRrnaLI=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=fYKoOeI8wdzHdK/AA2Ttq9gdRG/a8ytyEnanxEKlB+PGYMqpPpa3gYh1GxGTFFgMrySzm+f9VQqtwcuZWmxOExDSrHjTKIpfEV07n8zAbKutGvpMSxbOt1Vg0me/NGGnvBJpS7E7S9v66SZiMuUI8APzJQ+JjSyRimPMDchjos0= 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=B97USwWV; arc=none smtp.client-ip=209.85.219.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="B97USwWV" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dcc15b03287so719139276.3 for ; Wed, 13 Mar 2024 22:59:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395992; x=1711000792; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=b5XPP3oK+Thn/1zVInzu5FDzzEZZaV5BcTwipAM2LAc=; b=B97USwWVUKN+k84mKYQlKEOwh4jVIQCLYh1MwvkDI04ynl7ldGEyRzK7XRDzFk6+P1 8SRLjmvhS38bjSUCD6FCa2XH7NCiuM1Z7GBvzw26WzIwPcPbKYieHC+5x2Y6cpTR2P2T cx+QK6fK1UbBwprzDZ+oxImstTMCDPDKSrkDEI6DbrOeqYqVGYWhvxvNULWr5sJW+MGX hTOHRW695xoea2s4x+XRBSMVJsDs7suSIbg4krITON1ax8o8g/AkcSmUeXYmBvjjpovk KcB4bMrxjaUCKkPibKe0KIpj4+5ESzaYEM0RGQDpO+r9YSo/wZkJUwUFdMh9I8vLCLF2 3T6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395992; x=1711000792; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=b5XPP3oK+Thn/1zVInzu5FDzzEZZaV5BcTwipAM2LAc=; b=v1gHm4Pjt0Z4itQPmw4jKnJechZbxFluY8NpdZkF4xnoTxxjQV7XJFAZRRcdHX1/la k/5kh3fpW8Ou3I85NxZLkqgCLM5+pm6DsUksNtVtYIUGlnXyQ3TcOSLeoLFZ31GWhy2d +0cqp5ahzKjYNZD0wlAKy28p/wwed3fpfHwsAdzLz+v9mmwrllQkRmigJ7ARFYZAwHJe nzVY/UKAdBAVurJh3h10/NQ1X5zcnur7JAji2yYiNBhgT2NYa/T5kO/usBCw4/QuGenM kh9FxT6v7G0VNPw2XyPodACFmleSNR5h0w1/BpfuqdX3htgWOYJxF/1zaqD0fMO1LFn0 0aqQ== X-Forwarded-Encrypted: i=1; AJvYcCVcNVSGmz1yBgUBi9zYxIToqF4GpwISwOlg0UI2mDU6CqLT1gzidajq3IeYXJJKCGVrFV3zWJad/DpOphFD+DpfpNuhQY0GdWZztgnj X-Gm-Message-State: AOJu0Yz1eVxH86kNodVMebggoyWwEL6uu145LcdpZow3Ycun4EtKpCxY /wSAy0XlGxyE1bOVTtxTD4FuMtoFlRf5BWLrAtVZ9URYGCol8DI4PjzPR2LvYdGIqga0w90QkNQ 9M4Omjw== X-Google-Smtp-Source: AGHT+IH5I8Fe3CBTlfB/EPtyqAz2vDrc+lU9Zc5GRy3nAjmfR9sDsnN7X2mAQs+C8FR01oh4LdpOBQfYymAI X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:2503:b0:dcb:fb69:eadc with SMTP id dt3-20020a056902250300b00dcbfb69eadcmr20434ybb.6.1710395992101; Wed, 13 Mar 2024 22:59:52 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:06 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-8-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 07/20] perf jevents: Add software prefetch (swpf) metric group for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that breakdown software prefetch instruction use. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 65 ++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 09f7b7159e7c..b02d0c0c3793 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -260,6 +260,70 @@ def IntelBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def IntelSwpf() -> Optional[MetricGroup]: + ins =3D Event("instructions") + try: + s_ld =3D Event("MEM_INST_RETIRED.ALL_LOADS", "MEM_UOPS_RETIRED.ALL_LOA= DS") + s_nta =3D Event("SW_PREFETCH_ACCESS.NTA") + s_t0 =3D Event("SW_PREFETCH_ACCESS.T0") + s_t1 =3D Event("SW_PREFETCH_ACCESS.T1_T2") + s_w =3D Event("SW_PREFETCH_ACCESS.PREFETCHW") + except: + return None + + all_sw =3D s_nta + s_t0 + s_t1 + s_w + swp_r =3D d_ratio(all_sw, interval_sec) + ins_r =3D d_ratio(ins, all_sw) + ld_r =3D d_ratio(s_ld, all_sw) + + return MetricGroup("swpf", [ + MetricGroup("swpf_totals", [ + Metric("swpf_totals_exec", "Software prefetch instructions per s= econd", + swp_r, "swpf/s"), + Metric("swpf_totals_insn_per_pf", + "Average number of instructions between software prefetch= es", + ins_r, "insn/swpf"), + Metric("swpf_totals_loads_per_pf", + "Average number of loads between software prefetches", + ld_r, "loads/swpf"), + ]), + MetricGroup("swpf_bkdwn", [ + MetricGroup("swpf_bkdwn_nta", [ + Metric("swpf_bkdwn_nta_per_swpf", + "Software prefetch NTA instructions as a percent of a= ll prefetch instructions", + d_ratio(s_nta, all_sw), "100%"), + Metric("swpf_bkdwn_nta_rate", + "Software prefetch NTA instructions per second", + d_ratio(s_nta, interval_sec), "insn/s"), + ]), + MetricGroup("swpf_bkdwn_t0", [ + Metric("swpf_bkdwn_t0_per_swpf", + "Software prefetch T0 instructions as a percent of al= l prefetch instructions", + d_ratio(s_t0, all_sw), "100%"), + Metric("swpf_bkdwn_t0_rate", + "Software prefetch T0 instructions per second", + d_ratio(s_t0, interval_sec), "insn/s"), + ]), + MetricGroup("swpf_bkdwn_t1_t2", [ + Metric("swpf_bkdwn_t1_t2_per_swpf", + "Software prefetch T1 or T2 instructions as a percent= of all prefetch instructions", + d_ratio(s_t1, all_sw), "100%"), + Metric("swpf_bkdwn_t1_t2_rate", + "Software prefetch T1 or T2 instructions per second", + d_ratio(s_t1, interval_sec), "insn/s"), + ]), + MetricGroup("swpf_bkdwn_w", [ + Metric("swpf_bkdwn_w_per_swpf", + "Software prefetch W instructions as a percent of all= prefetch instructions", + d_ratio(s_w, all_sw), "100%"), + Metric("swpf_bkdwn_w_rate", + "Software prefetch W instructions per second", + d_ratio(s_w, interval_sec), "insn/s"), + ]), + ]), + ], description=3D"Sofware prefetch instruction breakdown") + + def main() -> None: global _args =20 @@ -288,6 +352,7 @@ def main() -> None: Smi(), Tsx(), IntelBr(), + IntelSwpf(), ]) =20 =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 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 B9B303D396 for ; Thu, 14 Mar 2024 05:59:54 +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=1710395996; cv=none; b=fscIjAmceEcEw585pn6i3GFICzCsXtgzSa35+NmkWF3+/UhRa9KUxMJZXfcZiQfXh6zBJV20Fs1c/cTxQtM8jSNL30aKapGWM3zDuV1tyluB/141Xx1YZmXXjGI9CljZjyCppHiZdvPye0br03qYxnX+RoXJMgXUlxudNwS8hbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395996; c=relaxed/simple; bh=1Qr2GggjPi/6cKOviasaXOdwphBzKolEl5/0BUkGD1s=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=trm0KK7e41IvEehanUGKix14Oc+kqm7sLYCoRrLe8+WFoFoDR3je83Xnw6Euv3aCIVyB/Odfp4ndQq4ItJjjSh/QqAHaMAXMsNfIsRVwuLPrPLVosVaTjxwgJm4vc5RqBcedD1VEy+z18u3Y2FHzrm3OSb/SSqHsiInvNrc4Cyc= 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=JSNs9+tY; 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="JSNs9+tY" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dce775fa8adso906787276.1 for ; Wed, 13 Mar 2024 22:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395994; x=1711000794; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=NE3dX9dz2CABEFOsw5CuUFowasd8wR4u7GmklzSvWhM=; b=JSNs9+tY95CCkU3pejcP26dgu4kBgxLsz5vQ+G9c9nc0wXvYTvugDRscn2gshQSYCe SlBm53EN2T8vQlBHUg3Wlh1vh3Bbmea7j3YpfUjir3xliH3cyb2Myy9llo6to64/NvFA CIOG3qVPcRi3QbLIUCqySzOmpyOByhYsdh0NFlkLqLN/Fp762kJFq8WPG8xQSRcwXFK7 6Z9kg/R0DQeMxxhS7Yu5/Y4CusJnqQXCysO4FhRdNJObie+5PuTg+tO14E0Gl/lpfLVy cUGL2l3Owgos6rUeu2l6e3RYA6YS4n5DIuxyZaHhtgu7FD+aw7fFoCYwSueztwQ5Lvjj fBPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395994; x=1711000794; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NE3dX9dz2CABEFOsw5CuUFowasd8wR4u7GmklzSvWhM=; b=S/H/yQYFnpTmP3pUAOG6jDzib5iEDtDGJJhYiVvg0UpPR77zsrx8P6jv27Iz0bXYoA pUaQNvtcmrOVGDd7Mjw2ydP6VorWZ81B+MeoZc9ljCrszrjKoxSrwSxoRrA9U78H/day jEKpk7hoCbeeiWR4JknNYyoQ8y764hidP+QvqG2HU0B1jEOEAiTqsxMujS5jOexmC/Hq u7X0ZLMVU+yfNC0dKbDc9aEhzVvE+p78v4k+u7ho2LdKqZ+dcYAkbpFt4OiX6ZV/ijSl qQkiLnTTuYV2hD+4O/fX50PKhVbv3r2zfotuIv2akh7x1n/sb816EzAHVm+Dbnas7fPf uh+A== X-Forwarded-Encrypted: i=1; AJvYcCWGStd6InXU6z+nl6xvx4ZRT+WTD2d9GEBVkRMnla7anhalxivieCJMuMISwoENm4fxM3kzg5Rd6unJ72M7sOR7bNorS3OImKSLE4IQ X-Gm-Message-State: AOJu0YwGlm7Qn+f3sfI6ti3bpvtsKI7JHy2BizGdZDzIQUsDyC4GLeVy z8lBD6xXksVIwqCIrTQ/enVlVmwn/Ug05QTsgyQ0zoQM3FxE4xVHMI3MtBitPl/d8lSr/M/8xya AcNTulQ== X-Google-Smtp-Source: AGHT+IGL9I2AEtU9Gouc8KiH//2cnv3aSfUatRw9lJIZ+fLfFOIe54VbJ81T1fFUWjOlzTPpwFpI/IZ7Fpmt X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:247:b0:dcc:6065:2b3d with SMTP id k7-20020a056902024700b00dcc60652b3dmr211350ybs.8.1710395993876; Wed, 13 Mar 2024 22:59:53 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:07 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-9-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 08/20] perf jevents: Add ports metric group giving utilization on Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ports metric group contains a metric for each port giving its utilization as a ratio of cycles. The metrics are created by looking for UOPS_DISPATCHED.PORT events. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 32 ++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index b02d0c0c3793..b181574c9486 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -1,17 +1,23 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) from metric import (d_ratio, has_event, max, CheckPmu, Event, JsonEncodeMe= tric, - JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, - MetricGroup, MetricRef, Select) + JsonEncodeMetricGroupDescriptions, Literal, LoadEvents, + Metric, MetricGroup, MetricRef, Select) import argparse import json import math import os +import re from typing import Optional =20 # Global command line arguments. _args =3D None interval_sec =3D Event("duration_time") +core_cycles =3D Event("CPU_CLK_UNHALTED.THREAD_P_ANY", + "CPU_CLK_UNHALTED.DISTRIBUTED", + "cycles") +# Number of CPU cycles scaled for SMT. +smt_cycles =3D Select(core_cycles / 2, Literal("#smt_on"), core_cycles) =20 def Idle() -> Metric: cyc =3D Event("msr/mperf/") @@ -260,6 +266,27 @@ def IntelBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def IntelPorts() -> Optional[MetricGroup]: + pipeline_events =3D json.load(open(f"{_args.events_path}/x86/{_args.mode= l}/pipeline.json")) + + metrics =3D [] + for x in pipeline_events: + if "EventName" in x and re.search("^UOPS_DISPATCHED.PORT", x["EventNam= e"]): + name =3D x["EventName"] + port =3D re.search(r"(PORT_[0-9].*)", name).group(0).lower() + if name.endswith("_CORE"): + cyc =3D core_cycles + else: + cyc =3D smt_cycles + metrics.append(Metric(port, f"{port} utilization (higher is better)", + d_ratio(Event(name), cyc), "100%")) + if len(metrics) =3D=3D 0: + return None + + return MetricGroup("ports", metrics, "functional unit (port) utilization= -- " + "fraction of cycles each port is utilized (higher is = better)") + + def IntelSwpf() -> Optional[MetricGroup]: ins =3D Event("instructions") try: @@ -352,6 +379,7 @@ def main() -> None: Smi(), Tsx(), IntelBr(), + IntelPorts(), IntelSwpf(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.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 A37713D982 for ; Thu, 14 Mar 2024 05:59:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395998; cv=none; b=PKpDY/X+kPufTZXI4GrO/04C0jCpSwZ+4+ZX4C2JhDlR5glqjvvJ35OZ+YoKxwzW7yOdEuZf3h7180is643i2HixJGCSwmuJZrz+zXkprkfWyi+kPPXsxAQcTRP+9v7AFQpzrcN62lPGz5aB5zkYT/sN+mk9X/2A15LhSpXkpYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395998; c=relaxed/simple; bh=EtOcDq2NMAnbcBBlUMbyBdHDOVr9dglo32PTwlIWv3o=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=GpcbXqR7XKLprQ8vWChdwvaGcbL3kOZM7Lcp5+DVdULDfsrCNehpqaKIKCwitYYqqAjvE1zCu4PLmEYe3UpyZ5dtu/Sy7LHfsxZA/OwOeW4YQEAFt3hBtLDFhicAVTdeCm/uu0y6JzXa9VBnVpnrbsimMinwLhl4dDGZJ1erm8w= 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=wunVpgEW; arc=none smtp.client-ip=209.85.128.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="wunVpgEW" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60a08eb0956so9977237b3.3 for ; Wed, 13 Mar 2024 22:59:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395996; x=1711000796; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=3ab3oVKFyb7WmXtlReQGTt2ckvC2KNs0Fz6mOW8a1Ns=; b=wunVpgEWtzcYKh3uE8ej26ZQNU/NIovsPimVkkvvgd5Jz3rIT46th3eZh+KbIAxpeM ceS9phCvlKU50tF3Rfpk3JPUYLGyG46fTevhxAH1DLRUu3VWVvbJpQG8uo4GnjcBQoio xJ/vxBsCm0sjvD7af/GpDAitIjw4Au7NWuLhe206QujwlfnoGQVOA1Or4I4XvJK49qXc OIwZiUBS6WRADOeUh2eomHbgpti8BBPQDMXRGjUXHLxuLmfjaZgZW6qWCMTuzCSOxZGg cWEvR+lNMlvOMCbGytb2LDQ+9aUIHZmdGD8s6EfswB3X3AI/HcXTNdDbzGW7wkYmOk6u fnYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395996; x=1711000796; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3ab3oVKFyb7WmXtlReQGTt2ckvC2KNs0Fz6mOW8a1Ns=; b=qDmKVB0xTBW18AgIFdePI+aRwglfNAU8xpsgvjm6fpKCtXtU78WCXm32RKcUjnxBV6 EL79fcAvtJpCdnL8FcwkZ6p7+mqb9Uw4CdncppHAOBJMsgb427KjKwIVgctT08RHpjcz mk8sG1h3Ol7JnIbaCCvEqGV3TUJwIIAlanDQvqU25LzktXdR8COOBW0x/wHrnVCWTwJW leqDJ+AX5HL2WdVWiGNBQ6yc+GflBEukJ31aHvgbPksVJ3jO1/XiV5rp99otXgjoA+cv I6HRWPA7EMmkv6Qs4l5q8eQHXnuCVY/0g3yEP9JBQU8x+1lPpSVOmNiF+2m0PXqcGV8R b2uw== X-Forwarded-Encrypted: i=1; AJvYcCVbepCnIOlcZhm6tme6TKNNKnxTiP2XW+F313leSge8yo3ZHLn7i0uglju+KhcgAmfHDpiRy9mtrBHpBzhcDVHACMB5KhaqUgqd4Z5N X-Gm-Message-State: AOJu0YxxrNY/i8/vnojuiCBeqfjbjiGGzZ1C89YdkBM7IajgYVmPoMMO CpDeb8WRY4JsWUt1XAFOJOZNIcdU5f2QrB4OO5zpeflAwq8VkmYpHaicSG882I7uGlkZiFbdl08 DzBKkBg== X-Google-Smtp-Source: AGHT+IHkvYJkQtyDL36LoaqZSsrHz4Bkvp45OCVN90/foiDSZQ23PNnkVZLA/DGJYTkB+Z1kG/gkiaT5M/YD X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:240e:b0:dc2:5273:53f9 with SMTP id dr14-20020a056902240e00b00dc2527353f9mr34374ybb.1.1710395995841; Wed, 13 Mar 2024 22:59:55 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:08 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-10-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 09/20] perf jevents: Add L2 metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Give a breakdown of various L2 counters as metrics, including totals, reads, hardware prefetcher, RFO, code and evictions. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 158 +++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index b181574c9486..9ef30e5d3e25 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -266,6 +266,163 @@ def IntelBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def IntelL2() -> Optional[MetricGroup]: + try: + DC_HIT =3D Event("L2_RQSTS.DEMAND_DATA_RD_HIT") + except: + return None + try: + DC_MISS =3D Event("L2_RQSTS.DEMAND_DATA_RD_MISS") + l2_dmnd_miss =3D DC_MISS + l2_dmnd_rd_all =3D DC_MISS + DC_HIT + except: + DC_ALL =3D Event("L2_RQSTS.ALL_DEMAND_DATA_RD") + l2_dmnd_miss =3D DC_ALL - DC_HIT + l2_dmnd_rd_all =3D DC_ALL + l2_dmnd_mrate =3D d_ratio(l2_dmnd_miss, interval_sec) + l2_dmnd_rrate =3D d_ratio(l2_dmnd_rd_all, interval_sec) + + DC_PFH =3D None + DC_PFM =3D None + l2_pf_all =3D None + l2_pf_mrate =3D None + l2_pf_rrate =3D None + try: + DC_PFH =3D Event("L2_RQSTS.PF_HIT") + DC_PFM =3D Event("L2_RQSTS.PF_MISS") + l2_pf_all =3D DC_PFH + DC_PFM + l2_pf_mrate =3D d_ratio(DC_PFM, interval_sec) + l2_pf_rrate =3D d_ratio(l2_pf_all, interval_sec) + except: + pass + + DC_RFOH =3D Event("L2_RQSTS.RFO_HIT") + DC_RFOM =3D Event("L2_RQSTS.RFO_MISS") + l2_rfo_all =3D DC_RFOH + DC_RFOM + l2_rfo_mrate =3D d_ratio(DC_RFOM, interval_sec) + l2_rfo_rrate =3D d_ratio(l2_rfo_all, interval_sec) + + DC_CH =3D Event("L2_RQSTS.CODE_RD_HIT") + DC_CM =3D Event("L2_RQSTS.CODE_RD_MISS") + DC_IN =3D Event("L2_LINES_IN.ALL") + DC_OUT_NS =3D None + DC_OUT_S =3D None + l2_lines_out =3D None + l2_out_rate =3D None + wbn =3D None + isd =3D None + try: + DC_OUT_NS =3D Event("L2_LINES_OUT.NON_SILENT", + "L2_LINES_OUT.DEMAND_DIRTY", + "L2_LINES_IN.S") + DC_OUT_S =3D Event("L2_LINES_OUT.SILENT", + "L2_LINES_OUT.DEMAND_CLEAN", + "L2_LINES_IN.I") + if DC_OUT_S.name =3D=3D "L2_LINES_OUT.SILENT" and ( + args.model.startswith("skylake") or + args.model =3D=3D "cascadelakex"): + DC_OUT_S.name =3D "L2_LINES_OUT.SILENT/any/" + # bring is back to per-CPU + l2_s =3D Select(DC_OUT_S / 2, Literal("#smt_on"), DC_OUT_S) + l2_ns =3D DC_OUT_NS + l2_lines_out =3D l2_s + l2_ns; + l2_out_rate =3D d_ratio(l2_lines_out, interval_sec); + nlr =3D max(l2_ns - DC_WB_U - DC_WB_D, 0) + wbn =3D d_ratio(nlr, interval_sec) + isd =3D d_ratio(l2_s, interval_sec) + except: + pass + DC_OUT_U =3D None + l2_pf_useless =3D None + l2_useless_rate =3D None + try: + DC_OUT_U =3D Event("L2_LINES_OUT.USELESS_HWPF") + l2_pf_useless =3D DC_OUT_U + l2_useless_rate =3D d_ratio(l2_pf_useless, interval_sec) + except: + pass + DC_WB_U =3D None + DC_WB_D =3D None + wbu =3D None + wbd =3D None + try: + DC_WB_U =3D Event("IDI_MISC.WB_UPGRADE") + DC_WB_D =3D Event("IDI_MISC.WB_DOWNGRADE") + wbu =3D d_ratio(DC_WB_U, interval_sec) + wbd =3D d_ratio(DC_WB_D, interval_sec) + except: + pass + + l2_lines_in =3D DC_IN + l2_code_all =3D DC_CH + DC_CM + l2_code_rate =3D d_ratio(l2_code_all, interval_sec) + l2_code_miss_rate =3D d_ratio(DC_CM, interval_sec) + l2_in_rate =3D d_ratio(l2_lines_in, interval_sec) + + return MetricGroup("l2", [ + MetricGroup("l2_totals", [ + Metric("l2_totals_in", "L2 cache total in per second", + l2_in_rate, "In/s"), + Metric("l2_totals_out", "L2 cache total out per second", + l2_out_rate, "Out/s") if l2_out_rate else None, + ]), + MetricGroup("l2_rd", [ + Metric("l2_rd_hits", "L2 cache data read hits", + d_ratio(DC_HIT, l2_dmnd_rd_all), "100%"), + Metric("l2_rd_hits", "L2 cache data read hits", + d_ratio(l2_dmnd_miss, l2_dmnd_rd_all), "100%"), + Metric("l2_rd_requests", "L2 cache data read requests per second", + l2_dmnd_rrate, "requests/s"), + Metric("l2_rd_misses", "L2 cache data read misses per second", + l2_dmnd_mrate, "misses/s"), + ]), + MetricGroup("l2_hwpf", [ + Metric("l2_hwpf_hits", "L2 cache hardware prefetcher hits", + d_ratio(DC_PFH, l2_pf_all), "100%"), + Metric("l2_hwpf_misses", "L2 cache hardware prefetcher misses", + d_ratio(DC_PFM, l2_pf_all), "100%"), + Metric("l2_hwpf_useless", "L2 cache hardware prefetcher useless pref= etches per second", + l2_useless_rate, "100%") if l2_useless_rate else None, + Metric("l2_hwpf_requests", "L2 cache hardware prefetcher requests pe= r second", + l2_pf_rrate, "100%"), + Metric("l2_hwpf_misses", "L2 cache hardware prefetcher misses per se= cond", + l2_pf_mrate, "100%"), + ]) if DC_PFH else None, + MetricGroup("l2_rfo", [ + Metric("l2_rfo_hits", "L2 cache request for ownership (RFO) hits", + d_ratio(DC_RFOH, l2_rfo_all), "100%"), + Metric("l2_rfo_misses", "L2 cache request for ownership (RFO) misses= ", + d_ratio(DC_RFOM, l2_rfo_all), "100%"), + Metric("l2_rfo_requests", "L2 cache request for ownership (RFO) requ= ests per second", + l2_rfo_rrate, "requests/s"), + Metric("l2_rfo_misses", "L2 cache request for ownership (RFO) misses= per second", + l2_rfo_mrate, "misses/s"), + ]), + MetricGroup("l2_code", [ + Metric("l2_code_hits", "L2 cache code hits", + d_ratio(DC_CH, l2_code_all), "100%"), + Metric("l2_code_misses", "L2 cache code misses", + d_ratio(DC_CM, l2_code_all), "100%"), + Metric("l2_code_requests", "L2 cache code requests per second", + l2_code_rate, "requests/s"), + Metric("l2_code_misses", "L2 cache code misses per second", + l2_code_miss_rate, "misses/s"), + ]), + MetricGroup("l2_evict", [ + MetricGroup("l2_evict_mef_lines", [ + Metric("l2_evict_mef_lines_l3_hot_lru", "L2 evictions M/E/F lines = L3 hot LRU per second", + wbu, "HotLRU/s") if wbu else None, + Metric("l2_evict_mef_lines_l3_norm_lru", "L2 evictions M/E/F lines= L3 normal LRU per second", + wbn, "NormLRU/s") if wbn else None, + Metric("l2_evict_mef_lines_dropped", "L2 evictions M/E/F lines dro= pped per second", + wbd, "dropped/s") if wbd else None, + Metric("l2_evict_is_lines_dropped", "L2 evictions I/S lines droppe= d per second", + isd, "dropped/s") if isd else None, + ]), + ]), + ], description =3D "L2 data cache analysis") + + def IntelPorts() -> Optional[MetricGroup]: pipeline_events =3D json.load(open(f"{_args.events_path}/x86/{_args.mode= l}/pipeline.json")) =20 @@ -379,6 +536,7 @@ def main() -> None: Smi(), Tsx(), IntelBr(), + IntelL2(), IntelPorts(), IntelSwpf(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.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 A1DFD3FBA0 for ; Thu, 14 Mar 2024 05:59:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396000; cv=none; b=OvIJIHZAfINf/SDy+R/0Da0sl+PirX87mxSLCF0iOImrt3E3AGd2xPN0Fb/09z9ObYbKaZTe5PHSqy9kc8MKFt1mS9l2cGhLSE8BN+34dD+miV8LQxWz1pVLuX2cyQEYM0SJ4AbFT7V/QmLQ45IuHbuVLRMBUQuMMuZiiVgyzts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396000; c=relaxed/simple; bh=xtWp/os77FuNv6nPjjXYL4rEIzSmfCuzd+IK8xkj2yE=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=JWsnJ2WP9OocumdRQcq7X2WIsrLWp/HodCTAB/LhHmA49tQQYU9MvcUdjRgd2LG6pnVKQh7YwW/3zr0IoQrUAdO2wX6TRiEiSREE6t4DzyJx7JjGm2pPqXAOoTNPG2F+C7x+deQTkAgY19p/D0ejuX0Pn682uSSqWwfk9h79npQ= 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=tVJOyGMf; arc=none smtp.client-ip=209.85.219.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="tVJOyGMf" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dc657e9bdc4so97702276.0 for ; Wed, 13 Mar 2024 22:59:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395998; x=1711000798; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=2fqg3EeqdVKSD6hHFpARrgrIQYOAIUvUSGX0zthwymQ=; b=tVJOyGMf8bD8yTeti1L+a0XeRJjll11lkbRs9h4xTfg76mNkdLCktnfRNP23i/6zeu IT7qDYDm0RP6FEgutf6m6/XtvtkGp2DjnW3p5NGAI0BtQHY7du2+NHpngZLKhQw56oJB +n+04bUS1SJTr/hLqCnyRRG6enGYTEFTG1Uh81OaxNvld4rP6KaBjdt9LqLuALoJQTTN tBKmHJgLAZ1Ea4zYh+39ALNGvdjz4tIz6LC2MRH7StDIgwt/Xe78l/bV1zbJezWy2lz1 8YZessk789ac5io7gn3j3YDQJjEWprlUFE2ZrYFLfPI+Rd26qtn312hsS9FvZpau+UBu uIdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395998; x=1711000798; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2fqg3EeqdVKSD6hHFpARrgrIQYOAIUvUSGX0zthwymQ=; b=TdgkcZIi7vmMV056MKV0Qk6WFS11Hi8JsMvd9sUFgV1ZersYgJ8yf2WB2XbJ0wNBZe oQu/EN1CKQuUERGKT3TI12E464RQuN1BUFK6ql11FI1J6b0MVwxVqSnmyGU8uPxpbdkn F7QxRm7XNJELcl34HicQ9F76x1rGPRJOf3G9jXYDuQD8liqS3GT9OC0tsADMJdVvTaiU RQyB4C3B/LVvnDzX+Qe1aVd1nnR/spFugc6Q/kfzkts+kZb2SWZBilMCOl3zEoYVeswM PvSSUJhp3/cFAYgv0sBsDdvm4Gs71nl13tF6xo01Qy+wH5uwWIfn3yA4OhSSMGgfZUgC fygQ== X-Forwarded-Encrypted: i=1; AJvYcCX0mjuyJtNC5USRVzrmxwUEK/LCyQ+h56HCQAikzF7Xs3QTMWPcGtkM07Xi5MeyF0RzOgNmLEO4ykB4TM1MnkQ9T03WdCOqKIkZ/bGl X-Gm-Message-State: AOJu0YwLEEuHol6POfnoxkZ8jz91JkNOkPpDpgVKL/VzBnoohNMFSuF2 Pg0dJrw0G2u8yPOaHVU+bRWrhWDZyD6iFqfjvv+rpwe+N73jFb2PnmiawAZZjnU/tabenNA50OC yzMKqBA== X-Google-Smtp-Source: AGHT+IHUMcZuKn2Q0djcMQG4CWwtVgxjzUZW8HhN3F/IZn5XjFbhraj9iGU9PFaTm8wkVBScuQOWVBUsRENB X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:1004:b0:dc6:44d4:bee0 with SMTP id w4-20020a056902100400b00dc644d4bee0mr27738ybt.7.1710395997689; Wed, 13 Mar 2024 22:59:57 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:09 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-11-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 10/20] perf jevents: Add load store breakdown metrics ldst for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian 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/intel_metrics.py | 86 +++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 9ef30e5d3e25..4ac419212b3d 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -2,7 +2,7 @@ # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) from metric import (d_ratio, has_event, max, CheckPmu, Event, JsonEncodeMe= tric, JsonEncodeMetricGroupDescriptions, Literal, LoadEvents, - Metric, MetricGroup, MetricRef, Select) + Metric, MetricConstraint, MetricGroup, MetricRef, Sele= ct) import argparse import json import math @@ -508,6 +508,89 @@ def IntelSwpf() -> Optional[MetricGroup]: ], description=3D"Sofware prefetch instruction breakdown") =20 =20 +def IntelLdSt() -> Optional[MetricGroup]: + if _args.model in [ + "bonnell", + "nehalemep", + "nehalemex", + "westmereep-dp", + "westmereep-sp", + "westmereex", + ]: + return None + LDST_LD =3D Event("MEM_INST_RETIRED.ALL_LOADS", "MEM_UOPS_RETIRED.ALL_LO= ADS") + LDST_ST =3D Event("MEM_INST_RETIRED.ALL_STORES", "MEM_UOPS_RETIRED.ALL_S= TORES") + LDST_LDC1 =3D Event(f"{LDST_LD.name}/cmask=3D1/") + LDST_STC1 =3D Event(f"{LDST_ST.name}/cmask=3D1/") + LDST_LDC2 =3D Event(f"{LDST_LD.name}/cmask=3D2/") + LDST_STC2 =3D Event(f"{LDST_ST.name}/cmask=3D2/") + LDST_LDC3 =3D Event(f"{LDST_LD.name}/cmask=3D3/") + LDST_STC3 =3D Event(f"{LDST_ST.name}/cmask=3D3/") + ins =3D Event("instructions") + LDST_CYC =3D Event("CPU_CLK_UNHALTED.THREAD", + "CPU_CLK_UNHALTED.CORE_P", + "CPU_CLK_UNHALTED.THREAD_P") + LDST_PRE =3D None + try: + LDST_PRE =3D Event("LOAD_HIT_PREFETCH.SWPF", "LOAD_HIT_PRE.SW_PF") + except: + pass + LDST_AT =3D None + try: + LDST_AT =3D Event("MEM_INST_RETIRED.LOCK_LOADS") + except: + pass + cyc =3D LDST_CYC + + ld_rate =3D d_ratio(LDST_LD, interval_sec) + st_rate =3D d_ratio(LDST_ST, interval_sec) + pf_rate =3D d_ratio(LDST_PRE, interval_sec) if LDST_PRE else None + at_rate =3D d_ratio(LDST_AT, interval_sec) if LDST_AT else None + + ldst_ret_constraint =3D MetricConstraint.GROUPED_EVENTS + if LDST_LD.name =3D=3D "MEM_UOPS_RETIRED.ALL_LOADS": + ldst_ret_constraint =3D MetricConstraint.NO_GROUP_EVENTS_NMI + + return MetricGroup("ldst", [ + MetricGroup("ldst_total", [ + Metric("ldst_total_loads", "Load/store instructions total loads", + ld_rate, "loads"), + Metric("ldst_total_stores", "Load/store instructions total store= s", + st_rate, "stores"), + ]), + MetricGroup("ldst_prcnt", [ + Metric("ldst_prcnt_loads", "Percent of all instructions that are= loads", + d_ratio(LDST_LD, ins), "100%"), + Metric("ldst_prcnt_stores", "Percent of all instructions that ar= e stores", + d_ratio(LDST_ST, ins), "100%"), + ]), + MetricGroup("ldst_ret_lds", [ + Metric("ldst_ret_lds_1", "Retired loads in 1 cycle", + d_ratio(max(LDST_LDC1 - LDST_LDC2, 0), cyc), "100%", + constraint =3D ldst_ret_constraint), + Metric("ldst_ret_lds_2", "Retired loads in 2 cycles", + d_ratio(max(LDST_LDC2 - LDST_LDC3, 0), cyc), "100%", + constraint =3D ldst_ret_constraint), + Metric("ldst_ret_lds_3", "Retired loads in 3 or more cycles", + d_ratio(LDST_LDC3, cyc), "100%"), + ]), + MetricGroup("ldst_ret_sts", [ + Metric("ldst_ret_sts_1", "Retired stores in 1 cycle", + d_ratio(max(LDST_STC1 - LDST_STC2, 0), cyc), "100%", + constraint =3D ldst_ret_constraint), + Metric("ldst_ret_sts_2", "Retired stores in 2 cycles", + d_ratio(max(LDST_STC2 - LDST_STC3, 0), cyc), "100%", + constraint =3D ldst_ret_constraint), + Metric("ldst_ret_sts_3", "Retired stores in 3 more cycles", + d_ratio(LDST_STC3, cyc), "100%"), + ]), + Metric("ldst_ld_hit_swpf", "Load hit software prefetches per second", + pf_rate, "swpf/s") if pf_rate else None, + Metric("ldst_atomic_lds", "Atomic loads per second", + at_rate, "loads/s") if at_rate else None, + ], description =3D "Breakdown of load/store instructions") + + def main() -> None: global _args =20 @@ -537,6 +620,7 @@ def main() -> None: Tsx(), IntelBr(), IntelL2(), + IntelLdSt(), IntelPorts(), IntelSwpf(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.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 D431943ACE for ; Thu, 14 Mar 2024 06:00:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396004; cv=none; b=iG5XC0JjsG317cyqGX3vicOQHFkD7diukSrCAuhlu+Die0mcs1qAf3hvwzvf2x+MzCOSBzmbOSvW1CDmS1Tvgz1n1m++lk4wijC8IlaLNd+87xrnh2xRgPsveF0J649BerAmeNzdG//WpY0Ze7SXPruFyYiUz+jK3s6TvhlsONY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396004; c=relaxed/simple; bh=ATIEU1OwZT5UPCeNuSu9+OJJ7mgcQCq56xVHEiwhOQo=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=jO4o5QUf28+L9XPpSOuVpAFazgg3H3DOj/zS1XBot7kwh0f+YWkknjpzL3VfdMQ9mo5nFSb3q38UGwsTu+0yfRquFBC6HmBgIXmD4e1ufhmSxx+bAABk4cBq2vT7yEkyFcWk7B8FSc7x5VOw8Q9TgbGGgUtajUGeXGMG64GLvhU= 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=L//ABNds; arc=none smtp.client-ip=209.85.128.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="L//ABNds" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60ccc3cfa39so3470167b3.2 for ; Wed, 13 Mar 2024 23:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396000; x=1711000800; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=Dpf5hHVN3JuBV5acx4fDuNQxWamY4EcOXEKL6JOmADo=; b=L//ABNdsdXLmodTQ6SJNfN+MPpaKjkg2GvsVR4+3VtQ1DKImzLP0AeXF83Yz4FF9Pb 5AxYKcmqfMxOK4+QbcvtHFHDn6kYbhaB20JLIv0JlN6flTyyI40KdBHj6MtwHa/0t7J0 b4QVe+o1/0vSM0eGvi5x6rkFzmRVjbO87bJ2SrHjsFhBfjuyYVTnF66vq4KUPacQffja 8YjdrvQHkCZveMQfG5cz+SyCJK2Wx1VDKjUdZNCfG3MMK1QZ7G3Y4HSe34Lx/l232Yjp hIzEX4ocJYJF9D2l2OB10uiI8zu3C+fI/+GRzQauXz//S607VbJOvPHeBDHcRtXKT2Xr bpSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396000; x=1711000800; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Dpf5hHVN3JuBV5acx4fDuNQxWamY4EcOXEKL6JOmADo=; b=VmcedPcdBQ1PFBhI3xLGTxsgEndE57QzoTTBWi5aMTr0ALDbPqAbRt+AmNTVCR1LH8 C35Js93JgD2Zk9LowlmYQhVGcV4dAL/rMfICIJrMynOWJFt9aGmCUF+xnONCzJIDrlT+ ajJMbI0JPS0Cvd6WMbAWRHS7ETF5q7djLGPTgvUmknd75hZ+5qOhwuTI1W+oC+wPqEfm bzjmv9rki+1ku7jKiI45YM39sR8uzHB2Cfv3oEr1xtnmbk6hlKwT/b6KnpTB5GwumfgD frc2nlp/HMCiaxN4YZLdsRPqhQpiyL1KlV77wdNKPoI3mETD6hEuCU574OlaCh4yUSxa 0JSw== X-Forwarded-Encrypted: i=1; AJvYcCVF5R/b1ELo5cobli3tNPQRjr8pYW4nCm/hKcZaG1Ohnzf/Q4ECQ3HwTaxyQNXvkOlA0NwS4AnjFKHjzg59Egg8bEY4d3ivxDCdnols X-Gm-Message-State: AOJu0YzzVrYhcDpe4eBfr3egWyD+R29W2cV0anlo7PB8DbCGcEDw46kP RIHoMFcHJtOXK2J4+l9TiQLfIS6FCkVjhZfOXbEOSJ6SZ59sLntJG7+lV41oO3GL66hyVyr+EEI 5/ACcUA== X-Google-Smtp-Source: AGHT+IGZTjZk04FELRhd0NJWv7Oiq9IKYNIMixNmG3acf5ytq9ZgxcP7xIUpAkvk/rTlh7aM/9Zepk/FZDZ5 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:5297:0:b0:60c:b1d4:a9f9 with SMTP id g145-20020a815297000000b0060cb1d4a9f9mr210861ywb.10.1710396000037; Wed, 13 Mar 2024 23:00:00 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:10 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-12-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 11/20] perf jevents: Add ILP metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian 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/intel_metrics.py | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 4ac419212b3d..d15f9ac05204 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -266,6 +266,35 @@ def IntelBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def IntelIlp() -> MetricGroup: + tsc =3D Event("msr/tsc/") + c0 =3D Event("msr/mperf/") + low =3D tsc - c0 + inst_ret =3D Event("INST_RETIRED.ANY_P") + 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), core_cycles)= for x in range(0, 4)] + ilp.append(d_ratio(inst_ret_c[4], core_cycles)) + ilp0 =3D 1 + for x in ilp: + ilp0 -=3D x + return MetricGroup("ilp", [ + Metric("ilp_idle", "Lower power cycles as a percentage of all cycles= ", + d_ratio(low, tsc), "100%"), + Metric("ilp_inst_ret_0", "Instructions retired in 0 cycles as a perc= entage of all cycles", + ilp0, "100%"), + Metric("ilp_inst_ret_1", "Instructions retired in 1 cycles as a perc= entage of all cycles", + ilp[0], "100%"), + Metric("ilp_inst_ret_2", "Instructions retired in 2 cycles as a perc= entage of all cycles", + ilp[1], "100%"), + Metric("ilp_inst_ret_3", "Instructions retired in 3 cycles as a perc= entage of all cycles", + ilp[2], "100%"), + Metric("ilp_inst_ret_4", "Instructions retired in 4 cycles as a perc= entage of all cycles", + ilp[3], "100%"), + Metric("ilp_inst_ret_5", "Instructions retired in 5 or more cycles a= s a percentage of all cycles", + ilp[4], "100%"), + ]) + + def IntelL2() -> Optional[MetricGroup]: try: DC_HIT =3D Event("L2_RQSTS.DEMAND_DATA_RD_HIT") @@ -619,6 +648,7 @@ def main() -> None: Smi(), Tsx(), IntelBr(), + IntelIlp(), IntelL2(), IntelLdSt(), IntelPorts(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.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 57D22171AB for ; Thu, 14 Mar 2024 06:00:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396005; cv=none; b=h7UAQgUmLq+uWn8gio8UHFpTe1cIuSb6VwANrBqhS4m6nZ/Tjm8KwNcFt/hAnEHpABoqDb4E9KsLaNa1S4t5OZjYyj9j16JAlPQYzKTamsHa2Y757vCKKUFcsIMVnqdS+XC659yZAcfrkpQ4QEVR5LNqTP2ekvVvRNiS2Qcw2KQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396005; c=relaxed/simple; bh=EoFQZBcR++BJQLNWKAmvS5P9iYM2cGSAT9IpU470kgI=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=VD9daeEHj78DyYBjZaMv9TgUuHPthpi97XKT3aUMUGJ5r1h04Na0202AgRbqd6uZwg/RKMkWZFrJdfThvbX07YlQr/GP24iAFr5hmfitvzRcQlhUohs9Y659IxbNm5kvZ+iUxAInQFHaot2WNEsDLP/hPIWOruU1WOZ+DpYoHPI= 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=WjW59jlT; arc=none smtp.client-ip=209.85.128.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="WjW59jlT" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60a61b31993so11547117b3.1 for ; Wed, 13 Mar 2024 23:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396002; x=1711000802; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=V2Jgedq1NZZPPT1/Dtc3WDNIcL7gv577kczHEe0Db7I=; b=WjW59jlT/S+m5MRfXyMH1t2YBnAbv1z0kjwqTwag4v77T9TCZHfoeCMEVZQGHPwrGP lrt2AK/19rHkAEN7dEh0+xU00YxjCZzGnMzoMcVo//4XNG7YDgGGEEi6QQV1DL5SdLaB x0QrgUHC3stvxUsKmxqqFsOavz9X8sUsKN4KiLA9D8aeaiK2TtFZnNBAGOWIWYuf3+eI +zU8oM9rhVAH7LizTxpqkvfrxswpx2b/XNBgySJgPbL5fA3iqUawdo3wmkALu1lgi3Ay uT/09GBxu8+yZtBMx0HeK1iBm3W+it+Hpj2O/9nbq2/wukaFegZ/N2xqoYIv5P/PXHWL Gz3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396002; x=1711000802; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=V2Jgedq1NZZPPT1/Dtc3WDNIcL7gv577kczHEe0Db7I=; b=AY/CJzFMIoipATuHk2rSVT+jaFyfYgEyyqr4gK2n+p6tTNVQVPjMwrM211luo2NyRu U4ULz8OE/3k8AfTlQaro6Wm5yL/EhIU0zeoB9UBUAK7aiB/y5KjSPmejFEjOJsUL8Ehv 51bTFT62hVKpzla7gfxQktu63IL1q0uRnyc/8gWzx614Q4mowhcunAOPFbexp2gEDfD7 iTe3PrbkB3HTYdE8f4VmDlqjMBCVQWIDEc2WyWkbm+NWmEyIYAO/WpxLlBOqmAJGpeGg YiXsKUWXpoYue/K2l8vWMSEuyxpmY54LUdVvS+XUXqQycCRdrYLz4fzkgo0YtMps6lVu PeSA== X-Forwarded-Encrypted: i=1; AJvYcCVqgqhN4yXen6t/BGjWQ7xFf4M5h95kOWMO2RBxKiMZpeh6dtcpIcrAXnU7O3iB+ErsOi8iWTCPDVa2xQMJ6Hb+UgHG554UcO11lItY X-Gm-Message-State: AOJu0YzLHFKJnJZWU4nJTGXSqPQdpDc+0IK1uTsWPbJTDY7ZNMuPWHmH dOypTW4YpOym8fxZSm7GVMgrHwx/qoQ4Fc0rtb409cx6/wQMWUCiKiqwFxcAtTILYFCQ7yEBoCj YiYV2DA== X-Google-Smtp-Source: AGHT+IFDQ+9xU0M+SjIFSslxASNCJrc5/k+6p6o3YihJ7av0y0N3jJIcNU/Crks/O9Qb/x+/ZtaBweQ5IYsJ X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a0d:d808:0:b0:60b:998c:389f with SMTP id a8-20020a0dd808000000b0060b998c389fmr179760ywe.10.1710396002262; Wed, 13 Mar 2024 23:00:02 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:11 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-13-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 12/20] perf jevents: Add context switch metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian 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/intel_metrics.py | 55 ++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index d15f9ac05204..387981d58320 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -266,6 +266,60 @@ def IntelBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def IntelCtxSw() -> MetricGroup: + cs =3D Event("context\-switches") + metrics =3D [ + Metric("cs_rate", "Context switches per second", d_ratio(cs, interva= l_sec), "ctxsw/s") + ] + + ev =3D Event("instructions") + metrics.append(Metric("cs_instr", "Instructions per context switch", + d_ratio(ev, cs), "instr/cs")) + + ev =3D Event("cycles") + metrics.append(Metric("cs_cycles", "Cycles per context switch", + d_ratio(ev, cs), "cycles/cs")) + + try: + ev =3D Event("MEM_INST_RETIRED.ALL_LOADS", "MEM_UOPS_RETIRED.ALL_LOADS= ") + metrics.append(Metric("cs_loads", "Loads per context switch", + d_ratio(ev, cs), "loads/cs")) + except: + pass + + try: + ev =3D Event("MEM_INST_RETIRED.ALL_STORES", "MEM_UOPS_RETIRED.ALL_STOR= ES") + metrics.append(Metric("cs_stores", "Stores per context switch", + d_ratio(ev, cs), "stores/cs")) + except: + pass + + try: + ev =3D Event("BR_INST_RETIRED.NEAR_TAKEN", "BR_INST_RETIRED.TAKEN_JCC") + metrics.append(Metric("cs_br_taken", "Branches taken per context switc= h", + d_ratio(ev, cs), "br_taken/cs")) + except: + pass + + try: + l2_misses =3D (Event("L2_RQSTS.DEMAND_DATA_RD_MISS") + + Event("L2_RQSTS.RFO_MISS") + + Event("L2_RQSTS.CODE_RD_MISS")) + try: + l2_misses +=3D Event("L2_RQSTS.HWPF_MISS", "L2_RQSTS.L2_PF_MISS", "L= 2_RQSTS.PF_MISS") + except: + pass + + metrics.append(Metric("cs_l2_misses", "L2 misses per context switch", + d_ratio(l2_misses, cs), "l2_misses/cs")) + except: + pass + + return MetricGroup("cs", metrics, + description =3D ("Number of context switches per seco= nd, instructions " + "retired & core cycles between context= switches")) + + def IntelIlp() -> MetricGroup: tsc =3D Event("msr/tsc/") c0 =3D Event("msr/mperf/") @@ -648,6 +702,7 @@ def main() -> None: Smi(), Tsx(), IntelBr(), + IntelCtxSw(), IntelIlp(), IntelL2(), IntelLdSt(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.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 1E8E84D13B for ; Thu, 14 Mar 2024 06:00:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396006; cv=none; b=lVgZrDSLAm2uy4CF9KZ5KDrwSwwmMxF7G/a+2aLvCR4FxI0Matzcuecdvc5M47EduWR5/sGL3NRz/asn8FKQqW3giz5GIh697fNADg5ROU2qRhfcX30ob8mYqzj9uv60/0uoILflvN7KNLpvF3kcJGz2GKXdImomQ+hmIEwLKGM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396006; c=relaxed/simple; bh=Zv59BcF9/FFOXnYymXzoUfqt6uVYuFUlqvpmq/ZLPyU=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=m1875cCYyfguhslDBXhHXp47dXE6qYKGVG9hDVAagsZeKAy7l+f3hrMRU6zfinM+AoJif0hY7GeuGT48nIWwk3g+AHuw11GxWfUFEDnbGe80gjxOiWv39c+xtjGMgbNr7DnT+Wt2JRseRGsxw1jT7Vq7bBzhoBK06MnekhY8dbA= 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=3tQSVuk7; arc=none smtp.client-ip=209.85.219.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="3tQSVuk7" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dc6b5d1899eso2275231276.0 for ; Wed, 13 Mar 2024 23:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396004; x=1711000804; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=Wrp1xMdxyIWOSP8hDN276AUUBW2F4zIQGzyrmjQ0NGE=; b=3tQSVuk7v+A3ck5hoif+sLHNtUGbpifbSx+td9WjpWPrQ9N6CHfPUZTNz+k1WdWb7O 2v6wQsgUTVwnK4k8Cl+dv9YK5I3MdTgOf07VgvE5wixO2PmLkI1G0QSRf5QEwLHK/MMP 2RQ2s/dGQA4eCx0no20fLeh32yxhkO/PFqjxZ25ga3pottN8ereTlhnPqcbLkFkPyLTF dnS/EihoU7DEls4/CjLU1DlqMnCp1V9IhBWC+54i8twpzPvuG9fGBgaXNh95C73ffql8 7her1DLxyQ1c7HBjeFaeFmdsO59houmkC93ClXQ7b8/RDe3gFFsI7rsDI0t4eoEMpPf2 ioFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396004; x=1711000804; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Wrp1xMdxyIWOSP8hDN276AUUBW2F4zIQGzyrmjQ0NGE=; b=FP+LaLVqO2oqs0nN77iAmG89Jgs4+4RQM8vTBscztXZ/Kn24weOmctWHSrr6jfQyoB /CRON7XJ0JzmbK0ZMHNpqSVzB+3JTvTmvtIOTJOiP8S97iNDOuXAvZwcsUYxjM3djRwF 9NZTJJN9Vzgs+QWTtZI8/KEdiZLFzYwh4Ebj/7tm9+hEiyXH12ALFSyELqJJ5Yvv+TXs 2vjeZ5ry2Zt7RHqGDtMcvUvsE+WXBqGadZBWbBBmG/7bBNygK/rK98rnQdIgbKxqTaJF ZOyFSB6WHojH0aWBPcUlmQDE8Q73O6VujJ91iRhdvUmLXmF0KR/hTGz+eoP1AXJvF6Sq 1OzQ== X-Forwarded-Encrypted: i=1; AJvYcCXdDn2VzV4chY74PP+lHW/dhZJgAUnt13aW6DyWoGbXXauMl7l0wt1N81sxLdOlXRcy1sOLURLhjSQK30LaDqlgGM/bUQOt0Mfpky3t X-Gm-Message-State: AOJu0YzvzYkU1bgdf4KuhL44Q4iVsSbFjwh1stW8y/HzaDL2YRL/j4K7 Ql62D8Ojlg675TWsdDOdHw5/Z8fD/HkFYLM7McybQ8x6K6gEEpXNPanTVjv66MlfR4EhG6m4lRG cWyIfeg== X-Google-Smtp-Source: AGHT+IFDJM+0l2op5SV6RAZkgs1N/ukCDz73rxkHFqK7G5dqyPkyfs4SefZFM+JjpIuo/No5WhR+xvC/m/oo X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:2311:b0:dbd:b4e8:1565 with SMTP id do17-20020a056902231100b00dbdb4e81565mr255527ybb.4.1710396004209; Wed, 13 Mar 2024 23:00:04 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:12 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-14-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 13/20] perf jevents: Add FPU metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Metrics break down of floating point operations. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 90 ++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 387981d58320..da97a1781be7 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -320,6 +320,95 @@ def IntelCtxSw() -> MetricGroup: "retired & core cycles between context= switches")) =20 =20 +def IntelFpu() -> Optional[MetricGroup]: + cyc =3D Event("cycles") + try: + s_64 =3D Event("FP_ARITH_INST_RETIRED.SCALAR_SINGLE", + "SIMD_INST_RETIRED.SCALAR_SINGLE") + except: + return None + d_64 =3D Event("FP_ARITH_INST_RETIRED.SCALAR_DOUBLE", + "SIMD_INST_RETIRED.SCALAR_DOUBLE") + s_128 =3D Event("FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE", + "SIMD_INST_RETIRED.PACKED_SINGLE") + + flop =3D s_64 + d_64 + 4 * s_128 + + d_128 =3D None + s_256 =3D None + d_256 =3D None + s_512 =3D None + d_512 =3D None + try: + d_128 =3D Event("FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE") + flop +=3D 2 * d_128 + s_256 =3D Event("FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE") + flop +=3D 8 * s_256 + d_256 =3D Event("FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE") + flop +=3D 4 * d_256 + s_512 =3D Event("FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE") + flop +=3D 16 * s_512 + d_512 =3D Event("FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE") + flop +=3D 8 * d_512 + except: + pass + + f_assist =3D Event("ASSISTS.FP", "FP_ASSIST.ANY", "FP_ASSIST.S") + if f_assist in [ + "ASSISTS.FP", + "FP_ASSIST.S", + ]: + f_assist +=3D "/cmask=3D1/" + + flop_r =3D d_ratio(flop, interval_sec) + flop_c =3D d_ratio(flop, cyc) + nmi_constraint =3D MetricConstraint.GROUPED_EVENTS + if f_assist.name =3D=3D "ASSISTS.FP": # Icelake+ + nmi_constraint =3D MetricConstraint.NO_GROUP_EVENTS_NMI + def FpuMetrics(group: str, fl: Optional[Event], mult: int, desc: str) ->= Optional[MetricGroup]: + if not fl: + return None + + f =3D fl * mult + fl_r =3D d_ratio(f, interval_sec) + r_s =3D d_ratio(fl, interval_sec) + return MetricGroup(group, [ + Metric(f"{group}_of_total", desc + " floating point operations per= second", + d_ratio(f, flop), "100%"), + Metric(f"{group}_flops", desc + " floating point operations per se= cond", + fl_r, "flops/s"), + Metric(f"{group}_ops", desc + " operations per second", + r_s, "ops/s"), + ]) + + return MetricGroup("fpu", [ + MetricGroup("fpu_total", [ + Metric("fpu_total_flops", "Floating point operations per second", + flop_r, "flops/s"), + Metric("fpu_total_flopc", "Floating point operations per cycle", + flop_c, "flops/cycle", constraint=3Dnmi_constraint), + ]), + MetricGroup("fpu_64", [ + FpuMetrics("fpu_64_single", s_64, 1, "64-bit single"), + FpuMetrics("fpu_64_double", d_64, 1, "64-bit double"), + ]), + MetricGroup("fpu_128", [ + FpuMetrics("fpu_128_single", s_128, 4, "128-bit packed single"), + FpuMetrics("fpu_128_double", d_128, 2, "128-bit packed double"), + ]), + MetricGroup("fpu_256", [ + FpuMetrics("fpu_256_single", s_256, 8, "128-bit packed single"), + FpuMetrics("fpu_256_double", d_256, 4, "128-bit packed double"), + ]), + MetricGroup("fpu_512", [ + FpuMetrics("fpu_512_single", s_512, 16, "128-bit packed single"), + FpuMetrics("fpu_512_double", d_512, 8, "128-bit packed double"), + ]), + Metric("fpu_assists", "FP assists as a percentage of cycles", + d_ratio(f_assist, cyc), "100%"), + ]) + + def IntelIlp() -> MetricGroup: tsc =3D Event("msr/tsc/") c0 =3D Event("msr/mperf/") @@ -703,6 +792,7 @@ def main() -> None: Tsx(), IntelBr(), IntelCtxSw(), + IntelFpu(), IntelIlp(), IntelL2(), IntelLdSt(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 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 3B85750263 for ; Thu, 14 Mar 2024 06:00:07 +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=1710396008; cv=none; b=sybr7sBPuBImYqVjeZKVwW7BaCyPYk9mmgzZiP7HeN4Jnpj691xt/skb6JtiuPODSQZrsu+VAOZCxJid8tIRSASX6KscRjjpUPOncSDK3z05E8jJRpcGvbpdIjfcZVDyp9QUmxiGHI+KpPuXpTpw1Ch/GQICHbYppPa/2D++FWY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396008; c=relaxed/simple; bh=gFhzpwFPHEzHqdpqsWr4rp9QKQBu1kI7PFwIsR9IC/k=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=SaPP/pe9gnrfFzxzkU7YszpPA/wXSnV/RCRDz53nzP+hZDIdtSvAxfjZGt1CMOuhX9PCiFMgFaOD0uTwKEY7oj43ZNtVsl/KyVbHi8S5SS5M8QLuU6aM0IkWIOBD1eu08xZvh1QJScbwr+aLHr/zT4k0IJHPbuKKyDNTzzPzkzA= 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=RRrESQjJ; 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="RRrESQjJ" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dc657e9bdc4so97709276.0 for ; Wed, 13 Mar 2024 23:00:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396006; x=1711000806; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=W7vxajjjO2isWih1cYJ4Ij+u5GgCOj0Bgjw8R4VQYtk=; b=RRrESQjJ9NzRSA125Ua5W/OWa91CyFKJIrEyXF6GSv7Fu5Hxcb3RGndZXm44dwTt7P HfqyTJKPOozeRjGUqHOcDKPpkeI5Ze7c/0SbSVyYVzk89iETYNHf/OTaxUDTOTf4AsMD CARkAn/CN2S39WaVaYK1tzn1oSPAbMjkO438AwQ5qpUxDnX9/PqStDaMNnD8uaAvQPZY Kvu7XK2I0PMmkK9dzqFnCZ1vhRMGyIEMTDDv0CE/D2PxQE1y96Sa5wHsPxrwz+5FRhBC 0HXpJ88V2gZ1TI67jdJMSt8SSYkP4afyw5dnwAxAZRPAlBy6KPpzC9BwEljmp5nkjURA xnAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396006; x=1711000806; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=W7vxajjjO2isWih1cYJ4Ij+u5GgCOj0Bgjw8R4VQYtk=; b=qZ1ooSbL1Wh2xHpSIKYr2aYLvaRYvNskU6KwaGR9sJLE5C3PfmTwmRZqKkQG1X4o54 q4069k13whIgwZapQoHDoV+r+IwnazjktZy8Lm++735TNbOkCAvjGaRCU8+gVAUplU1Y OK+viFbbhZK+/Iln7BOX3Jq2gB/BTAzNwqeUDDov/EnGDshHn0l+UMRNTcDT9qdfSB3d VL/rXX9KS1v/tyDWpVkXfHVUj7efxe21oqjM+M2NwowL3AucvMcjFw8yNTzWvwzW9EPK XthPvX7AF9acvZxl/Facf7b1ObPCL267ZtbhGPvXMrYqHipRozZDNRwLgCNumiTgrsV8 T1bw== X-Forwarded-Encrypted: i=1; AJvYcCVltfQFfuJlPApcMRgwvcGMdB9Qtd2J6+XJJa3CbYHtr00cmrdoXbdP1Fp5uH/NOh/1CLzquOmp9y9CBXGSef6CEs4Lfeqf8KK5bfEz X-Gm-Message-State: AOJu0YwpPl4xBVoJDWwtVcpvbbSU/mIRp5NzomKplpyMizIlOSvF+7kC lXGVLVzNKjexIDCAbtxuKQLQzggBu21gVRurzYJnRV/h8KKaeth45apWARXQORCxFM9aGC3hnrx 9dk6HXg== X-Google-Smtp-Source: AGHT+IHNwiqaYfw65s265xd7PnGQZUyDGWFCZKVZD5ioEDmzy049uZNTjUPtWKfxBg9etYsZdXej7arVN+2D X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:e09:b0:dbd:73bd:e55a with SMTP id df9-20020a0569020e0900b00dbd73bde55amr27878ybb.4.1710396006451; Wed, 13 Mar 2024 23:00:06 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:13 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-15-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 14/20] perf jevents: Add Miss Level Parallelism (MLP) metric for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Number of outstanding load misses per cycle. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index da97a1781be7..6a864c0b863a 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -595,6 +595,20 @@ def IntelL2() -> Optional[MetricGroup]: ], description =3D "L2 data cache analysis") =20 =20 +def IntelMlp() -> Optional[Metric]: + try: + l1d =3D Event("L1D_PEND_MISS.PENDING") + l1dc =3D Event("L1D_PEND_MISS.PENDING_CYCLES") + except: + return None + + l1dc =3D Select(l1dc / 2, Literal("#smt_on"), l1dc) + ml =3D d_ratio(l1d, l1dc) + return Metric("mlp", + "Miss level parallelism - number of outstanding load misse= s per cycle (higher is better)", + ml, "load_miss_pending/cycle") + + def IntelPorts() -> Optional[MetricGroup]: pipeline_events =3D json.load(open(f"{_args.events_path}/x86/{_args.mode= l}/pipeline.json")) =20 @@ -796,6 +810,7 @@ def main() -> None: IntelIlp(), IntelL2(), IntelLdSt(), + IntelMlp(), IntelPorts(), IntelSwpf(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.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 9B7D91759D for ; Thu, 14 Mar 2024 06:00:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396012; cv=none; b=hJ0gMl1kSQT8+nW+NBhjOJLz0mUM8KhzgwpcaG2400WQ6WxsPtJqnwY+tt5uC7SNqjFR8xeNoMvLtHoN3DDjUeZXKFMByslnzJGTVFo+lRYIlsh1hVzN0rD2IFX8MHir/nNuOaUMHxE91oOlvn/g89x7G5AmkXDOWuFYLBPVWPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396012; c=relaxed/simple; bh=9uJw1O918oN2FYmURJnSNa9KpCLd9v9rjdrnFyM6JbQ=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=Bg127F6kfo7naNbe+/u0s/ZrWKGKg14rg2bDdB2HJyC+H2vCiRMbJMOwDtX8WU0aGFj9f7rvjcISY6f3wKIfFJgUEee32FXkdWrHmVgbXFCzuHdw1lUSniKvjHvvTCK1ioKU+B1aa3NjpEtQwItE4ZFuCBNNfSzlW+11Xrcol4g= 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=xvzDl1zA; arc=none smtp.client-ip=209.85.128.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="xvzDl1zA" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a2b82039bso12711187b3.1 for ; Wed, 13 Mar 2024 23:00:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396008; x=1711000808; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=UFiXNnmb/ZEVra2BYkk6K4dsDX+iGAa4EIuUf6Naynw=; b=xvzDl1zAnPtrzCvpyOQeQ81wYM0OvPZ5Fy71crfJQS/Q1zGIfq1fuq/0vilF3UUIEU y0b6EaFzv7iPr8WJ6ByFntBx3JFLeJE1U7l2bwgq7Zn91hZsfBXOerG8E74XI9Qug+Hc sqwXrZ+lp6aohPM7Wd3wdQ77idp1G3xHf+g8oX9za+56Uq4CTYFk0sCuONPjBIsVMx/y x6/v6q/00iqWurkZXWhJQ86Ev/3poRCtY3iy6kudTN22hdF9P7Dh4UJzWpE3ghl//bNh Xo3VJVxN9sq0N8dAW4Pho+WNMhO7Lyj0BH/RWXGzJeM4+mTFaU6CM/62orSRR7daXn2g DVMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396008; x=1711000808; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UFiXNnmb/ZEVra2BYkk6K4dsDX+iGAa4EIuUf6Naynw=; b=aKjFl/wEEZ/+StInTdqaHt3LxdJXTIaC8/fq1Q3nfGTLWqBrg0KGwA5a9mz2Q9ggCN 1bJJZQXZuzDtV9oVi2fB1soqTtohyg3yc2FjmyLYBXSqL/sxhE5PapTZdZjfKLfS0u94 y/cNO5YqQKtyrvOHM7FQBHRqdfq2czU7wKs023VyHxi4TmslTQP6mJShbuMFfn6jZzGv /oCBkZxhLHArIha9CyvfnWxRwHL2DFP5ckyvfeFihAAY7DYIcx5fXa+ksoOgEwA/gquZ iXkgH5dxI/4RxsFNh6sEdrOfir1L6BAI8iKBdTV4q1mo5OcZwmhtcghA4xPGgFujElYp kEJg== X-Forwarded-Encrypted: i=1; AJvYcCWPZAlBH1aV0XDQYS9BGAFH+YiJySyJfMiJMYpKi/75aBXIEFJFI8V6gZsB2FT9OUzKkLZvDHrJOuBIScj1RGjfq1Orm4vhAzuMiFH+ X-Gm-Message-State: AOJu0Yy4jppZTkMW5DvXmI4hpTESJApN9xbVqN6lu/ZLHhVMNUcQRg4T CTuGt/thG7jp/XOZPT76uz0F10cuIRVPgw/CHdMp1ljYwJk88DtpJFRsp57qRU3WtLwuktG9pr+ TMXN/Rw== X-Google-Smtp-Source: AGHT+IG6D/9cf2FaWOjiiIaSBSmoU23i8ct9mqVP2RbqJuRzciG2uPuROEkE4L6iloxBiIFlCCfNNNw4oDCo X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a0d:d54e:0:b0:60a:2307:e3b with SMTP id x75-20020a0dd54e000000b0060a23070e3bmr131957ywd.3.1710396008638; Wed, 13 Mar 2024 23:00:08 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:14 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-16-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 15/20] perf jevents: Add mem_bw metric for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Break down memory bandwidth using uncore counters. For many models this matches the memory_bandwidth_* metrics, but these metrics aren't made available on all models. Add support for free running counters. Query the event json when determining which what events/counters are available. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 6a864c0b863a..c7f536d3d4ed 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -777,6 +777,67 @@ def IntelLdSt() -> Optional[MetricGroup]: ], description =3D "Breakdown of load/store instructions") =20 =20 +def UncoreMemBw() -> Optional[MetricGroup]: + mem_events =3D [] + try: + mem_events =3D json.load(open(f"{os.path.dirname(os.path.realpath(__fi= le__))}" + f"/arch/x86/{args.model}/uncore-memory.jso= n")) + except: + pass + + ddr_rds =3D 0 + ddr_wrs =3D 0 + ddr_total =3D 0 + for x in mem_events: + if "EventName" in x: + name =3D x["EventName"] + if re.search("^UNC_MC[0-9]+_RDCAS_COUNT_FREERUN", name): + ddr_rds +=3D Event(name) + elif re.search("^UNC_MC[0-9]+_WRCAS_COUNT_FREERUN", name): + ddr_wrs +=3D Event(name) + #elif re.search("^UNC_MC[0-9]+_TOTAL_REQCOUNT_FREERUN", name): + # ddr_total +=3D Event(name) + + if ddr_rds =3D=3D 0: + try: + ddr_rds =3D Event("UNC_M_CAS_COUNT.RD") + ddr_wrs =3D Event("UNC_M_CAS_COUNT.WR") + except: + return None + + ddr_total =3D ddr_rds + ddr_wrs + + pmm_rds =3D 0 + pmm_wrs =3D 0 + try: + pmm_rds =3D Event("UNC_M_PMM_RPQ_INSERTS") + pmm_wrs =3D Event("UNC_M_PMM_WPQ_INSERTS") + except: + pass + + pmm_total =3D pmm_rds + pmm_wrs + + scale =3D 64 / 1_000_000 + return MetricGroup("mem_bw", [ + MetricGroup("mem_bw_ddr", [ + Metric("mem_bw_ddr_read", "DDR memory read bandwidth", + d_ratio(ddr_rds, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_ddr_write", "DDR memory write bandwidth", + d_ratio(ddr_wrs, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_ddr_total", "DDR memory write bandwidth", + d_ratio(ddr_total, interval_sec), f"{scale}MB/s"), + ], description =3D "DDR Memory Bandwidth"), + MetricGroup("mem_bw_pmm", [ + Metric("mem_bw_pmm_read", "PMM memory read bandwidth", + d_ratio(pmm_rds, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_pmm_write", "PMM memory write bandwidth", + d_ratio(pmm_wrs, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_pmm_total", "PMM memory write bandwidth", + d_ratio(pmm_total, interval_sec), f"{scale}MB/s"), + ], description =3D "PMM Memory Bandwidth") if pmm_rds !=3D 0 else No= ne, + ], description =3D "Memory Bandwidth") + + def main() -> None: global _args =20 @@ -813,6 +874,7 @@ def main() -> None: IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreMemBw(), ]) =20 =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.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 4CDDB53816 for ; Thu, 14 Mar 2024 06:00:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396012; cv=none; b=VE/51nex+Lym6CM+CssCdwS6gY5z0frTTd996weSlHMNCsssxEZFgbIItXf3F2lrl06FdNuhWZwKMnDVXeVJjxdFalKZ4nrOn2hDQUVrzawqaNzzOziTpDsOGImm7ZGrKSzbOPdB6UeYvz/5PqAvgcI1GVFf2Iz+RfFzgZ10jIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396012; c=relaxed/simple; bh=5vGBa7vsebiJJB1YfqifUQF3HSZMEk4GQJ7s/+b0FVE=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=pTD2hKlorU31UxE3CIMUyivVW6hLP7Cj9KuRxpDb6gxZk6dZpp8UJulI8mM6gmbXEo949XMcSaqte+96K4a2h7yS9f3u0fwGO6C2EqW2mMa9z4ns5JuFK2nC8K5QdJErP71BJPPyZ33kqS1+6HF6WwfY6EMEfLG+r3qq8USzdYU= 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=ARbU8Q+8; arc=none smtp.client-ip=209.85.128.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="ARbU8Q+8" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a54004e9fso12942467b3.3 for ; Wed, 13 Mar 2024 23:00:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396010; x=1711000810; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=9UsYsa6L3dXtrvFFa4GSQJpZwL142VFZWkHKOYixoWY=; b=ARbU8Q+8c0ERc8UNPh5ZSZI5gEBou4JK7QYqNrwZk+BVh+TBljwcik5DnXNolfI1QG 8aV2kZIW/swGnQBn3K0mbhzHFvQwBN3lmkmm9x/RegsBm96vQlZ82neZcSOAm//GvmIj zcywAmeEPGi9gnt37KD3BQkbr7IR8pAWb26O6SAGWHGdkqodKTsoRXc7xGW9cP0H7Xhn IEpGIt/JFiKl6ZbNTWvN7YHeMCXgtdD5deBfN4prBfj9zqhv0vlt7Mk7SIuqb9FSBSr/ 89xPHjP6QurLjFRN4DgaCQTe8Nus0ItZYNVJoAB3ZKpe8JGWJ9f1baWyYVPE7rpDfTVs SR1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396010; x=1711000810; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9UsYsa6L3dXtrvFFa4GSQJpZwL142VFZWkHKOYixoWY=; b=ZO+n798SMz6rNgUS9XHG3e0wRg72TAarZnkT3YnkauvSPpgzibXfxWpYmZRoF4jknn tkrnfdMAciWGVmme1/fUiCOVB0iQtx9mk0bYBS0/l6TaJ0p6BwSfttm6ds+itBXill/z 0+e0avI/dTiJ8HIGcztySQmawA/c8cQOvuZsID5qNymSWJh8nUHTPdG50BEprQQ9v73Y CrnONrklKbQIHOmUDlK1q7xWoQROzfQH6VSJkR8sawK530Myo84ja5nZO9vHNMX1mvil vHozv6zhns/P40toIjH0i6ffvhFvWIdsYnne5ygt+Q3MRxLVLBuGDEi3o7ZY6p3ixbCH 8b5g== X-Forwarded-Encrypted: i=1; AJvYcCVzG8yUuEju5iSnCXH2bHww27iWHaiHj4ljWwhGvHfKBw5gFj8m/0dNbxSyO7TK+UPakxvQHnVFHv+mdQJRz6Ui7HJFIrl7enE+OIqP X-Gm-Message-State: AOJu0YzzW5rPUVjqviXkWEg3TgyacmJem+GCX23VqqLTLv9DF3YSKWhV UyReap+Fn/B1QVh0yLFjKrP0QOK7A09yfFSaBEdnDIWACRe1l5VKWjeoLMOIfGu9pDaZCfxhfBT F6lz1sA== X-Google-Smtp-Source: AGHT+IHhFvrJVYOJ6LQNqV+t6Bz4uTYsc3YEBzeF1eZBLfIWr9zJ5KYTkmxypQYWYjRd/Zk6lXr4R8vUi6w3 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:48c1:0:b0:60a:48d:c563 with SMTP id v184-20020a8148c1000000b0060a048dc563mr212977ywa.5.1710396010579; Wed, 13 Mar 2024 23:00:10 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:15 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-17-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 16/20] perf jevents: Add local/remote "mem" breakdown metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Breakdown local and remote memory bandwidth, read and writes. The implementation uses the HA and CHA PMUs present in server models broadwellde, broadwellx cascadelakex, emeraldrapids, haswellx, icelakex, ivytown, sapphirerapids and skylakex. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index c7f536d3d4ed..254a4e73d926 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -777,6 +777,32 @@ def IntelLdSt() -> Optional[MetricGroup]: ], description =3D "Breakdown of load/store instructions") =20 =20 +def UncoreMem() -> Optional[MetricGroup]: + try: + loc_rds =3D Event("UNC_CHA_REQUESTS.READS_LOCAL", "UNC_H_REQUESTS.READ= S_LOCAL") + rem_rds =3D Event("UNC_CHA_REQUESTS.READS_REMOTE", "UNC_H_REQUESTS.REA= DS_REMOTE") + loc_wrs =3D Event("UNC_CHA_REQUESTS.WRITES_LOCAL", "UNC_H_REQUESTS.WRI= TES_LOCAL") + rem_wrs =3D Event("UNC_CHA_REQUESTS.WRITES_REMOTE", "UNC_H_REQUESTS.WR= ITES_REMOTE") + except: + return None + + scale =3D 64 / 1_000_000 + return MetricGroup("mem", [ + MetricGroup("mem_local", [ + Metric("mem_local_read", "Local memory read bandwidth not includ= ing directory updates", + d_ratio(loc_rds, interval_sec), f"{scale}MB/s"), + Metric("mem_local_write", "Local memory write bandwidth not incl= uding directory updates", + d_ratio(loc_wrs, interval_sec), f"{scale}MB/s"), + ]), + MetricGroup("mem_remote", [ + Metric("mem_remote_read", "Remote memory read bandwidth not incl= uding directory updates", + d_ratio(rem_rds, interval_sec), f"{scale}MB/s"), + Metric("mem_remote_write", "Remote memory write bandwidth not in= cluding directory updates", + d_ratio(rem_wrs, interval_sec), f"{scale}MB/s"), + ]), + ], description =3D "Memory Bandwidth breakdown local vs. remote (remote = requests in). directory updates not included") + + def UncoreMemBw() -> Optional[MetricGroup]: mem_events =3D [] try: @@ -874,6 +900,7 @@ def main() -> None: IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreMem(), UncoreMemBw(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.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 5147D548EC for ; Thu, 14 Mar 2024 06:00:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396014; cv=none; b=itQpK/ONwuZPwIJlMP7C2/5lv3LeXq6x8+cx0rqE/4XlLegdXxIxlx9bkdQ7JqiLSb+xjcHrLGIzchNDJ9vEZztQ443rLkmUj39x941rDxeeGMctrwMtK86mLvy1N4AAq7qmfue86MvWgKY3c4ZPYSqU4cMza7LHNrryQfsOwR0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396014; c=relaxed/simple; bh=slsQ486FDmV+ZxtCxqAbpTjZ7e+5jcmyOmviohPSGHw=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=vGs52C+8cWYL9fnbnYwh6Besm+bwmUEJ/NnNFfMURkaCqgL89SlN6FzqaqT5LyeDZ2ctYO+ZmnQGIy/vfAAAhy3YqBy+v98jFUFwPqcPrQUKdLt4vPXip3HRtoiGTjfSZZPKHwzq9PUU2BREbgkOxgkEatXObS1qfDLM6CVPbuw= 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=B2774U4L; arc=none smtp.client-ip=209.85.128.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="B2774U4L" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a20c33f06so10914407b3.2 for ; Wed, 13 Mar 2024 23:00:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396012; x=1711000812; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=oiroQH+MCh0YtGdpUEh3/X3CQ0/YTeWJYjgikZKNUY4=; b=B2774U4L4HCRIePlS+y/OPKxfEeWLGxyQSKiA5oWPYv9k5CP6a5w0A9B3gGsMJKdet n/FC+RVUS+tOE7eM4bhEpzt/cBGhfo9lSSEUVAhjJxCBEwadKcwVobEsefd8zjQleGIC 1UHVF/u1dMYSA5hqkcad/aoOQhkpNVF4VqDrNQ3dV1gQ9EhW/mwF5N7KpiBnachbWqwi QvDqU0V66kU4JvYR1F3ZcH/ii1qlYNB84Az6GU224O186qFOD7RituPi84mQ7NBli6We 6E84yZo6sDu06Kowf+6aDxy32PkeJJ93QFBJR0Ko60V94ofsRtWqq2m3u/by5zhQelA8 WPdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396012; x=1711000812; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=oiroQH+MCh0YtGdpUEh3/X3CQ0/YTeWJYjgikZKNUY4=; b=vCYODemXnQuVQvnETWCIoDyhdH4kwDox9jwieZoG1nUitmG3r+PJKHP2gy5YMes8uV CG+alyfM/zyJ4X+fymMr2pvFpX2WkszQjIEFDlYePrBAGm/YonSdLu6E/qcuxAkwqzWI k55RogXT8kRsuKOZPW1mL+yAwYRsARogBJh3ZUrjgwP2hxubw+u/XDKspWVE4EO86+23 5by1xhC2zbi1GXefirdqq3/XMYqbc3J5Z7QiYtg+nlTFX5b3n/72kbMnDD3mDV9/G6Y9 ugrCHWuKBj/VFquwMLVi2/835ejgrarLvObV/odSTz3JCZIk9Xvuk3SrkHpF+bmHr89o 5SFw== X-Forwarded-Encrypted: i=1; AJvYcCWcrnHe1s/Y53TLRAjsf1EmM73jewHe5NHuAJb7kTH390ukEW7pPkHENVmle/OriCneP8BiHPdDfSxSjJ/mQCUQX1cDJUpxHCV0GlmD X-Gm-Message-State: AOJu0YzvT2zCAuNUZhdNOf2RcFJQiMFkJRzTBMUd4Pl+TKHMkqy55dIb 72TybtWCzBZ7F9OXOdSO9mgbP2fQ3sC4PQcDtZcmzC8IBd6FnktB5139mPPQEv+256J61pal83U ekEiyUg== X-Google-Smtp-Source: AGHT+IEBOHkXOSZG2uOqq0iESlfzDouCBFleNoS96ZHpCr1eVUtAUfnBTxPymOArK82g0zZQIQu2G4azM8HM X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:4ed3:0:b0:60a:5d76:a875 with SMTP id c202-20020a814ed3000000b0060a5d76a875mr126603ywb.5.1710396012545; Wed, 13 Mar 2024 23:00:12 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:16 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-18-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 17/20] perf jevents: Add dir breakdown metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Breakdown directory hit, misses and requests. The implementation uses the M2M and CHA PMUs present in server models broadwellde, broadwellx cascadelakex, emeraldrapids, icelakex, sapphirerapids and skylakex. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 254a4e73d926..0e3ead0fa0b1 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -777,6 +777,41 @@ def IntelLdSt() -> Optional[MetricGroup]: ], description =3D "Breakdown of load/store instructions") =20 =20 +def UncoreDir() -> Optional[MetricGroup]: + try: + m2m_upd =3D Event("UNC_M2M_DIRECTORY_UPDATE.ANY") + m2m_hits =3D Event("UNC_M2M_DIRECTORY_HIT.DIRTY_I") + # Turn the umask into a ANY rather than DIRTY_I filter. + m2m_hits.name +=3D "/umask=3D0xFF,name=3DUNC_M2M_DIRECTORY_HIT.ANY/" + m2m_miss =3D Event("UNC_M2M_DIRECTORY_MISS.DIRTY_I") + # Turn the umask into a ANY rather than DIRTY_I filter. + m2m_miss.name +=3D "/umask=3D0xFF,name=3DUNC_M2M_DIRECTORY_MISS.ANY/" + cha_upd =3D Event("UNC_CHA_DIR_UPDATE.HA") + # Turn the umask into a ANY rather than HA filter. + cha_upd.name +=3D "/umask=3D3,name=3DUNC_CHA_DIR_UPDATE.ANY/" + except: + return None + + m2m_total =3D m2m_hits + m2m_miss + upd =3D m2m_upd + cha_upd # in cache lines + upd_r =3D upd / interval_sec + look_r =3D m2m_total / interval_sec + + scale =3D 64 / 1_000_000 # Cache lines to MB + return MetricGroup("dir", [ + Metric("dir_lookup_rate", "", + d_ratio(m2m_total, interval_sec), "requests/s"), + Metric("dir_lookup_hits", "", + d_ratio(m2m_hits, m2m_total), "100%"), + Metric("dir_lookup_misses", "", + d_ratio(m2m_miss, m2m_total), "100%"), + Metric("dir_update_requests", "", + d_ratio(m2m_upd + cha_upd, interval_sec), "requests/s"), + Metric("dir_update_bw", "", + d_ratio(m2m_upd + cha_upd, interval_sec), f"{scale}MB/s"), + ]) + + def UncoreMem() -> Optional[MetricGroup]: try: loc_rds =3D Event("UNC_CHA_REQUESTS.READS_LOCAL", "UNC_H_REQUESTS.READ= S_LOCAL") @@ -900,6 +935,7 @@ def main() -> None: IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreDir(), UncoreMem(), UncoreMemBw(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.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 7284254FA0 for ; Thu, 14 Mar 2024 06:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396017; cv=none; b=TpCx4RY5LeAnlEXBJggm5O/QU3fZ71dpRMxL3F+ohHLI2f/7s8NZ5GE+93YvqY0vY9z+eNDpZS4z299wsItfCY06wOqOuMmgPt0DDTgeaAqTdjkGH9Q7Uxqgp8/ldnJEmOWLZEdbviAa2q8OMLa0aa/J20FPFkCmgoClWhbq7pA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396017; c=relaxed/simple; bh=n0hCKJOhlUlJCmdcwDN2VdNUYO/G7CQ1TA0ZpP6Z6tw=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=aVEip91uZAJLXcZpXonTb3Jp2xegsqv4oqB1BxrYHXv3vVTqgAaNl2Pir8pcfa9YWyUHIkUofqQBPdBAGmun37uMPKzfWlW8r/U0wo8OwV/cJlneCgBRUbpdaWvGWPVFcrEv/kd/d5ENiJkLZKL3qaDQIvIGiEuinYjaTCP6DWw= 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=0intQ5lb; arc=none smtp.client-ip=209.85.128.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="0intQ5lb" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60a55a14013so12011037b3.0 for ; Wed, 13 Mar 2024 23:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396014; x=1711000814; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=QZF+lDg+x+4lYSQ25pqZOkUZnj+qYtfQQOFRuHTcEG8=; b=0intQ5lbE69xDg2IYnFPkyvGhd2ZJ0cwPAP3p6rnzeV8yfPN+EBh/QODXk1qunfjPn cOgI/bFJPcqdnXL1790b+UDypKzsae54tgOklwBR8YEhiAxCD6+Oi7FLlnO18ziD0f/Y LwYxm4/BdniW1B1ceu5pztsQFTns7HnqosYbL68tezt7FZTJACIgMxFfVKyR5ZRNE0wm AqwJ3VL7bTrHHIAAye3ZDu7cEb26ydR38EwSlLWKic0YNR1AUBFzGe9pZUajxmsNlhrb gAYoQtY9n5iL/Wcx4nJ00jLa23CTrRFp3f655guMhOS2bAFw6/tVxUvwLH1FRFpNN0rg QQvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396014; x=1711000814; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QZF+lDg+x+4lYSQ25pqZOkUZnj+qYtfQQOFRuHTcEG8=; b=H9Q6e/qq4wJgc6pv8fdYpXD+4ajQ9AgJRhxg+zn6QRU9smU22Ias6vzAqhfPw+p3YI uAwogHGE2elnkWyxd9sTpEEy8M1TKJWvEdh1igWoikLG/H+BxXgkcZQZ41AVZP5ALwQo cvEUeNhG1l7CPVmGmxWBaXqF3OX89XeKNle6iJSN9a/AhFoZz9mEeRb6+CcsRYMAJMO4 kUllG4XzK/XJZPWUTUTYQEaCg6n3gd2eVWBLE0T3FomIBGOSDYRS5wOrPzUt21b6AvUZ KlRP9lAz+jmSuKMhEocGoACPEafHPnYOu+GIEGQHqpcTOtGEqtgmra+pRcaVARXwmoQO jndw== X-Forwarded-Encrypted: i=1; AJvYcCUgLb46In7QQxFQ9uDhdey9pEgXvfUcgcTC+xrVo7EZSGR4sjKfhyq+0kJ1oERldH1puj8uk6niT4UpBalV6HGIzTfI9xwRhHZJzMtX X-Gm-Message-State: AOJu0YzY4K7WbdbpcAO8b69QuERYXH0av5SSHziKDdvgcWZKlye7HhxB gp463hlaf4RCmpyytWnWUKL+PLMEc/odYLt8wlJtkc0T7NVuydSK9N/QiVTIltVrfCjCTAtVHRq S3ksORA== X-Google-Smtp-Source: AGHT+IGTzCPvzNe1FzIzgXs6Q9kbuqyr1aub5IHA6aYENEtw3/TaCG98nTpP+peSoQ96AcjfAYyOdeKlFtDE X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:218e:b0:dc2:398d:a671 with SMTP id dl14-20020a056902218e00b00dc2398da671mr258706ybb.10.1710396014754; Wed, 13 Mar 2024 23:00:14 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:17 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-19-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 18/20] perf jevents: Add C-State metrics from the PCU PMU for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use occupancy events fixed in: https://lore.kernel.org/lkml/20240226201517.3540187-1-irogers@google.com/ Metrics are at the socket level referring to cores, not hyperthreads. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 0e3ead0fa0b1..6fd45350395f 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -777,6 +777,32 @@ def IntelLdSt() -> Optional[MetricGroup]: ], description =3D "Breakdown of load/store instructions") =20 =20 +def UncoreCState() -> Optional[MetricGroup]: + try: + pcu_ticks =3D Event("UNC_P_CLOCKTICKS") + c0 =3D Event("UNC_P_POWER_STATE_OCCUPANCY.CORES_C0") + c3 =3D Event("UNC_P_POWER_STATE_OCCUPANCY.CORES_C3") + c6 =3D Event("UNC_P_POWER_STATE_OCCUPANCY.CORES_C6") + except: + return None + + num_cores =3D Literal("#num_cores") / Literal("#num_packages") + + max_cycles =3D pcu_ticks * num_cores; + total_cycles =3D c0 + c3 + c6 + + # remove fused-off cores which show up in C6/C7. + c6 =3D Select(max(c6 - (total_cycles - max_cycles), 0), + total_cycles > max_cycles, + c6) + + return MetricGroup("cstate", [ + Metric("cstate_c0", "C-State cores in C0/C1", d_ratio(c0, pcu_ticks)= , "cores"), + Metric("cstate_c3", "C-State cores in C3", d_ratio(c3, pcu_ticks), "= cores"), + Metric("cstate_c6", "C-State cores in C6/C7", d_ratio(c6, pcu_ticks)= , "cores"), + ]) + + def UncoreDir() -> Optional[MetricGroup]: try: m2m_upd =3D Event("UNC_M2M_DIRECTORY_UPDATE.ANY") @@ -935,6 +961,7 @@ def main() -> None: IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreCState(), UncoreDir(), UncoreMem(), UncoreMemBw(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.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 558D056778 for ; Thu, 14 Mar 2024 06:00:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396018; cv=none; b=Jf74jOK8FPjTtHmnxRrrCB8FUNpfDq2exbFedPvevkdTTZgfS4XYkV6AvqjeU7wq9OcYPn4QMTmVzQQBPCrp/QqD9MYJCNSz4j3Uj0m+OtuSOAYv6JfuMkuEO9rO5InzTgxjyGxmxBFnrR7JNpkZk7ijxXrozhYxkB1Ck2QBNiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396018; c=relaxed/simple; bh=0Zo8R254uOIKz9KStTxbs7l4SJp7WcXgFS9ByH5pyCM=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=dJFtDrIYBGfdjefiDjPZOn6I0e3oODEC1Zir7bzrcQU1DU8OUC6dCOPE6tqF/CiLApxFFWyUh8HB2APNceVN9Vx2IiBKQ0SMw4wJ51AvHFLNzcydaU/xmdfqLMlFE1qE25BWo2hWkPl3sPJ6MLMx+hbQkLn/ooZuM6HRWDQDNcY= 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=g1uXLqd5; arc=none smtp.client-ip=209.85.128.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="g1uXLqd5" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-609fe434210so11150997b3.1 for ; Wed, 13 Mar 2024 23:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396016; x=1711000816; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=DDFD9Y18bukkro/r+Y8KdzL6nCPbvRJd0LPXdIXayJo=; b=g1uXLqd5FDuR9dBz2U/mk4+wOTrmwWSTDtXqzXeuknNqMOFafbd60rbD/dwaj55KZr 3DdRWNqe71RLSIue35IN1jcXdanvFh6snQDvKO9kOHpkRChUcECMvIolqR6b5eATWLsp 8tmmUt7+zaSE3LDCQipDwxiJQpEyewb4b2HrRDWdhfhenu9WeTqwgEzukqIVzCtnKK8D a2uCyVqe3iDfnAhS0zIOsCPEQCwHixqC+WYiBQXGoth7xehoQ0u3oec4+r+vmNk/oXEd FjhoCMr/4u3S2wllLIiKEZOs9Iy9/TJNBHPRKZ+Isfyrt5dG1tAhKkjUqFHCpo2uaZOg AxHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396016; x=1711000816; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DDFD9Y18bukkro/r+Y8KdzL6nCPbvRJd0LPXdIXayJo=; b=vA0GDJxHXNb8WDy8ioSnykY3PSOSOo1nTkz71FpyzYPGtpXSodG0qLoI4WuzYeOss8 pe4wIaOKwYnSYhmfAGodijzvf56kq2iNra2rAYyIU58TmiS+FqEWd8z0kFBDGnLTVzbE z36c3ti7H/otRcPnVa8EOSl+RxHyLJjWgC5n+C0nKqfgAXULZ3k/9FeYUYrTT9aeQCZB tny4A9eQlDwvtaPmi6Kl8yTI8W/KeUMSeyJVv9ElxcwLo42eGacXYlQpAiTwcEZ8FKYA cbJbb/rJOu925AJYXURpsmorctPs5M/YWcdOafzH04zVNhsAMT5wV4hbuvcHLRBDSXqw koPw== X-Forwarded-Encrypted: i=1; AJvYcCWFvFCr4SuMnn7N3OiWBoyFSLYfVD8nHLEdobrVO4uezgFdXvfTMRkkD5BSmKSQtiiHmeN6jXFWiRYFvq3xsYMaKAID8EtqJVo5pN03 X-Gm-Message-State: AOJu0YyAEqGibFEgFFvdqzfd9OqJk5avRnbUk4GVMYKYWJ1zJbHW4ooh lsGtBu6e/sywvDvC3+2Y7wU0DSzLU/IeGHHdkaqXrElN46rcjbri3fP+scn+64PPfr23WRzfqbi Rz3FobQ== X-Google-Smtp-Source: AGHT+IFCCHvmnfwMl0XKusulfjELHvLep8sljrDBi80dV8URe61Da0Q6hQGTUYmLqa19UYC2ZnH6QjGjcAOy X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:1004:b0:dc6:44d4:bee0 with SMTP id w4-20020a056902100400b00dc644d4bee0mr27751ybt.7.1710396016604; Wed, 13 Mar 2024 23:00:16 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:18 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-20-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 19/20] perf jevents: Add local/remote miss latency metrics for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Derive from CBOX/CHA occupancy and inserts the average latency as is provided in Intel's uncore performance monitoring reference. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 6fd45350395f..95b4dd3c175d 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -595,6 +595,64 @@ def IntelL2() -> Optional[MetricGroup]: ], description =3D "L2 data cache analysis") =20 =20 +def IntelMissLat() -> Optional[MetricGroup]: + try: + ticks =3D Event("UNC_CHA_CLOCKTICKS", "UNC_C_CLOCKTICKS") + data_rd_loc_occ =3D Event("UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_LOCAL", + "UNC_CHA_TOR_OCCUPANCY.IA_MISS", + "UNC_C_TOR_OCCUPANCY.MISS_LOCAL_OPCODE", + "UNC_C_TOR_OCCUPANCY.MISS_OPCODE") + data_rd_loc_ins =3D Event("UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL", + "UNC_CHA_TOR_INSERTS.IA_MISS", + "UNC_C_TOR_INSERTS.MISS_LOCAL_OPCODE", + "UNC_C_TOR_INSERTS.MISS_OPCODE") + data_rd_rem_occ =3D Event("UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE", + "UNC_CHA_TOR_OCCUPANCY.IA_MISS", + "UNC_C_TOR_OCCUPANCY.MISS_REMOTE_OPCODE", + "UNC_C_TOR_OCCUPANCY.NID_MISS_OPCODE") + data_rd_rem_ins =3D Event("UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE", + "UNC_CHA_TOR_INSERTS.IA_MISS", + "UNC_C_TOR_INSERTS.MISS_REMOTE_OPCODE", + "UNC_C_TOR_INSERTS.NID_MISS_OPCODE") + except: + return None + + if (data_rd_loc_occ.name =3D=3D "UNC_C_TOR_OCCUPANCY.MISS_LOCAL_OPCODE" = or + data_rd_loc_occ.name =3D=3D "UNC_C_TOR_OCCUPANCY.MISS_OPCODE"): + data_rd =3D 0x182 + for e in [data_rd_loc_occ, data_rd_loc_ins, data_rd_rem_occ, data_rd_r= em_ins]: + e.name +=3D f"/filter_opc=3D{hex(data_rd)}/" + elif data_rd_loc_occ.name =3D=3D "UNC_CHA_TOR_OCCUPANCY.IA_MISS": + # Demand Data Read - Full cache-line read requests from core for + # lines to be cached in S or E, typically for data + demand_data_rd =3D 0x202 + # LLC Prefetch Data - Uncore will first look up the line in the + # LLC; for a cache hit, the LRU will be updated, on a miss, the + # DRd will be initiated + llc_prefetch_data =3D 0x25a + local_filter =3D (f"/filter_opc0=3D{hex(demand_data_rd)}," + f"filter_opc1=3D{hex(llc_prefetch_data)}," + "filter_loc,filter_nm,filter_not_nm/") + remote_filter =3D (f"/filter_opc0=3D{hex(demand_data_rd)}," + f"filter_opc1=3D{hex(llc_prefetch_data)}," + "filter_rem,filter_nm,filter_not_nm/") + for e in [data_rd_loc_occ, data_rd_loc_ins]: + e.name +=3D local_filter + for e in [data_rd_rem_occ, data_rd_rem_ins]: + e.name +=3D remote_filter + else: + assert data_rd_loc_occ.name =3D=3D "UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_= LOCAL", data_rd_loc_occ + + loc_lat =3D interval_sec * 1e9 * data_rd_loc_occ / (ticks * data_rd_loc_= ins) + rem_lat =3D interval_sec * 1e9 * data_rd_rem_occ / (ticks * data_rd_rem_= ins) + return MetricGroup("miss_lat", [ + Metric("miss_lat_loc", "Local to a socket miss latency in nanosecond= s", + loc_lat, "ns"), + Metric("miss_lat_rem", "Remote to a socket miss latency in nanosecon= ds", + rem_lat, "ns"), + ]) + + def IntelMlp() -> Optional[Metric]: try: l1d =3D Event("L1D_PEND_MISS.PENDING") @@ -958,6 +1016,7 @@ def main() -> None: IntelIlp(), IntelL2(), IntelLdSt(), + IntelMissLat(), IntelMlp(), IntelPorts(), IntelSwpf(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 22:49:13 2026 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.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 5A58F57870 for ; Thu, 14 Mar 2024 06:00:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396020; cv=none; b=Jw/Fh3eOhBWfiK/3nQXZtinks0dL4Jdc6Py21d7P4Ta2K6Y3kS0AL/jEopr3ZXvkucgG5rAUVGUc/5u8pn5UBOssPbgM6rgfmZnoOYEQzTIxSOSSbOaVCLw7ouix08kLdTno/vBVrD9r6S3eDt/k+ozICMF4A5j2y8xxtqCAdPE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710396020; c=relaxed/simple; bh=CsX0lQnByBZDbYc0bC/+3WRwprgEBJaViufFNrdPpWk=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=lUKLjai6XSIJotH2szfjrZBx+eLXFxKCbts0uju6ndrudh22GpjoQY3aJjtAk2G29/2KwhPyE0gpZId8XJsYRmTFH80hUCCoR5pN2cJZ7xjypDX2txhmkzenJQIwc9M4mp2ckfjvTwY9bigzIeNxTlVfgAsXNJ8U03XY/0MxSo8= 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=Z4P4Qx+P; arc=none smtp.client-ip=209.85.128.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="Z4P4Qx+P" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a3bb05c9bso13300257b3.1 for ; Wed, 13 Mar 2024 23:00:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710396018; x=1711000818; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=jUWUXwe+5uPOvq9VWv9aWVcoc1LyId0S73x8LQ06sEM=; b=Z4P4Qx+PheNK5oyDBjNw1WMXug4nbu4Z35fx6OalyzXjPSV907aMCNn8hNIHtC7LTO kPeRDFj4BX6njGC1pUCc70TW10aJVcKcq6B3yssnZy0mSp/PLbLedhRymeYCw3vXeSRl x1RpD1b57vlZpmZITp+EFsEYqXgA4QpzpgVwFucfQNdSXV41rgPB8vQ15QoFsfygQ4VA +bTI2Y/zNcvMbh3wZ9eKqI949J1goJzWrPwBYKWzLJHl4KRKp0nXgKAGI4Cb2DDmkemz KvXcontuw0m0yz+AO5iUkfTdS+LTHs/nxMNOW8V5qvNcEvQVM7Q9chBmVfCPISOu5woo oOBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710396018; x=1711000818; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jUWUXwe+5uPOvq9VWv9aWVcoc1LyId0S73x8LQ06sEM=; b=tOPhAhLbF9YXE888+TFL8JPIEnmAZa1eEMDqaFtjMETciAo2js2faTsnn0lZEOkMyN hc9cMUV2Psbv9PktxUU8OgLWRd4T+Gi5pQiU6w+7RE0lHhjRbaiAQmYrdpF/VWSCznKY G8Bi5f8OrCZiIq06Tguiref+lF2hM5axE91uKOob0odORG0BIx/2DdWi8naj9bcUgV70 Oa2zpI7n3cYLdHR3Pl5iDXW0yrkTevv/GgNlp3WFB4C09K0hgpaCXnaSYEtnD8fAbReK jTZ6ljY7uW5H8Qe/AoLUt8DJ2RIMa8lmVf6ebEh0FZliGR0I89Lh6YHsV7lEEPmEnFeA uo6w== X-Forwarded-Encrypted: i=1; AJvYcCW8Q5jb0TSJpxlxv7v9Kdyd2hykt5FhAwcyKPpq8JPIwtM2bk4b0lCBa+YekmWgwZZpuLsXd+5bPpgKM2vUuW1TRguTYLllypmPuNeu X-Gm-Message-State: AOJu0YziYG1niU5H1SO+9MLmZGHvNvIwAl2AJcbAgzONr5OnoVLLt6xq moSbwbLOEF2lk1ifyQssJ5C+05fgyAaKzWUf26knW80UYsc5wFZGs0h7OKYrD2suiG917KPQIwm NDj+cEw== X-Google-Smtp-Source: AGHT+IGkvCXkHOuijNMrlG8qdOyE9AHiz1Lw63N3mHdp2yGpOkH9A4N3QKasquBeDRnefnUvLLTmQLydVhes X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:4886:0:b0:60a:66b9:c089 with SMTP id v128-20020a814886000000b0060a66b9c089mr150033ywa.8.1710396018654; Wed, 13 Mar 2024 23:00:18 -0700 (PDT) Date: Wed, 13 Mar 2024 22:59:19 -0700 In-Reply-To: <20240314055919.1979781-1-irogers@google.com> Message-Id: <20240314055919.1979781-21-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240314055919.1979781-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 20/20] perf jevents: Add upi_bw metric for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , John Garry , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Break down UPI read and write bandwidth using uncore_upi counters. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 95b4dd3c175d..778517968b4e 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -983,6 +983,27 @@ def UncoreMemBw() -> Optional[MetricGroup]: ], description =3D "Memory Bandwidth") =20 =20 +def UncoreUpiBw() -> Optional[MetricGroup]: + try: + upi_rds =3D Event("UNC_UPI_RxL_FLITS.ALL_DATA") + upi_wrs =3D Event("UNC_UPI_TxL_FLITS.ALL_DATA") + except: + return None + + upi_total =3D upi_rds + upi_wrs + + # From "Uncore Performance Monitoring": When measuring the amount of + # bandwidth consumed by transmission of the data (i.e. NOT including + # the header), it should be .ALL_DATA / 9 * 64B. + scale =3D (64 / 9) / 1_000_000 + return MetricGroup("upi_bw", [ + Metric("upi_bw_read", "UPI read bandwidth", + d_ratio(upi_rds, interval_sec), f"{scale}MB/s"), + Metric("upi_bw_write", "DDR memory write bandwidth", + d_ratio(upi_wrs, interval_sec), f"{scale}MB/s"), + ], description =3D "UPI Bandwidth") + + def main() -> None: global _args =20 @@ -1024,6 +1045,7 @@ def main() -> None: UncoreDir(), UncoreMem(), UncoreMemBw(), + UncoreUpiBw(), ]) =20 =20 --=20 2.44.0.278.ge034bb2e1d-goog