From nobody Sat Feb 7 19:41:06 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 C610B39AF6 for ; Fri, 1 Mar 2024 18:56:16 +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=1709319378; cv=none; b=KBszHy4O87rUEuC0tfFsAOTrJywBT6iVCAv25MUrtQmLXvLS/Sg3XomRNwSKyAd0sgW7lVo9aV0JwfNlPKbKdMhNgw2RYQax0RxuBFbZ0cgwxMOAs5CT2uMJFYw/QDD8pgrabviJ3l7fHORl+dnMUwsgivEU+/pfAZdY8u0/OFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319378; c=relaxed/simple; bh=eVUKJulxTaDZWA+5YoZDb5UoIVwFCiPRNSmcWb0uoWM=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=Vd8yGnSn3f1sAoZd0pRnkbFbdy1LsyFRAjC50JP8LiVb/5UYSQjKID5PXCxjIg1mkaL252HrNuJ4zkx3EAA9dF9Q8Q5OtuxGGMK8RQ8VHOsfrcPPeQPR+0btKnDa1jM+sP7PZeh14t81GPh/EM0EUxKvn8qBMziSBkxmyQnv8uI= 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=RzbY4fVJ; 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="RzbY4fVJ" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-608852fc324so36524647b3.2 for ; Fri, 01 Mar 2024 10:56:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319376; x=1709924176; 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=h3PxAWhsu0Wk1JCVDmtXtAqqbWoqISlhy4eOUAXnDEI=; b=RzbY4fVJ7zUHUvVgAM/nw25wC+77DsGSmfgkChOQLUetdOw/nCv+yAEMMdF/yAt72l nbGePWgeSbzdSSJ73Tzz3OLZI6XNbwMTGXR3z1MS7fsYPovCgfPmWNEEMT+rLdNj4jka nSM9POwdiNaevK3qiVHALU/FMsMJp0DZDd1djusC8vM6xwqAxuv8tdhQlZos6iyRmcmR khjwT6uqvm8ksWtd48NQgRuUgQ7hB385GI/WvWTmhLhkE0jaSfHTGZuz12vachSrsbqc mOoALSkyeROFmJYsRk9Zmm8IEwf9NCxWzEg5QbezZ1ZiuWPR7A8J5j9jdyqKs5kd/TPn oO1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319376; x=1709924176; 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=h3PxAWhsu0Wk1JCVDmtXtAqqbWoqISlhy4eOUAXnDEI=; b=sr5EYUsnnOMN1hysx1ThipjRh41wuKn+Irs/A3LFj4xgxIdUSPq/fOwQspkIjr313e ikYvu9F+4T6BK9DOlFtTdYcEPXtO/pGvBvuZkWNwIIFwKoaqz4P6tc+IBGW2zij45eUW HCcgEO6cwKEBfXFIvAujs5bqqH/NRtX++1ad20eDQUPzhgpOIONOgG3wTpiDz6trxkCc 2HDwLxilu4MNwqO8TqdI7CGbPA9kWYmYVGPDkzg8mX1Lxa+ClNlsKbWeMh7etkQ0KkPE gzLvN9U5opVNgxyCiAxIlFVFvQKv9lSDh1PihO8CFqEH1AVE3ts9oMgG/NoTZ+PkZhv7 //Nw== X-Forwarded-Encrypted: i=1; AJvYcCXboPYJAVSZKc8X5jFa+uW6/IKkad1wnEVYBdRNe8PN0wta4xf9zexwWSR72SiJJxqhMP8Z8Euz9+ItUZYSqOwHjGODKzSWSkXnf4O8 X-Gm-Message-State: AOJu0YyNMwFbhns4oId1DByGz99S7YnIDD0JbFbsTj/rSXa6+mTFuhwA feSqnDbULM0b5eBTS/KkdXRFndPbmHxla38Mt9SqEjBRGBkbPFPJH4QMtNPBOBnBngY/cNqppJB bcE/3Gg== X-Google-Smtp-Source: AGHT+IES9Y1Xr3gfHjAX5zvXMI5CI2HyGaPo5BkbPzzc8IGg72mN9khRsEKwQw260K0Ns0HNNtDGlAvCLrsN X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:6902:724:b0:dcc:5a91:aee9 with SMTP id l4-20020a056902072400b00dcc5a91aee9mr537791ybt.7.1709319375833; Fri, 01 Mar 2024 10:56:15 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:40 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 4fbb31c9eccd..7704c170a7db 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -1,9 +1,10 @@ #!/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 parser =3D argparse.ArgumentParser(description=3D"Intel perf json generato= r") @@ -14,7 +15,45 @@ args =3D parser.parse_args() directory =3D f"{os.path.dirname(os.path.realpath(__file__))}/arch/x86/{ar= gs.model}/" LoadEvents(directory) =20 -all_metrics =3D MetricGroup("",[]) +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") + + +all_metrics =3D MetricGroup("", [ + Rapl(), +]) =20 if args.metricgroups: print(JsonEncodeMetricGroupDescriptions(all_metrics)) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 DAE5C3A1D7 for ; Fri, 1 Mar 2024 18:56:18 +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=1709319380; cv=none; b=bGSBZft0MoeYWWMWtFYiJJklmB4qnsEpoWGcMBjfYdcAQKy4XGPx14ftK7HnMFy11p9ZujiLwnpBOFRQsEE8X3tbypCiOWPZz/NtflXanvKXNucdmBrVsNw3DQupt6BS/t56x/jmcRyGCvq+e1pWVpX2lsfuxtRqAcivI2OvJ3s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319380; c=relaxed/simple; bh=E0c1iJm+nhJFbSwna0W+hQvedFVJgQU0OfqpGYXtacY=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=QtB+kvDger/oaHMA1RniFf27aa9p0JyTsybzvwaSiPVN93Y/ddk1vkbT3kIPcCkF5yckwmuT8n0S/FcKYf0S0t6hprOvwvsy6j3QvDaQNpb6BrfnFeiQS0buU3HZgfPoVXFSyqkaIqJQ+s1tpp9NF2EMPzuXTxBXLFhJe1DIFl8= 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=td1ebTcd; 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="td1ebTcd" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-608852fc324so36525067b3.2 for ; Fri, 01 Mar 2024 10:56:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319378; x=1709924178; 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=GKFU1+MHZzi/z8CBZByS67OdqLWVZjwrZ1eTBs4nZzo=; b=td1ebTcdZk28aPBKMd1V2gQC/JTGS0MXy7/ALgwf4r6Jt0yQPthZHqgitofER2UscW ng9fLcoJYkgeNahsctRIT2JrwiGzWgS9AIktuL49BMGjQrc4srGUEkD48qNsCDshyYHI Hm6cDJYVue5uRjdhoIVp7p6NEi0pjCdiTbzWv7gyR0XYKE+Sga7g42ALdRUwjX4r6sjU Barr+Fs6t6hR/O3N2Nc2UOenVlEAMXbfRKk0P/N8Ig9J6ZKOa9rYTIXAtU8FRvH+/kQ2 eCC//QJ57/k5qC8BhsIXpETi/xIRFibFd1PP9NahV5uFSGCE0V1uuYBh6I6aQh43jHKG iURg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319378; x=1709924178; 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=GKFU1+MHZzi/z8CBZByS67OdqLWVZjwrZ1eTBs4nZzo=; b=dGxtsn+G5aKZn/coaZQB19kWlWu9zf5b4N2LJfXEYyYXZVOu0kikL4eMTXRq6u0DRg CqE1T5pHdUw6Mg8+X5vyIEx+j3MLw18QBKGZKdTa8njoIHik1Ty2mslq6XYhzyYeT7L3 HN0YcCv4BWd5hPE+f5KCtqgA8nb072CkRd5Lrz7o1kz+pvwCqk9/Ai23eqOAkDGn74SL pLfxhrWMOzx8ivtNc70C6XLhxV+4kR4FtezI8zeV6x9tW3hzbORhP4ik+sKChtrdD5tv ldcjR3MOm06yCmU6v/Gcvo+5+aklIklZZylHsJEClvZbeyU6SjY/Mgnxk82Wh6uGqR5K M6/A== X-Forwarded-Encrypted: i=1; AJvYcCViwOadC7bryDkC48aR7OHGftPVPaBBQW7raMPRaCFEJGtehaiwhyt69VimyxR123NQl+BizAG7Y+24/XaUUxuwme7bxEF0Y3HsBT0M X-Gm-Message-State: AOJu0YyaS9IAOnKUsxvAKG7ZsaOPZQ7c9eAwLcHuhdlmMuhou1K1+Vyn 50YCCenw5j4D0EBtOq94rKgM1TctDufD+qnktCkGE4387t8/a9S4haFq6t3179elKmaSkTu2cMS ejlL+Zg== X-Google-Smtp-Source: AGHT+IHU5sootKYsn2v95NMGoRi3R41CN/d38Kn03wSGCpThROIQ8S++5MzkqtSSFcyPAOCyCgy864qVFd0I X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:6902:1004:b0:dc2:3441:897f with SMTP id w4-20020a056902100400b00dc23441897fmr538112ybt.6.1709319377920; Fri, 01 Mar 2024 10:56:17 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:41 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 7704c170a7db..2622d4e5ff54 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 @@ -17,6 +18,16 @@ LoadEvents(directory) =20 interval_sec =3D Event("duration_time") =20 +def Idle() -> Metric: + cyc =3D Event("msr/mperf/") + tsc =3D Event("msr/tsc/") + low =3D max(tsc - cyc, 0) + return Metric( + "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 @@ -52,6 +63,7 @@ def Rapl() -> MetricGroup: =20 =20 all_metrics =3D MetricGroup("", [ + Idle(), Rapl(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 4AF2A3B198 for ; Fri, 1 Mar 2024 18:56:21 +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=1709319382; cv=none; b=fKFirw9GRpe63iZfh+yJ8M6Ao881MKy+8FbYpkL4i64pHoaoYPQu8O1a+Hzwj1uDWEn9mIM8TTYgCKpzxArhVA121qGi1uvjZSudMusmhk1pq2dLZaG8SHanMJLH2IqS9y8kiF235G9z/T3UD5nVjMwoupeDvvcHFU0WsyCRGxA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319382; c=relaxed/simple; bh=8oHWhZlncmxDfpV4axl6yS7DtQzS0saV/qldweLxMzo=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=WBm2EoM7JGPlXJvs+uXdnTpwS8xhSnwAJf1dvbGdcvGcvGL6LHfqyPVQm9esui81oPGbQegnSYrX8NicOOd2pC+jHJAKxWo/h50CZWJxSXn99wuw+5CV8T7xG95pz34dfjv2hAs4frnGN6O2y6BxOhW9j0j9XIZSdyibiR+746M= 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=12dW9lnK; 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="12dW9lnK" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dcd1779adbeso4549141276.3 for ; Fri, 01 Mar 2024 10:56:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319380; x=1709924180; 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=RK+fLoseEVnt8AotaCi+y9ZDN/WJ8lwPCKN8c7HO7+s=; b=12dW9lnKkgDoBGQjOHPeh+9G6SQr8fVUDHqSyoSTIddpRuQxRxtCA24wQl8+LGcxQ6 NE8hKTKrwTZQqXr8yubxvKRZzZ/P4n1TW2B/Fgzr15bSMu25nQslO8PD6Hauya+YT6mE TIH0VQ56QfEi8EwOTPqSgAjZJ8O5eFj29VwhENAyOwyluMYY0u18qFBPc3yz3uVt8aN7 okdwnRNxGBDxPyMdqmo1RnTxfvcHwJBLdC3x1wPt8tFzn7dE7C0jng7/me/rkkP9tP5d kNwib/h3N/ZTsQIOzlITB1TK3s9kli3+9CR0lG2Ds1InbUFjuSfxM/OU4uCRg4BxW+dt 9b0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319380; x=1709924180; 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=RK+fLoseEVnt8AotaCi+y9ZDN/WJ8lwPCKN8c7HO7+s=; b=AzfXrEOYTr9IkvmqPU5zBWgVMtRsL1iuEQxoHzWflht3w62rfcIq5y0QO08VlUVgyQ 8XsjJIa21Jgq1Bmgcvs2ABUEQPo+2wPpsHuBVraWyqtLjYHbJvVLg+Vp6KC2yhd+W2oV x7GtPzYPhejl11YwwsjUf+48fGFZvMscrC46TJvNC2NlMnYU4WwFe+UF8IE3FCBYzjdT 2/STbSzlPNxPK9vGmEo6OMKFrwETl0Mh3xqFZ53VrxUcHjZ2BCYm1M/onofX23rsFC0z IeTaq2CqOlqZa0curNgDDEerfvnclZWnROgMGS3nwHhn2XKF9lfgmpw9Sf6xF39Mc1xl TUcA== X-Forwarded-Encrypted: i=1; AJvYcCXhUUvhJzoAzaIg5s+gbpdaepI2y0VWusdIBZchA5dZg5QYGmx+X3V2Gjx2K8xX1deJIFz26HGADWo8k03weP97nrmwUTdTSuql9zue X-Gm-Message-State: AOJu0YwF91n1nOElvVY2vN6H8SMv/CDowZVIa6cZDG2LAx++nujapQQP +6R5J2j1Fcr2FZCPOrNBTSmvYPoNnXqLgeeh9K3jhhtBIDDrCNySIqRnwAFM2r1CkNyQ2ajEI3x HknhB+g== X-Google-Smtp-Source: AGHT+IHCc0kh+X6efbw5NDafcaFuhbYBF2KtHDUK+A5x2nachpEw69wy7QXYLBwTSQquIn96WORrAauZre3t X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:6902:100d:b0:dc6:cd85:bcd7 with SMTP id w13-20020a056902100d00b00dc6cd85bcd7mr572697ybt.3.1709319380436; Fri, 01 Mar 2024 10:56:20 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:42 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 2622d4e5ff54..81879e68da96 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 @@ -62,9 +62,28 @@ 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') + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), + Smi(), ]) =20 if args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 0F63139FC9 for ; Fri, 1 Mar 2024 18:56:23 +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=1709319385; cv=none; b=fMzALEk2RY0/bHbfgf4e58aMVScCK7M9ewlpv6C0Appvl2Zxdor67gjFv/Y9aARKiKLSNh3oB1yQ0Ez1JmN/DHQ8ucuBvtK8WVYCOcvdKtcx/rDbWHqRgWJStYDefjLb/6PsQdXKH4mHVVrj6QErsbFIcn4ezVEkf6Kg+vfXAlc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319385; c=relaxed/simple; bh=zOERgnuO1Bl3NMcQJgmZ4s42PwosJ4JFp5OUJlYIO44=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=QLFFLIiDLutf3vVSsoYPaeo9Orzsjvqh9hUvJ0kxlsl8otWUnS8O29VYHRPl6y1ji+1IJiEF/e7pXZ5ZETNYyfgy16FtR47Jqp8Nnd5+a3TmyOOopK9+vUVnBkmUreigdpzNAdYgY5VPsqLdSos08PWMz09ugKpMFYl+WE8XZdY= 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=WQYNPWHT; 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="WQYNPWHT" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6096493f3d3so35131687b3.2 for ; Fri, 01 Mar 2024 10:56:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319383; x=1709924183; 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=L68TwYEEJpFcSpLsVXn02dHEJdoYMq6WnWpBdckYRf8=; b=WQYNPWHTlGRr0HEaXr2GgwUPHIRvFAEAofaSmp0aG5V9xnj/I2Qu+IN1vDPop3RjdJ nXkBg9MMusnsXEV81TESokisplV4q67LjjuTTcBeUI7PJlhrktEaQQBVUhgrNk9tZfum HpgVRGSHlREvqzBWhVLlbG34dn4O08jC7jc5ZHVo+hJvsFW2jNCf0pHtXGuo6T0p0kr+ 56o/XXaumo1QmabGpUPZ28Z0abPTO6HUij4ZIC9tc7yHPGTPvs/ISZ5JkrZ5mw8yO5tq ckFuc2aDsn2MV9SCt0uEMqJVK7ZB9WMMHn8sYajK1ZFFjZpxwjxQ2K0Tnj+XRgfY3E/K b5TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319383; x=1709924183; 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=L68TwYEEJpFcSpLsVXn02dHEJdoYMq6WnWpBdckYRf8=; b=c/a1plmQhAW6hnEvTuxMjIRiWv9BJTukDgBEI8e/y1+u2PPsDlejfUFkTF1o3j2ysC Gu2nPR3+bePS31BlyW0ceseL6OD4w3EIW+XMuMBGf20r3KNSO6pehpsOOoFmxApqaS0P Cnnyb4FjKEBfWas0bNQV5MBHwVqt1vzyrIrxQnGSRI9ZKcUh5lfwXDjpX27c6hBN45qI ETQj3s5GqJSvTzthx96jrZjzybIX88PaF4eB6EgyKhuYiLPTdT7uO0JFFAdOowC+4Grv HlwHme/oGygP2bJyBECEJbDiR4q0xT9nxwCLD6zKoTOyHYjDzex+eOQ6Kk2U4oyTkkmi G2Qg== X-Forwarded-Encrypted: i=1; AJvYcCWoqGsbZ4Yed+wdGjMlvn29Kj7MzfN1odZ1gtU+JVLqcdfeyqESCpaIf+ftBw5DEptpicYo/LUgm05WBiPem4wAM2USnow1tYC2DLH2 X-Gm-Message-State: AOJu0Yy2OEdxD0LhMBweBawwaLb5R850hxMbRqDxtKe/fk8k2xjEwy/z fCk3ooPKi2Yt4cgwcHM717KgyX3LbDCnIUDdw78v0q2mFxQSDpiM2JjzX5qXdQVAdH4rZhTfvq8 7hhRa+Q== X-Google-Smtp-Source: AGHT+IHFO0dCF80g8jxIIWcRTBQEcfWIFfew+LmtRMRt88s0hPFXt8spPQ49uPwNb8Onx/ERplYuDrTRSssk X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:9a05:0:b0:608:2ad5:cd28 with SMTP id r5-20020a819a05000000b006082ad5cd28mr464292ywg.4.1709319383012; Fri, 01 Mar 2024 10:56:23 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:43 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 04/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. 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 81879e68da96..3d80b555fac9 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 parser =3D argparse.ArgumentParser(description=3D"Intel perf json generato= r") parser.add_argument("-metricgroups", help=3D"Generate metricgroups data", = action=3D'store_true') @@ -80,10 +81,59 @@ 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") + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), Smi(), + Tsx(), ]) =20 if args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 34E2E3BB41 for ; Fri, 1 Mar 2024 18:56:26 +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=1709319387; cv=none; b=Zm4oYMSqp85Wcm4NiMEPmdBa7pl9P5r02kmDWndgIA4jUXBKp4pFObF6ZlQitJG2O7fasasNGwi7qHMR3M/qiGgLLHTBWzgEi9WX51HhTXGzt21lVcuM+Btz1Kvw3Oaa6EhKqa1QAYtr66xlijGq/Myn9gAhhAS49Y894JzId4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319387; c=relaxed/simple; bh=SYzzekKsm56SYljV7D2+Kgk899aiMFZ1uqVugeWMohc=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=tBF5MxUWieyzbtlHGeKKBLrzydKwAxHSwVGeQVN25HscvXGvDp8EjaCFOsAl4s1QL6mosH2HAc/o9dIqk8knUfxdjkAgWCllVOMpRVXXDj8JlrMbhp7TFb6lGcHRXEtUHjstWqGQOLmoB37GWoG+Ll+dyFqOD782EH899ZuqWlI= 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=JtFccn+7; 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="JtFccn+7" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60971264c48so31095957b3.0 for ; Fri, 01 Mar 2024 10:56:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319385; x=1709924185; 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=h/hkLOGxFb+NGL6rpwIzI3DU/bCodQ7sPVZDGihfs7c=; b=JtFccn+7YxCk4qNDXYazHzLXmlV3Z3oh7BOuZZKHn7etAW3CVaXJg1tCGt0cHcJ7cA etYUUdHBtQcUNC8AusKqdipp/GU4vDiGBdIgRpkSSWRZLjng/jpg1MTWDx2lXStUxSyE PbPD9UD1+N0c3Eb2h5/EED5HQUoBTsfGpgW7HoWB5P4E19rBG/kdFWhVTrh38oK3tYWU 7yqfFpJTqNnmW8bubi0IF1O8dg7rIH9UiqB6Vs0gqUdVuADFMZFrwfQXtpg57rj4clYv f2kxrH8SEC4a6dGOPqzERuOpgy744CkHOUJE92EQsE8lO45GcjH7fUue0uFzlpJiiB4T tzow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319385; x=1709924185; 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=h/hkLOGxFb+NGL6rpwIzI3DU/bCodQ7sPVZDGihfs7c=; b=AVwZ7SINsuF1JX/lprL7ZNsQBdzw9upCX7NhKiXmteYB2TigGJnya1GdzMNttOn5SO P0JLoyPEDzNJK9guPigBS6EweVae+lNG0RUKujoaEziVPIK8rYUWPmY3uqq10/YjQ4v+ sDg5z4RoIdAsYEEeBsNWPTP+2OLZ4tEQGDfKR62hP/DAMX241UzrlQ37shOIYcrBEGg6 z6o64k2fYzvda8NiTWAlbBIZqjYxI0lZKlSsaoDHP34+9Hszxls83gArSwOBhWK2s7Sf Kx9JxJo03kuw8NFQb/59sg7xow3jaVxDnbk/2m8gPPh16SaO5O1YQstaRtDdoTlxAN7o stGQ== X-Forwarded-Encrypted: i=1; AJvYcCWEa9crTbHtCJQw/Za7Y/dUzpPJxXfslon6PI5qZLg1Ihs+qP0Ib5ZPx1HdmkBNWgwWkJtZaxL9m/JhdqT1wcKFBUNd/yQx2WYzdpFw X-Gm-Message-State: AOJu0Ywh9fcZHYgZJffOdts4yfKBjV6cMglZB2GJx3zGC87Tk/PkniMo rWYG6w7e4EtdrmkeOT9H3pJUHlTAJ21dzOa3XBDi0WmcN8I2UGOaBbqzWyW3Jc0cbIPLh9NevfE Lry4ofw== X-Google-Smtp-Source: AGHT+IGXrMDUUSzU6gg4XPlADHX21Or8/UHujHN85RnAMUy671BE6MjzRQ6oTcUcCleDiGdhvAPRQGvVHMLh X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:6902:1821:b0:dc7:9218:df3b with SMTP id cf33-20020a056902182100b00dc79218df3bmr100391ybb.10.1709319385391; Fri, 01 Mar 2024 10:56:25 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:44 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 05/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 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/perf/pmu-events/metric.py b/tools/perf/pmu-events/metric= .py index 7d445e47ae09..0b84506cf2f7 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,17 @@ 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 Sat Feb 7 19:41:06 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 969BC3C469 for ; Fri, 1 Mar 2024 18:56:28 +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=1709319390; cv=none; b=ZMYei5VsuFaXxCMRVL3MB/uIApaLMp02KE06m77D8f7i2d3HN3OO+MMrbsRNirUbjujkbKhTjhSFhM7prv18jyC27ZQgV/ztlH2KngIprl/lvrOZ3Vg4I2CAn2CL8WI2/2M7u2ROG6oTl8s0A4QZJ+7fNe+8RR5Tjn2fK5oWKCc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319390; c=relaxed/simple; bh=FlRrp5/2ztkczVrYoDn9EIOjChMK8yWEJSgo0hdGptg=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=DJhbK4OmfRirTVmBVNizVDE2/0bbGYglHhUOlVXVNrBO5hrS6eHn1/KCvdlhdllZT66D1Irg2X+96dyV1j+ytso0bXfsoqnh/WI9y3ggGefQcO8B/OJaQMttN1tcZrA7wmnb0XAed8DPGEMtBAGfTGOyjvejgPAty1UI8P7rqYE= 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=Te/Hdd6G; 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="Te/Hdd6G" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60804b369c7so30759257b3.2 for ; Fri, 01 Mar 2024 10:56:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319388; x=1709924188; 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=x6YYq7rNB/18JZA6R+41hP3nh0swy3CSvJmc4i9vc/I=; b=Te/Hdd6GkTttIGnVb8ne7pbex0pE1TKDXdKlCGkU2SNU9drPIJcZpRs5fWGRAQUvE/ sqjKhdGL5Bm3EJE+hUaizykOsfgN8pAVJkO/kH+Hh1mp2R8elmhyH4QxwR/E4vfv3v1A ClXrGSp4NvAjYhr5QsGzHCTa+XU/IM9sFnESFGTZN5YCe5SbZXCyuxEyq6RI3BnuD/+u jJPNG7HjAsrwD1Y2fI7EK/+N6X0UOXPmAmbjNx8yGFu00/QqltBwuXStihHlCTDmeEa/ atQZ7g7302GxxPQun6rqXf0+Nb9nSmcW0vmsWGTHdrQPQ6oBlL+Jb1ppSo5DRFSHta0C +zew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319388; x=1709924188; 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=x6YYq7rNB/18JZA6R+41hP3nh0swy3CSvJmc4i9vc/I=; b=tXL5OSn+b2rrzhgifdLkenn4F+XDgdGvecEgUNGlc3mA//40cI8GreaaG9B/pTQw64 EL9pshustO9As51CrIk1L8lgo6Uwc3jKYQmU77j07ixgpyb4xvIwHbWpVlTiVaw44EQb 6kc7tvkjfN4OQcuMsztRa9RtM/2of04oHwfbsKDbsNWPojSzYekxgJEBeihHyfKUlZdJ Ta2RWzztpMCQhyQwHY9CEn4H+RPaGpQbs5P1uTekaAt+BmmFfGnHAHYmGAK/Ozd6dnFJ 4OtH5za8KGwVU2U+gXYseVq7aj4+TSGNfbnsGiXq1T3J04+2JcObqvhcUDhGJpP1v0GX 9ktA== X-Forwarded-Encrypted: i=1; AJvYcCUgKIae2GL+qdIWXZj1HRdxCGXIVSTSfoV6aSGwIxFPyPPRESfQKrd1CcFf4JiQKOpDZyRjwvYX+DD8/VfoO5yME8aF62XSaf8GCc+5 X-Gm-Message-State: AOJu0Yz83QOx+uupI6Tz07iRkoWsnJs/bLxwpgYejyrGvUe90vLaPao3 kJCmpR1HJGClUeZR4g2alWy9jZrlgkIwSIDD+DX0amXfTCi6cz3WwoW00jmi/EG9NineB6FZ7nE 0jU2V7g== X-Google-Smtp-Source: AGHT+IF0SCtTKp5nSixBXxa+KCdU3JBeSisYQpUC3iGglb9/UNXOpoXdpDtgjlw6HfhtNUsxAwkkYoM7BZWZ X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:9949:0:b0:609:2fba:12a0 with SMTP id q70-20020a819949000000b006092fba12a0mr634883ywg.3.1709319387865; Fri, 01 Mar 2024 10:56:27 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:45 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 3d80b555fac9..562db0a1df79 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -129,11 +129,149 @@ 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") + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), Smi(), Tsx(), + IntelBr(), ]) =20 if args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 09DB93C684 for ; Fri, 1 Mar 2024 18:56:30 +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=1709319393; cv=none; b=J0FdlX65bNx3ym1ui/XO5wNJBGGKy4tZhdvBH8jQgBu1Pz7hPewksNTcCT038Maopj86RdmjAWMmoohBopf/d0McyoLvbz2A1ey/qGB225PtWyr3ggZmbPKQPyzK6OukNp5gfTzBLcW6vBzE577wuzo1XOxSG21V6JnRFV5pN3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319393; c=relaxed/simple; bh=/54YRscTrPrGaSdpjdXFm+80xMNflZRfzwa7Hsf5/WI=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=nZogRHs4bMF/TJDstbGRywuSAwRPiaQi7ZGjQvk43IvAadQuGRoRJXB1Lz9AHkD8JULwKaRSfjxx9Wj+uAAKSpIush6qncvvGpWXSa1DNlit402Garf2xj8hJa/DxGEt2KJBiXdf2noHlf9D8mTgeIGmY+8PZybR7ROHHqbyZC4= 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=gqfI9v9B; 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="gqfI9v9B" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dcc4563611cso3956982276.3 for ; Fri, 01 Mar 2024 10:56:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319390; x=1709924190; 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=TCqcOkno42A4mj5+uGyBsE4UljIV8p5MIV2GTsxx0/Y=; b=gqfI9v9BFL/2xmUnHAgMklwRYAkkOxw7WWox+C8ZL5jiWe+qP1OzPDdClw5GDdYe2R BvYtI9mzixLN4Ao5s/T+850s8EyHWZb28uvQFJRM7DSZ0LdfJSLiBhRBvwdsZMft9nj3 qGvyqmgseNt7HebVv/4hKeWKpomSJwj9FAfU07OJj2yLTr305e21jxLxxXAkGqJ3Lbw1 7E8Apl5TzIrNxDjBsIs9g4vei07Q7bq+mqIcikLJFqE2xQmsJhwDXmbD0jrvM2KCiD2t y0n6gfu/FMN1ucMhREvfVC2ri6H0/4GNUjFB3fT1Tfy+AmEWcDw30XzshNabAotKcSW6 Mlqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319390; x=1709924190; 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=TCqcOkno42A4mj5+uGyBsE4UljIV8p5MIV2GTsxx0/Y=; b=tlKytVTJglelYwF4dXKsg+VKKub8hoik21CEszNe/muInNRVRt2P24KCsWp6X2RvE5 UP4kBCkMT+dWuLoeFPNOYk3CoL2cy4QPYOQ6BKCjpHVV/FbEemGDcJAoYf5jJeWXvR6F Y17qun/Aq/RjoKLHqz+AL8O/oA8JskQlTykzmFy6CANRtJBZ4WOdNMAHtMmrLTmtuAYq Dzhrpqzo4VJmy39DAkLfu+Vju/vowppZjE9C9l8rryr1Ro+LHeyN6ETdmSuwQuqHJHQu +3lSOC6Lx+HTnnAl6FmYwOshFVlbclkMBcj42JwMSg+Bn0C4akg7JEM2TUkOHW1dW+6J ANQA== X-Forwarded-Encrypted: i=1; AJvYcCWWGV4DMIVJG2aVegWgNT4kjd4RJgHLd58Bf/HGk0aXHumwOTPN7F9nqPGtHaygpIOzEuDJAZ8HNx3uvAOppuoOmIcPLbksO8TG78Bh X-Gm-Message-State: AOJu0YyWxqo4/xboqxNAa37i+Gu6GWtIPMI4aPfTXxOxQ4wx3Y5isWZy msqC0IT2PnqXBAwZVrWPeGLQ4adhymNZpTccCI4pnLUMLIJviY0UTpPqPmyr/ORxA4pOfgb6UXm oAhsEWg== X-Google-Smtp-Source: AGHT+IEVKYqSb1RJP04tzj1IpHZ72wqswmtzlfQnV49UiPSHcWuectfxWge0I8mzChan/LCCgyQFrzFNe3Nf X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a25:aea8:0:b0:dcd:ad52:6932 with SMTP id b40-20020a25aea8000000b00dcdad526932mr551687ybj.5.1709319390095; Fri, 01 Mar 2024 10:56:30 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:46 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 562db0a1df79..6c42c8947652 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -266,12 +266,77 @@ 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") + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), Smi(), Tsx(), IntelBr(), + IntelSwpf(), ]) =20 if args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 76F253CF72 for ; Fri, 1 Mar 2024 18:56:33 +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=1709319395; cv=none; b=ol4jY+ARRFoj7u/TLznzvJM6W4/C+zCIZqQSZEq2GEB8IJNU2QLcJf3xUhQhMVaMnNXuNlvcxP6v44FulAAD55e3ZSSPBYBsEMiSEHJyeWH/XVPtwUx/ub1LjFp5utvOv2iYajCwWhk/THHWNXWQ307s+v/P63HwDb2AfEaprIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319395; c=relaxed/simple; bh=r4ihq+erhDIJ96eTIi6uun2xGpgFyBqf/JqZ/4nXlRw=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=pzYvgJtKfL+j/DIBvX7UBrqQTYwngtG4i+4yXo4pN94T72tYXn496RAYTnycDTHtKdPZJkUZUh8ThoJkMlsJkTweEMnURvWcpvab+A/ZgsBRKuwkXn0wlg//6/tvfD4CRS7ukp2WRyf7hAvg19smSJwJUNutAhiXsChCPv1J2qo= 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=u6kwWqdY; 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="u6kwWqdY" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dc6b269686aso3612614276.1 for ; Fri, 01 Mar 2024 10:56:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319392; x=1709924192; 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=G7yzNIE0K5lHOvKYMdHiv1H80sWzgzKkY1SnsP+lPB0=; b=u6kwWqdYUqf5ggYScGevoedifLvbkx3oW50/pWIIElME6tZ/SNYxTL0fQ4EsufPWqB MfBNXd8KpBg72OSx/Mbzy71b/frPpli2FO02pSdH27A305tTgbMCS5qwS9HphZKF+SWA IeB5domtpNlFof9dKUIM1gqsyMePmlYWI3AEkvu1fzba9vOd4wVeSRpfU9CXy25wFWgX qk6nyjoPKqsvHHZlLgBCnUh8Tkt0aCrDjj+ErcNUVxklBFqbESmIm6h62viLNxzKpZKp eaRkRzDyJofvOd6+tyAmVlFHqHcMoqGmNEiiHR6NReBfT0ThJZ/u7IVErKW5BiLRwjPo uXQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319392; x=1709924192; 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=G7yzNIE0K5lHOvKYMdHiv1H80sWzgzKkY1SnsP+lPB0=; b=lQqdKv9WAVCDuysNrJLzDnzABtvEehW5cjKcHHjZ7h85yeq8cO7s3skzv/GznfqyC2 WwHTw7WLfO2UXCtd4NRrsQ45+zJmdf4Endhj+oC2Jcxnpi9ownYDk59oYUyKtUy9Qulh 5OvvdMX6YQdKtwFdA4Za7f4ojso7VzNQhjvkTXTATrm9yaqtEPoYDZfHQZR2c2mPG24i hZ/fVvyFxAEXuBQ4j/QnWMFfpcIZUGExdjub9w209/vI3MqKPXeoT2BAa2U2C39MTU/M 49cPr5Orl0wjxHtWtxTN7SCIUDx7yJhKRslzhjHRvIGhZAoebiNt0qT/my6MQ2veUpTo vZeg== X-Forwarded-Encrypted: i=1; AJvYcCUwMG+0EGGJcveN/F798PFTOcIZfyhELoYib+8yQGw1U6XGKt46+AUY7els4475AZCAZwq3M5fs1b0PCuCNk3SPAEfodxTYLE6RSRzj X-Gm-Message-State: AOJu0YwSPe3tvgSE6uUBmPfED3J2ANf9JfpocQqKEuyKs1c0KGIJj+mn IXcIvuZHkdGYYcDWwgPUMY2x4Rfyl5DX2AATwfCPGoDgnws+OPmlMwKWpbg8LrAzr/K9pQcF05y VTHiejA== X-Google-Smtp-Source: AGHT+IG6ceWekcjgL/fYnf/VMGmCO/lnutsaDenvRqQ0JanWjuvoPrnbXWTWwuJKIYrMXYcveSJoPdoWUUGi X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:6902:2206:b0:dc2:26f6:fbc8 with SMTP id dm6-20020a056902220600b00dc226f6fbc8mr101587ybb.7.1709319392696; Fri, 01 Mar 2024 10:56:32 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:47 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 | 33 ++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events= /intel_metrics.py index 6c42c8947652..49b83bc28891 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, 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 parser =3D argparse.ArgumentParser(description=3D"Intel perf json generato= r") @@ -18,6 +19,11 @@ directory =3D f"{os.path.dirname(os.path.realpath(__file= __))}/arch/x86/{args.model LoadEvents(directory) =20 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/") @@ -266,6 +272,28 @@ def IntelBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def IntelPorts() -> Optional[MetricGroup]: + pipeline_events =3D json.load(open(f"{os.path.dirname(os.path.realpath(_= _file__))}" + f"/arch/x86/{args.model}/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: @@ -336,6 +364,7 @@ all_metrics =3D MetricGroup("", [ Smi(), Tsx(), IntelBr(), + IntelPorts(), IntelSwpf(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 D895039AF3 for ; Fri, 1 Mar 2024 18:56:35 +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=1709319397; cv=none; b=uu3DuKlLrdiucMQtu1PUE+wzZ/hgo4YcQnTz+rHdDfy4H/gVGnVGOZgurEnriovycADDSxbEpJIPp3EhBHI82BT8DkETlSDihQ3h9do7LVxUxW2rtyPW38+x6jHR/wwVeL3Z/ayHE9ahGiGnZV1mzjNFDJJqg43M+X49FLe1kX4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319397; c=relaxed/simple; bh=d6bcfgsUUelfZrIFFKTwcyB2obYk56t03Qv/7R3k+U4=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=U54oqjYh9RRXpXx0YNvGG0lCxEqTWab33yCnrtczDrypIdA1CjS41oYASXUGZkc+3sB7g7gkJarPskDc6ylKv0L9RZ7NwNnrHwN2BXjj9IlHL/ZXrtXvvCcpeZA4OJurUNkvaNB9fkEmQijprGgtzNGdSQwdrrahRra9Dd8WRts= 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=nQVHdeWd; 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="nQVHdeWd" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6047fed0132so40017987b3.1 for ; Fri, 01 Mar 2024 10:56:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319395; x=1709924195; 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=Ud2dHcNufn6h+i9hsSTaCNWNbOlP8ttf+JMwAMlMIZ4=; b=nQVHdeWdSVkcnIUSAD2sP2M2Xcjse6dKZY8AV56Li8fwbx1P0JmnOPVQYCjc1stAW/ +5Zy7yiIeAM70eET/IeDhw+pAkvQEIydEyEStsZsF/8uN5bNFYpTnpFliFkPNX6iiC+d 9vlynXLn9SpeQzikkuHYtbE7G1NlqlkqL6+nd+AFPZ5wOrFPe4A7ocebM8Y0NXqc0TSN Lp654envDzBKVsEwJFQ9MGnpiCwvvDOusfHsxZZy3zjwZyD0wrELkI+0cY2PCKQ7oYDL b9LYuW6LzQAanSPqvJOKUfntI6yUtfognyI9K74XGD6W3HVSDu1McD7ZoYGgWhXq+nhv 3G9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319395; x=1709924195; 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=Ud2dHcNufn6h+i9hsSTaCNWNbOlP8ttf+JMwAMlMIZ4=; b=qS77V8gYCiul+rDMJPwXCa58L7fspaxFTWJWK2LgV7/mnynazeIB5juEEn/E2j9WNr izKA/YmiVA7At5gxgBblhpgSuKQ371zKQIK8lfMU8RYgesMIqqeA4ftPRoeGjKG2Hvvc 28d9UbhfF9UdXU8RPlHeUyKIBbzoJsER8T35rh2o24VEujwh97OgZGqt/ItKM5i7OuEr p6o4OmN5RxxRCorMj649ud3S48qjPTY8RWQL3k/GtfgoWCSEwQQOHuPJOSB+aKEWGhjW KjihQ/Y2nfgXwaDM8DnfhwJM4s6kMjEij8tUBMTBLznFhZiwANDzZ/zzJB+dpoSjhtp9 bz7Q== X-Forwarded-Encrypted: i=1; AJvYcCU/aExCygAMZYj8JH8qaoqF/nhwPq8DXl6E+k7k2CRfGQZrH17j64XmfqnCIk0lml6+A0FlplEiglsVt5u9PsWeLPJc8HfLwLvP/Huf X-Gm-Message-State: AOJu0YwwiC1kq9ybFSerFVtRz+3E7r2DqDhzUkVHzW+3GB9gczQCZI8o f9eW6hlzdIPktcuMZCRQbqSc9Wa0hSSxra4P7dadO+W4bDErEiT9mgNoLo9IgSQgoaceituZT9p Kqp4mnw== X-Google-Smtp-Source: AGHT+IH/nnxqCGI7cy6WA5lXcgTbClOkwbOWXEp0A7wJJPXXcW9x2Y6Xra57UckGpU7kZigcNOJsZlakY2/f X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:57d8:0:b0:609:51a3:b409 with SMTP id l207-20020a8157d8000000b0060951a3b409mr454389ywb.0.1709319395034; Fri, 01 Mar 2024 10:56:35 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:48 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 49b83bc28891..9f42b489a81e 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -272,6 +272,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"{os.path.dirname(os.path.realpath(_= _file__))}" f"/arch/x86/{args.model}/pipeline.json"= )) @@ -364,6 +521,7 @@ all_metrics =3D MetricGroup("", [ Smi(), Tsx(), IntelBr(), + IntelL2(), IntelPorts(), IntelSwpf(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 367263A268 for ; Fri, 1 Mar 2024 18:56:38 +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=1709319399; cv=none; b=qjy57a4few9jyK90kumMwXOwJXnGstBn96B3f+wvfVNqFDtaCTofdbkuQ2yj2xCZxBfMRclgkrDJ6xDkrO3xnBfMmG8piMJGP/A/dI7MxJwPpsarFAiXosFMEOdqrq/F9ebOgbZDzMw3skuFW81qwztACuoUn5P9u7c7lGxv48E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319399; c=relaxed/simple; bh=k1J00uEpMiU2X474jyjwVg/k5P8F66t0UkVBIUUJqo4=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=LepFR8ngimCbhJwJdMR9BUkoU8jQChLQWPK/UD8UtkO6J6rnI7y3LIF18zhBZg5GrKm7h8q1GVzgnLo4f6J+P+rsxTC1HyuradobufJOdB19d29SLgko995hTL1ur70lpMlY98WpdpQB0kKDVoF74IEi4DGU3ofZJied/pPPgZA= 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=zRS310NL; 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="zRS310NL" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6087ffdac8cso38105907b3.2 for ; Fri, 01 Mar 2024 10:56:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319397; x=1709924197; 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=9bLt2tsDqrZIDuuzvN847pO8hmc3HFfJgCu/uhjrOeM=; b=zRS310NLrNJ2W1snef+pGWF6jWs/UcoW5ws11DEexHK0E6hDNPJP5havwXBGzzkruH iwWFuCj6KpNKavm/GI/EAi8ZDi7+igmL4BxhNrIkqvbk2QlQ63GuDa33ZoEgKIYuHGub RFlRreK0nkSOx9l3qr76HN6xrs8MpF3CRC0hAnuIJl6P9GMJQC1LVQi1JoPPMorgbDuC BlE+G+sjhWphvo+QIMKUCCHHjKsg2Y1rqez98v7YPQOq9UrFgPwvI7jH0rn8tVhyGP+z gORclFSzXDXnThl0GosqMbBmFCM0BDjQlnKH8qTP2/Zrg5wu7e+PFluVRDXImJdqx79y 2DjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319397; x=1709924197; 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=9bLt2tsDqrZIDuuzvN847pO8hmc3HFfJgCu/uhjrOeM=; b=TTWxixJc9WddW/3i5t+qeyfCtBZNNYFQPre0R9SDodHCAABPV6asPz4euuXGESS551 qTzZ/ngy1oGjYLhlah11VRjeIEa7WQuL1S8aE21534Oo8thhsD0Pt79Y+SMY7ltLcRPD ZGlQiDol5UER0a2vIP6u/2QMX6U7qsPQqPg06flaTpp52jMLn1SE+7mZLUjG5oBAaZYE TTbIB4g5kJWYPvKotiA7o00Nm33xv/cUCYBKOuWGbdzWUibXRZmtu39GZu0mj69y914T 2jsL7NFPTjqqru1BnYTtqufsmLrKPt4k6bTC7eg+wK8qL004EC7hG+Nau/ERAoidjzny p0Kg== X-Forwarded-Encrypted: i=1; AJvYcCWPqYcWbxf58okgf+iTeDqBgXqCeWGF46LPOgl9kIRiti45QsllsGScJoCAZDw/Vgk/mcZ4C9YzsDdmOMkjqCmOG6mvuBtAtkr8fBfM X-Gm-Message-State: AOJu0YxKvIEWkqPM2ntPs9T1296hPd4uIggJUWLNF4tis88NN9JV6D4j JzHa9qKrWbjSOv7u9IgiWdRLlE8HG8Uy6gk6+S+Aly8Cph2lDRYyBlGwaCd8TdNoJo/UHNaPYOV KQucDOg== X-Google-Smtp-Source: AGHT+IHwyRBJirzqk8uMFTrQMDM0GgTTLbJhm8emnlvGpOsyNImTLygP+QzB4U2tZuzbYUFKAO/WbN+MMQ8c X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:690c:c9d:b0:607:cd11:5464 with SMTP id cm29-20020a05690c0c9d00b00607cd115464mr604520ywb.9.1709319397235; Fri, 01 Mar 2024 10:56:37 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:49 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 9f42b489a81e..061914834cff 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 @@ -515,6 +515,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") + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), @@ -522,6 +605,7 @@ all_metrics =3D MetricGroup("", [ Tsx(), IntelBr(), IntelL2(), + IntelLdSt(), IntelPorts(), IntelSwpf(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 82E303D54C for ; Fri, 1 Mar 2024 18:56:40 +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=1709319402; cv=none; b=LXfNiOhRVdobecCa1UHSGdMvC6dIfAeY1Eujt+N+O3RMoZzUwJHQ8D/eBwxSr+ZCHELeOnfUwBZFpegtp+Ui89oOieLKukWJQFyBDZXwr7nsBBPvkL5hHytJlvU359iqLqHkJ3lio45ggjtsTwtn13d/zGR50CVCIV4suFZ2VDo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319402; c=relaxed/simple; bh=ReQNa++yN3cks/OeqEJawBQb3bmDZtEAQZ6F6yRpdYg=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=Vak3ruZdSLpwXX02AFhpXyHDCkZy9i5anmi5Otc9BA5TCNVCKd/6yY9l18odW5QZorGARxQ0E+TEOv+ZMMz+I6G/V6A9Quv/1Wnil5grjNQDYBpUDO6okTbgaNzKu1y0ZtGJ82SH+fz6rS7F1NbaAGvOK41lv7a1HL5tOphz9Ww= 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=L4nbwjO/; 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="L4nbwjO/" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-5ee22efe5eeso42109697b3.3 for ; Fri, 01 Mar 2024 10:56:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319400; x=1709924200; 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=iy3P4uSPJWyjA65jWAIGgY8FhfJd7Bx8GKL8ekkcR6Q=; b=L4nbwjO/VhKmqGrtuMZOWgx/BX9nDeeT5vnXBovLI/TryzoT5hPLRoYL22lKsArbyn nmgI5GZWOqK2eAxs1Dxtssz7Af5fg8xBhbhNe7KG5wCgQqiRDfBqI1VzyobhjdAkbSSj 11rjv0YBc5ROdX/+SX5LscEGAD/Oxus2KlV2+Nrk4GSEcgOEhNRYAyYtPPBgvgtMluVl Y/BlRCJbTVDGlxadWyfI+ENzuBaGnqZFBxZQgCGOrTZXP2Wb/dYhKKQVmWINfwBML7zj DJD1i0w3i2nxg5RqZTV+/ZkUcjXBfNqLAt8e/1/xgtzp8YABZyvtsRNn4Dyqr3/ifOiY LgZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319400; x=1709924200; 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=iy3P4uSPJWyjA65jWAIGgY8FhfJd7Bx8GKL8ekkcR6Q=; b=r9XY7Mm/Ecefuv0F7rLhM+R6sRr5Z5Vnd6BxsMNLBFA3d94O5GYS50JgPgL8IkIsN3 p43ttrRx6cg983K7wogeRbShU/7T2Wp1AjI0KposzOCZdyWRTeBUYQ8Urb1G+O6VqFiU y7Z4oJk+Zgy+NCtPhcrxKiMJox/ufI8mEMyoPwS9piG3h/GG9SoolrbJO2Knj4d08BvN sHu+uR0wLPM8809aFQhW/U7gPrk56e7M0kA8+sApVfXXjNZy9PWGibrfp8NO+vx7yuUC pG/kUwvO95C2eeQhgqvMdlNc8atEYa7qHybrf8syYLcEZfqjb32ULpT9uFIMWrrQ1ezs +fMA== X-Forwarded-Encrypted: i=1; AJvYcCWeqMQd3wthCGhRZe2VbYJtS83fowPHPaFqOLEi9iP9yFuuPCakptAJc52dDON9iEJQRdsCbKa/uNm/tcCUqeyj2JipOzWeSFHFfRmD X-Gm-Message-State: AOJu0YxGd34pbIc8mYSBSHrlh0AVD14BEo+OsnuMhda3eAcBx7P7j8su kGsM//4om/y7ESPLK60ohY2BtUI2o3U8q9wI+dFMi9s7mn18XO8D5Z33JI+jnv+m/WpF3ql0xat xIJ/xMQ== X-Google-Smtp-Source: AGHT+IE/KE3KsJdr5TFLnSzfOCiwccn45ucaLtLE5iDVqP+0SDrXyL7JnoVAXkyzooS6m7HBBYHYYyWkGkRM X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:690c:3387:b0:608:d499:3439 with SMTP id fl7-20020a05690c338700b00608d4993439mr467407ywb.7.1709319399748; Fri, 01 Mar 2024 10:56:39 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:50 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 061914834cff..6f6d1cdf6649 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -272,6 +272,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_cycle= s) 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 cycl= es", + d_ratio(low, tsc), "100%"), + Metric("ilp_inst_ret_0", "Instructions retired in 0 cycles as a pe= rcentage of all cycles", + ilp0, "100%"), + Metric("ilp_inst_ret_1", "Instructions retired in 1 cycles as a pe= rcentage of all cycles", + ilp[0], "100%"), + Metric("ilp_inst_ret_2", "Instructions retired in 2 cycles as a pe= rcentage of all cycles", + ilp[1], "100%"), + Metric("ilp_inst_ret_3", "Instructions retired in 3 cycles as a pe= rcentage of all cycles", + ilp[2], "100%"), + Metric("ilp_inst_ret_4", "Instructions retired in 4 cycles as a pe= rcentage of all cycles", + ilp[3], "100%"), + Metric("ilp_inst_ret_5", "Instructions retired in 5 or more cycles= as a percentage of all cycles", + ilp[4], "100%"), + ]) + + def IntelL2() -> Optional[MetricGroup]: try: DC_HIT =3D Event("L2_RQSTS.DEMAND_DATA_RD_HIT") @@ -604,6 +633,7 @@ all_metrics =3D MetricGroup("", [ Smi(), Tsx(), IntelBr(), + IntelIlp(), IntelL2(), IntelLdSt(), IntelPorts(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 1C3473EA8E for ; Fri, 1 Mar 2024 18:56:43 +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=1709319404; cv=none; b=SpPGWbQXaKfI8CpAdLgvOQ858qV0DqcWUWSGPBYW4R3LeVfDgWNkCUhZ9lRwC4HYQDkPPqWkYk0dqBsx6oDnqn6tdbpunPMIkhzI4swMIowlXPTougg2z7//f9woLc5UAGAiySTvM/XuyFXQr3M51Wg/0OVHBaKeRMtOsx+C2s8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319404; c=relaxed/simple; bh=g1aUKyrw7DvdgN01eaAjL5EDa8+hBV/p20E6Ldm6SxI=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=A4ceDh66dSbku4oNGXhmw7OzMrT1aCs1tCdGglJplk/+6og5Z+r/GqRpu9lKaXgw8PMFXleFDG3Ik2BJSP5Y7V7vwEERM2RrwI9JkZnCajblM5XKN5kzsDIBFioSFm1CUXPYp9jAPXbIKITczYKUgTBTQrhwpFbBjktTvPOZSuo= 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=pwl7JyU6; 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="pwl7JyU6" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-d9a541b720aso4374174276.0 for ; Fri, 01 Mar 2024 10:56:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319402; x=1709924202; 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=z8m41PXVl/EgCm4ozUPka7O+Ter4HT44OkTHNVK9970=; b=pwl7JyU6cGI+yxVc+r5x4UlyezDJq+503nQIbufqWvxoyj2cWEFhJSmTGpU5lLWTqz rmL9a9GCBLdLBhrX+90X1Vx+O/dNigkM2QmOdSQ9e3+ygqENydZwtRq79oqz9Ustoph7 gzl9SZYJKvZDaLFzBDjJV4ujoPtV+yqTFAam2yKZGtwvLX4ga9tv+b+hG8UUeeapoyCh 5JUv4BQcJMjrkigKANFPZb4WlxddY9tlxSZ6n34n8vHceHhUCvk9I20S103bxUu5tjUZ dCm5pAyaBGZQJRtsYML7L2MRmTRdml6pbFH2jIrR+ofz9rV5X4eLnuiJyr3lq1x7fl2Z lxbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319402; x=1709924202; 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=z8m41PXVl/EgCm4ozUPka7O+Ter4HT44OkTHNVK9970=; b=xTVWbSLUmELt+178WyEiZAJiurgucM06N8sRhNjE4pjMscYPz3tldU+qZJg9/P5I97 t0zOxAFsaFhK1s+D+1C+I8A0by+DR4HyoQ0lBJAX4Uwr7PgbcHnVRIcCZ8eMygwuTxmp gZ+99BG4SvNyUHcTlXw/s/ViOuK3m5TkuSiyo61lBskN1BYcjRmCJ48UY7RniG4VLmO4 8oqxDRtv1m04G3KK3s/1+/BkWnJfIOl6a6BrdLVFenVq0Mv49Ib8kxXma0fI0TAiTnoT UGc9fxFixc6DKplRRq7c2PJ7c3dFCWlSWgjrigTkW6g+YF/c19NmK/ZT8ek0e4bt5gwf ur3w== X-Forwarded-Encrypted: i=1; AJvYcCVBgh+mlMgyOmMPZt9h29Vds3Ep/sHXtxeDPqVXhI7TPi8jDOnxt8E5yln4IRz11aQBAkg868TyH8naBr8xgWdKFChmX6/vxiG9qwWj X-Gm-Message-State: AOJu0Yx0kACT8zrVA4mZWICpAjsDPXWqqymJRre3aKj/CLIg7UjD5Ent ytWRa+tYnSdnVrVxjMydinANbt/d777ongrxInMGaoyBOG/2DoifeAEG9hf1EgoEma2vxbNu6OW pEuHleA== X-Google-Smtp-Source: AGHT+IHszUKUo379JPDZ9uRqjQAesqFxQ4RJ6sQjSKFJqvbovVon6KJGIBP96328fmqpnkcer+Ejzja0pT7W X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:6902:120a:b0:dc6:f877:ea7b with SMTP id s10-20020a056902120a00b00dc6f877ea7bmr540903ybu.9.1709319402300; Fri, 01 Mar 2024 10:56:42 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:51 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 6f6d1cdf6649..49e51c33c0f7 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -272,6 +272,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/") @@ -633,6 +687,7 @@ all_metrics =3D MetricGroup("", [ Smi(), Tsx(), IntelBr(), + IntelCtxSw(), IntelIlp(), IntelL2(), IntelLdSt(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 CAE883FB0C for ; Fri, 1 Mar 2024 18:56:45 +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=1709319407; cv=none; b=rSVG9Zi9f7Samh03g3Ce3qy7XJSbKhhmqZRzBElciEB3DZki+g9dzgJEWk7dzXFlhPO8cXGKU/mD4CIn1605+BfZLEa/hy3dwtUCIxeiEuDezwegwAA0PEUvyedDw7MgkeOTWD1TlKsVeGOSlR/Mp1nSnmZ0KxdCu2yNgUMJ9jk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319407; c=relaxed/simple; bh=Vef9VTUxJdFoMoInyvsFelDJcm09RH8PY/vrqOgBuqE=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=T114+TgD1c2ISIfcEL58WdIoEuqsiu99U65vZemTdwvzpA0Kw1jlIFPOF6b1EK3l9LmA1MBPRXQaJrP4UbKJGmGcnuhhcsA78UFhVtBoNt7v+cC+HnMsFhcFSX8MLDk4jAVZa1HzQUd3mv0nIzsZTJhkoV5pwBOKPY146IqDYqg= 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=UZUY4lAb; 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="UZUY4lAb" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60832a48684so34387507b3.1 for ; Fri, 01 Mar 2024 10:56:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319405; x=1709924205; 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=SYoE2D4a3KJQc8bbU4jnrR8QgBUsbfSWcnqtOE2sI50=; b=UZUY4lAbOdiuH5DcbT5xYaI8mxFj5jur2LLLwdgfor2whpDAC3bvCzW7Pp3pZutOfT fD5Mf44OdOgoeWt2MnZvRWy7Z81npk8aFuBDm5B1RusCjt7CZ2IX33LrIEWU7W1BV7TR 6cs0nefNogpZfHHLhrUQW1GADDQK6it4cZPYpr476HmkQttsXGdWZTY3x+WhzViiBWmc 8RLFxBd7WKxBNODyBxPW4y9pzwqJoEip9fqgYX18p8YjO1016gnA+HOtWEcPvopKietw oR3eSVdehORBpDUWJT+Gejp16wRPXKmgsrN6Nmw4hCE9qNpCDEFxTuhI8C6oDXLdXuGB E9UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319405; x=1709924205; 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=SYoE2D4a3KJQc8bbU4jnrR8QgBUsbfSWcnqtOE2sI50=; b=GpmpmUArT1V/55RuotBIxiZwIUZUNSVITrf6RhaamS8Ge6mvf2gP4WmOP76cMrim6K SA2wPTE3zi18lSRyXaG7C2hsuPYgEDp7adBgOkcV6C1iJy3QcUffUjh5vsiNuGqJ+Qlt QF6Yi2B3Y7omK6ojqk+u87idWB1cnL6kw1RFtSCtC+S++yWZYvtiL6p2vocoyhuRuI5i PAukTLKrQyPpThOuYsfGLOWDWDp8FVVEjoGDGIVTE3XlIuNyPoD7zpa6RcH00w5nIjjY kVww5Ycr5ia+rT4jvpJiVVGxNeA+fulL3+a5vDaWkNMl2D05JIx3j2Iz6V9AR8s/oHlN KF5Q== X-Forwarded-Encrypted: i=1; AJvYcCU0hWFPNAyv9TDKf2CcVFoT0e4YHRumHzjW6qxlirtc+IdPlh6LqDwIGDjZCrJdA2C/6JdW9gERnwamuXe/+cNfgDZp+61nM4Qb1aJE X-Gm-Message-State: AOJu0Yxg8htWX/7H7XkgYRCkd6aVEkP33OZcJr8xHMBII0DHuedUDlXL fsHNNx7XOYeUKgU0qnTrQcQVTyrVYxlIHVwqPUhr1zaa3QEAFsAyZBMffDtFJ4cZILcQ2N8QSNC v+8nbQw== X-Google-Smtp-Source: AGHT+IF0SWVVshOg7HdsBIR86ZUbzjXMuc6wwH4zn+FDddCl5MH4vJhOjvctNYIFJLl28qP8v4N/OmgNrEKs X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:690c:ecc:b0:608:ecf3:ef8 with SMTP id cs12-20020a05690c0ecc00b00608ecf30ef8mr483741ywb.0.1709319404865; Fri, 01 Mar 2024 10:56:44 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:52 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 49e51c33c0f7..6f18d5fd9f95 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -326,6 +326,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/") @@ -688,6 +777,7 @@ all_metrics =3D MetricGroup("", [ Tsx(), IntelBr(), IntelCtxSw(), + IntelFpu(), IntelIlp(), IntelL2(), IntelLdSt(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 EE85A3AC19 for ; Fri, 1 Mar 2024 18:56: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=1709319410; cv=none; b=vBd20cUiwdE3LkXrNby7k+4FG3wcj/ENxtD87BZgfmdacJbH7/C39yxiRgTIN9YENM/1Es5qR05+oth59XV0JiAC4H0iFgbbSyVu0SpUX4hlSNylsWlbCBsbIBpIk3+46ptNVcNEjPQ2pytCZ/fLj0ts/oeN0WdDHlJsIcGgpG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319410; c=relaxed/simple; bh=ioqKuJWewNQmhIwOmTO7CGCh23AwMW0/VlYh24IVFkw=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=GmCGVc6toxoyjqmtZAQtptH4j3/gsYaa9nRtj4M+0n+LkCiwgEMP1NSMD9YEBDkr4zg4eF52gb5O47KOIziZZncZ4DI+rvtfcFaOUASDcPwhZ88DY2p8hVmhdd6TZWbXMao+Ry1v3KeqEA8FGH7xzHASl7PM5psh2QcI9eUVkGk= 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=ytYvK3rB; 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="ytYvK3rB" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-607e56f7200so24206407b3.2 for ; Fri, 01 Mar 2024 10:56:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319408; x=1709924208; 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=j29r0+uRis6oMNX35QsnEUIN73H3JiunuyPnByIi9hc=; b=ytYvK3rBsX0Y2xqWdG6ypjs6MFmehN1zGOP61V9132ZQxdSB+NqJWqzQ9MquNI40cJ 43EFc0wrRcvUy591bRGSYM//rGz6O81MeEea8sTehq67xfZo83qac3ISFzCYlDO/6BNm mKlYjzWUxrav2GqG7eaMf+mrwv9Sk5VYxfrw5nDGmEa0TQD0ahJkYLFtSshMjB2JcNkF 3Cv+G0IgNKYv4gMILjDoyPv+VantE5Bp2YGu/SnBRWW+HYz1Ho2fSwpWC9grALa7sBsx oEBv8ODNAp84NlTflDKLW+zh0bpsbjvMEM4eBSkL8iitjtE+B8B04x8e54/kDzFIzISH S7Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319408; x=1709924208; 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=j29r0+uRis6oMNX35QsnEUIN73H3JiunuyPnByIi9hc=; b=KI81BH5iXXASEaO4Vvi0RTBtljYro5VcDA/Zz5f5ofS2vXUL15jQhANFlSJcaPywqU GYZXScQENLh0fRJ2ArSm878DocQJiGPE3WQmr/PI/wCKhvjxeNTSOx0LFnZQLr8UGIHV Wk1ztytaQYtgek4ULTPwBl8FbK+2wzznCgcWuGTe4ZaQ6aIUV/mGQCPKirierXT0FbiS HIO1oqK3pOoZM4JvfRjoFln3glW1W96y+RnTW2vsqClNPRTs3p+ITSjQqvf1ZRo6m94P niSGr8ODVVLKtNDcLaIR13qZar+Qz1CDbm9I2kR94A4Z+Pl6HXoSKpZJz1a5Cq43HJ5p fiog== X-Forwarded-Encrypted: i=1; AJvYcCUQyZKa8ixd47H7htkwbPxpjZrgVfJy3XyBWjRfknEvuLk0Hn6R+nXbrXMMrsVVrIpP7YiedNyZp0EY7mGnA7rvJdvH8/M0xBTk3Ugl X-Gm-Message-State: AOJu0Yxr4Py+jyU4lqOLME27lbfORkF3ofqTxnnpx9TT1pRglJS8uDQb G+LORIic8xO9yIoUFpyw+ViEKaOersXfJvzdyz1j7F4iPGoK9h9sO+2Fp3K+GKe6vM+uKfWIpJV /C36S5g== X-Google-Smtp-Source: AGHT+IGKC95PVGcc/vbSVyPdG7qyY7ADCiD3b2UKPwJGOqVAXiZwP3VxyaDvT3c8w7YXBOBh4uN1Nw4liePH X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:9950:0:b0:609:4d6f:7c0b with SMTP id q77-20020a819950000000b006094d6f7c0bmr473405ywg.4.1709319408201; Fri, 01 Mar 2024 10:56:48 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:53 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 6f18d5fd9f95..2cd30c557a59 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -601,6 +601,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"{os.path.dirname(os.path.realpath(_= _file__))}" f"/arch/x86/{args.model}/pipeline.json"= )) @@ -781,6 +795,7 @@ all_metrics =3D MetricGroup("", [ IntelIlp(), IntelL2(), IntelLdSt(), + IntelMlp(), IntelPorts(), IntelSwpf(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 6CFE345018 for ; Fri, 1 Mar 2024 18:56:51 +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=1709319412; cv=none; b=Zu55y0KLuoUBFCpDxYfivm7Bt2kviAaReikLMJ+6cwUOqfmtrRkqDBIfCD4XE7Ug6eCli/5cQ+0eaGAIgI9BujvUp4CyWuY2dzv7Rfypu5I91cHaWOHC1uMLgCi/JAF2QjgQIRiT2QK0cTpcCuCDkrj4rQ2pCuIeK0XZg6pqW6w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319412; c=relaxed/simple; bh=panIrCvcM8hwmTL6w73OOIwaBmO4XEVl+dEJoBh+wK8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=jT5MeZULZhb/jI2/bvzX3uSj2HB+KaO/qZ9gHT4poHvPKERR0UjuN2tBFiIEqhParhVrGNL3A/xmQPRgf7xRbsssjc+vk/ac3LNPu0VFMXLJM1sNgmCBeyShFg1FvRd9j5HcII6tx1wtak8ZtaGMRW138gn4Ow2ksNNeGyQSxsQ= 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=05HGQoF1; 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="05HGQoF1" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-608ac8c5781so43335857b3.3 for ; Fri, 01 Mar 2024 10:56:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319410; x=1709924210; 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=K9VN6M4iHhNGfXDgUsA95lPgDC+51/4VBbMVT4/EKng=; b=05HGQoF1lQ+Rph0uRkJXdPfSSIX43pdvwKamXL16jErTuwF0wTiu5xSjQV1VLdiDBG u/W2kw1B3MoLa7XDrKC1dVQoYxFcgQhURbqVcn40wBzDuBV6eeGqndPxmaRA4Mfkgx6J yoCiWp+DlM5SEYhpjAD7lUyUNrY3ioliFtGhWs0Ka6PCI4Pji6OLeaXo+9vCJxEADgoc vPF0ybl3XqmLUBtOJaf/rneqVl4xTNEb3eEHYIjHfIGfZULfuMdq7iwYCh27F7Ne5rt4 1/2Z+mZ+8JgMww/1zhZzP5OLa+y007lTDu9XAHfijFMslBEt3L8Iegr+16/pCbzIDSgF MJ7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319410; x=1709924210; 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=K9VN6M4iHhNGfXDgUsA95lPgDC+51/4VBbMVT4/EKng=; b=a8tHpfpBxr/dVxtx1Up1/2zCUz+yPffUw1s1fIT5DqD1ShtqH5dIK/DidHa0fdDJbN DVT6ESjOu5aHjJ84/4iB4uv0Q7X65HA5vDa3i2blRQy+hcL4VLFITqUN63UoQUjmTHVP UaWqfQ+CTQrftIVvxfB+/DgKvVpANcbBWz9i0yCXksC2Xcckc5V/s6JGjoTRo0SbFRCZ eEEpU8VaKtsNSH3lRRlUOjj5Vj2xPHRv2VH1AuiKmkx44tpx5gDjmWnkcx5/Xr7YV3mE jGMApPr/kY+MD/X3UkqGKc5QiNb81jfepWP6w4CV891n4jjf3h9a9LyNR82ZqdlO7YTY 6M/g== X-Forwarded-Encrypted: i=1; AJvYcCVHI7z+mqJ+n+6PDf0tJWnRm5UUBwHBxfKSUvTpOW/fDb3IQR10Zt+ijUaQTRP2YhPMgqs9OdDIZh+CepAq/Rq95NfahUCA6p0O4rlj X-Gm-Message-State: AOJu0YznDy7R7MsF/4t/qTchwwOAw6+zZuUNgulIu4MnxsYZGxSMXwDL Bj6JQk2AhZlvDD6AE/MbIMIIYR3tvLrJI/Ldfy+vfLama2T9sy2bXE+bYfxT4iIQCV5xYt0eRFr 07OO7Fw== X-Google-Smtp-Source: AGHT+IHukrvXXf9dKyNrHu0Wr/egMKoGJpe2Mj9fmA3/yh9TWJLZGgHyZc7wGu29UBH6pQdCHemj+zr16pX3 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:690c:85:b0:609:3cdf:c737 with SMTP id be5-20020a05690c008500b006093cdfc737mr528497ywb.10.1709319410636; Fri, 01 Mar 2024 10:56:50 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:54 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 2cd30c557a59..a5d68b7deab3 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -784,6 +784,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") + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), @@ -798,6 +859,7 @@ all_metrics =3D MetricGroup("", [ IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreMemBw(), ]) =20 if args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 465574CB4E for ; Fri, 1 Mar 2024 18:56:53 +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=1709319415; cv=none; b=NMKIIuii+ajmDi7Rq9zk2iBIDuxFhBB4PqBdgqZsrX3eJkuFsA323I8+ReNXtR5h+vPCfCYdq8rCmY+YEwlDjo1pZaNcvfXZcq+BG2fpolNMIsxfetq3TkT0MFOFiDlSZS1lZPKZEQnLSVLBIJ1Ul6HXTu4w8SUYtUKqwZJNeFk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319415; c=relaxed/simple; bh=zsfAdzqNvQWvzalFsOpTfd82DF9L2jXbTJgB7wNHPc8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=M6IuXzAOTiHp72q10cm7qIZ385ElXbrB677psIkHU2rL65tgtgtLA+q2Y4TSCTf0PBcPg+duCcuCp6QaEvO5fXBhdg8aKEGnr9br5xWuvREuUm+UdM38T/wf+3aXoXutrfxoYx3PY8Rd5Q0jb0YUptSRZ1aHx0cJfs3EwYCM4zA= 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=a+yRUIUF; 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="a+yRUIUF" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6097409275bso30731897b3.0 for ; Fri, 01 Mar 2024 10:56:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319413; x=1709924213; 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=wDxjwfTbKIrn1N686Z4rZ9XKDC8dsWniG1Tg4NyRgEw=; b=a+yRUIUFKsAJv/B0w7AxZau5Xx1UytXkK3u0j2iJROfZs1+V3G+S10phf/n8yUEwr3 n2b0hUq5oOZ7Zs+63zWKb4yDHlEq5VfCtvh+8tYh5DeD+0OBVPDckcfzh2eXIIAUEzGx +apCXwgzOwPjSJjWBva0cHRi1Xa/aJfO7kQ2rlp+uKgZep+RQZUOtXZVlaygx3pKF9p7 oLZ6TUoVukkNBsQ2g3LTcYJQeE4I7B42INvCUaCNtUrAZ0y+l1EiV6zYlgdCx1nLnqmL FT52innv/qBw6UuIfj5ViVtl6Lc8m4iaI4A3dvgFoP3SSR19XauY/+MYos9oOPcW1gdg Orag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319413; x=1709924213; 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=wDxjwfTbKIrn1N686Z4rZ9XKDC8dsWniG1Tg4NyRgEw=; b=CpDpMIOq1PjT/XWm0ZZsqmHeQy3K4vtoY7v+Cjehgyx2Zt3RewZIrRC1roRZlh9kEe N9k/hH5BYOD+/3uI88/ntIr6YN6OdUr49G2EjrxxVFxLBn0+ixR8eiYG/JDnbP2BvzIC ncZUAA7nOxYbMx3jEYYe4urkqjtJq26udfdz9NeaNy9yZI0wtrsW8nArqi3s1Zl0BIZl li/Iebe5k32C3Pa3FM1tThkZD4K9sZXlEBEKz8V5Izg4rYxZ0kGSjmtqrwrCqr03ddVL pciTwV60ifGJuz4dTbB9bMQ8oHLXNiIZU8q3uolfoJKOZqFOgV1i7RaSIRi609jjGe0r CbCg== X-Forwarded-Encrypted: i=1; AJvYcCU6s/RBD/k5bNNzrmYVyRA3C9wmCIBRYS4VQCPQHmesvqj6aa2SaW9gl5TGf51AfBSDLPZzT8vE0onNKHieXz4O5UeM5JCefgPrEu/s X-Gm-Message-State: AOJu0YyX6TypmT6MESh86QGzhBod25WJZ3dxLBwPXFmFYZ9sgiiJ74VE Vih2e6d5yBcOF2L6VkWOa0lXEWnjnXBaQZMbeJgRxVYRGi96X25yNzjGTE1J4VzN3cQjmlWRHDK wjmf3/w== X-Google-Smtp-Source: AGHT+IFcTTyu5RZjJnXeSWT6rp6vToR2nFN5tVjEEa509a6ZpN8KHnYfYnzjmWPK8VsMEIHdXXVBxXALr2ZT X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:9a05:0:b0:608:2ad5:cd28 with SMTP id r5-20020a819a05000000b006082ad5cd28mr464509ywg.4.1709319413260; Fri, 01 Mar 2024 10:56:53 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:55 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 a5d68b7deab3..76e71f11a579 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -784,6 +784,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: @@ -859,6 +885,7 @@ all_metrics =3D MetricGroup("", [ IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreMem(), UncoreMemBw(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 8541D4CB58 for ; Fri, 1 Mar 2024 18:56:56 +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=1709319418; cv=none; b=cAzHa5pUXo8DH+Tu74W9ucr1+u/3j27LmvonRye9GAYNeJfRZKb1W0pnbVJRsLf3vybtMbFZnG5x5Uu/hc2JB55kFxvPZwF8Ij8lFb/xD1ZFp7apMeF1zWOcxE0jOHmAZz07E3XE3DLWOVPe+Mg13jYTiv/RFr3PDvY4ZxkiATA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319418; c=relaxed/simple; bh=C2x1ZFv37V+E2DKqeXmWKBtEiLApxmFaf2acyhRA6xw=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=Bzgh92T+1lqdUhUz/aaUO7v82ZzHBmKkrKECyLaiCmSCSS5ImPBM+0ufmnbEbXICm3mPa4NqHgUzFy7kqmsoOQCRhZRP9r2otOS3wvl6ciWSvWJ+XlXkZFsocGzbgQZJLwc9z383GirjR6VU5wM3zA50768NXiv/JuidlI/mxGs= 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=Cgsmqq4d; 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="Cgsmqq4d" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5ee22efe5eeso42114927b3.3 for ; Fri, 01 Mar 2024 10:56:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319416; x=1709924216; 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=qx4Ri3vgVtjrNh4FbnpR3dQWcRAmzh3jMNXhRug+BKo=; b=Cgsmqq4dknhkpZLdgRQQTr5xUXskaWHN18er35GBX7mHrGEoHPy8HOkN52uoWYVswi 9YgpFkapobdp5E4ysmyYniayKDaFBRrZD8B9SnZH0I8PmC60vNF7/GyOfdmptC6bo/2D 74kmnotMIxNiZh0J0wtoIjAvRE4ZMiRgc/fRYJlh2SHODalmN/XZ5enQSRQUJEgd79rR sIjo5dvX/q1y+rC2t7ohwot0Du5LTlFkrEB1uj4q7BxlTGR1Erh2u8qzbLAMZrlEdBtv 5kpEIc4jNI+OH7seHPbhmG4WCfZC4IqTXRMLswz/UGwsN5nvTRtwwSTBqjh4XO1WewJ8 Dr+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319416; x=1709924216; 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=qx4Ri3vgVtjrNh4FbnpR3dQWcRAmzh3jMNXhRug+BKo=; b=Cer6lSNnp731sgOrdj6Hg2V0dpBGCNav8CFOxQqm6hWx5OTFdFmzcZxLuyxOJVPusr p3R0eDhKRJgftPuGB0dSwNZBengl50WW0PDL/fVl/Bhcqv8Xaixw1KpzEJht+4z+c5cS h1O+kN4QhUaQatjg8O6dY6CisiO5je+mAcmUs1HViszTO/ww5SnH6T2nClrdSu7Woxkj BUef8ACyVl2BLKZnZRVdjYGS8mWtW7P+3C/kE2kmInwnmI8Bx3RnZgiwyyEq4BQ9eb53 qFIeeiL4fdXxvM3pt4CVegkw+K8LR9vFRd4hPUOaoAd636Qm+vigDil3cQMFQsDw+oTy yqbw== X-Forwarded-Encrypted: i=1; AJvYcCXzPrZv5UUqCK0Kwj5uug7u95o3Jt0yLgfknM4vrXa8HJa5Lr9sFFfs/h0Avh2nag+o8uON7AuiUG/I0sB48vNRivZmHx6tVkSCBWLg X-Gm-Message-State: AOJu0Yyv8AwzG+wB/1MVmzjFoNH/QpEnb1zVwEae47cc6donaC2Jmprf E4GXEjP1b8H77VWTEdcKSYJWdLlOAzyJ1lBpQNN8aXdjyQALrmCygjG1XwjJIRAR4K0KPN8b1Tl 20EY1/A== X-Google-Smtp-Source: AGHT+IFuYYaNOfIUtqEh9c+trnUnE8Fk5bO2e8KimGgCTfh07FJ6EbMKq7PfHptG7wenEAj3+7NMAsv9sWMy X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a05:690c:fc3:b0:608:ced0:eb2e with SMTP id dg3-20020a05690c0fc300b00608ced0eb2emr477450ywb.0.1709319415826; Fri, 01 Mar 2024 10:56:55 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:56 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 76e71f11a579..8086aef3557a 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -784,6 +784,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") @@ -885,6 +920,7 @@ all_metrics =3D MetricGroup("", [ IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreDir(), UncoreMem(), UncoreMemBw(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 E190469E09 for ; Fri, 1 Mar 2024 18:56:58 +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=1709319420; cv=none; b=Je+7opidnwTcBLMRBcoDPAFP9wVzo9nyfVllJg5cAZ7CE14MRXXRrYnAHVdxyAE87lpweeEDSyb9uJhB1e8+kLS3wlvDd5lOlA+jNIACCN2l8+BV8iZucjMGebJNeuN3T1HVqkiBIItI5c4RG40L3BGWPKeOQYQ2350+U3HmLcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319420; c=relaxed/simple; bh=smAVN/GCgA5/MmqiHaxq1BP/CFOoXWsEkiW9uPTpG1E=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=pyOnxjy1tpNJXNxLyqQuRV+o4J1mMPLWoceMbU697pKUu45/OHfWrba4PMTJnb4RZorgI/L/TQtyoX9Rru3bhg3Gao0eUrVoStLmKABEWhg9VWmAHuadYqBWO+jaW6IuKnB7iTpajfKasMSPgjMDuAoR96F9Gb4DR0n+zUyzgWc= 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=t6G6qI99; 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="t6G6qI99" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6093f75fc81so43608237b3.1 for ; Fri, 01 Mar 2024 10:56:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319418; x=1709924218; 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=zbLHB0Wrr0NrYcqmEePKnNB9gjFn+6QmEJrv+HDup90=; b=t6G6qI99RwYDk8lLd8c+8YQSOw4EvEtnlkSUvumWBJf6eWsWySUW7gl2IylYg5P625 UfxOxxIPjYv3ViXMhVv5xaw/q9DQ1QNyKz1s9xpGj6lHCATlIJjdd75Cr6d1rxTWaGs1 r6Xaq9T2JIz3OOit3nDL8KI9z0Q2vPo3XlFRzZ3ilvFW9IxSwrICBFOBjKf3xMhbjx9w Fp8k9ARuT+IZi5qENBMRNSKtWNIyRxEdxqCGZvyKUXl99hn0dqmZXDyIFhfAgKZ/SG/b 0wieEVfPAJ+/R6iRuqgVQEqOdtzuo5T5VfIKkAsnvTOF2y7Ozm/NGPHpNlR3ma6qFxZx ZzrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319418; x=1709924218; 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=zbLHB0Wrr0NrYcqmEePKnNB9gjFn+6QmEJrv+HDup90=; b=xU4fEaWBc4ipQ0cFYOYeaNMRb+zdBt2cnfinxNnIlM7vnh09HJIlY0162I+HMP9Gtu eC6bTKluJCDGX+MtKnqSRlvqXCImge1RNEBlijR9bjznmL0NL/LFPXAz5ukkf8Z+Opw5 lDoDkMFP4zIsERltI1C5LssPmDvJSvm2+2iKgq2pKpq0q+W3cdwr3IQgsnhIXt7NG8qr qIet1qTpTz15pnupNetp142Hy08mQ/nMGFCihiaoFWfpZ8u16bOmD3CEgL9brnGLjQe/ 2RHLHNUg4TR3D/z9SpPDNtCphF8h+TSEoM/uCsQF+nPgS2+WQb+ajxhUmyN31R31l/HI iJfQ== X-Forwarded-Encrypted: i=1; AJvYcCWKkroTKCxqAla1vvsVuSxJFASKHpPNF7VatvoK7hzyrZkJBCslxdNId3FuGt6whkHDO4B059UPQVX98WIYnG/4UhtZOq8V/JiPdof2 X-Gm-Message-State: AOJu0Yx7fZ7Ov1/HDwHvVsXR51Q7tTXuCay15pjz2vRl2iKKHlMqY7IK EfBhLXoq5dn5n/U/MwQTLMmzL7R7yBT5bz77pcxb4nSspg6Q0lsqUzQYRwEGInQs3Gr3nGIx0MU jegvyLA== X-Google-Smtp-Source: AGHT+IGPaYTWA7DQPmtXyKutHOy7Zf8bDiW6iSVJS0oNgfz+N591zshd8V9MDXT27vNWrKGa9/wDtpZ6/gv5 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:7908:0:b0:609:2cab:1bd7 with SMTP id u8-20020a817908000000b006092cab1bd7mr635579ywc.1.1709319418022; Fri, 01 Mar 2024 10:56:58 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:57 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 8086aef3557a..2e076f695292 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -784,6 +784,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") @@ -920,6 +946,7 @@ all_metrics =3D MetricGroup("", [ IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreCState(), UncoreDir(), UncoreMem(), UncoreMemBw(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 5A6416FB80 for ; Fri, 1 Mar 2024 18:57:01 +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=1709319422; cv=none; b=dZNSdwn/rtLHovr0POsJO6aDfX0k+balhIfXWeDfJXEoQu88UvKslgjZ1VAdN0UZechyQuESKyrF3YYa60E7lQT2tp2WVoOSs5yNaQwWqW4/IARzExxdhvxFxIRezAN577xU+B5055oX62Nng51RbXDSme+jqDrodkyAoh8OhY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319422; c=relaxed/simple; bh=JNlhdQ95scJS1Q2EhZ10SIKN+JTQT447NTNMbhZM01Q=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=RBxM4++zy2uEjsJKA4DAE09S3O/E4QQuVr8s0PvCnEiNpKYSUT/t6lTb+DB+dASiZRvMIuszckO6VhCj16DVoWCO4W681hBFpXhGuGJi0k+Q/Vw/0Mfgo1FhgwGb3J9Af6HU02f9uVuerh5wle7SzgWbn65J1MB2I2S0DZCRVu8= 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=VMQwDk3t; 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="VMQwDk3t" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dcc0bcf9256so3564353276.3 for ; Fri, 01 Mar 2024 10:57:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319420; x=1709924220; 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=C0LitAivSVkSNkxIQWgisNIRh3jWm5LVjR7Wq74t4Ec=; b=VMQwDk3trzRDd9c3xdSoNQui1Az+eXf51DIaOPpI1ONuWdAXqNfUmiqjicHfmfDruO XB2srp3cAVn5cX26mGXbDVVhub00Td5RGCAXhS9jDnsVRG6hrUJ09uW8D1OyW94GXivi Mdy9mbMn0ynhVomEzUB2JQAwLYq2qJpk0HdpCfpwWvI1syhkdwsTiJ+qNFmYkSfM3NY5 xBvBil+ZN51w1CmtVPg63Fj1DQp8l3hbwe7lRMsaYnnMvenlTY32AmQEaVVErYNJMT0q bl6ApRD5qO+E+F3EM/AIq7Xa6LDYGb6U/e6BP5lzebMbZ4Chu068XYPokAeRmscFUAqI tXdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319420; x=1709924220; 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=C0LitAivSVkSNkxIQWgisNIRh3jWm5LVjR7Wq74t4Ec=; b=Q+hL15yyuxGmFu5H1SF26TfRWN4XfSLsZzjE4rf+zdihMhI0bv3Enk76EdOIHegBdS jZEH1KEBpD8TaVhbRoSSitxmSnVzh2ZIa+K4s1V2AZkgk1xDMbQ5FMfAyzx+Q14a8klH H0cXM+a/yv+WrKyGGpPUB1sVQZPqEB/0Tf02te8rBSbyXqHZLc8gckCYtkzev0kTPB+N ZR75S8egjJSRMp+HseJ8m3zkVcpLs0vuIdez+mUbIUjYfJzxb26Bdh7Y6b5fcuBSaS+g F76+omvUUSYlAfEzzYPIQiFWb+Ms3d98C7B14jyf7HOnkSLQo4Rh4VflMiepiRrYrS+W X0tQ== X-Forwarded-Encrypted: i=1; AJvYcCV5WIAWIxPTfoL1ITruokjA0ppBWsKnTHcL2wImqEN+QQOTnaG89w4N1n6ApaJsLqnbvhYXVZY9PrwX9T8puAg/IxFi6eHVNVi9idVN X-Gm-Message-State: AOJu0YxgEKR7tDJ6hQJuA0hikWTl1R+IkeLHnECT/I/gwYI1DcAm4WfG Bzb5naYby5ZJBXWr0M5RFal3br3FRe9nnt+LWtT7Qrlx5+rbTaxAnmvybuCHuiFBhYcwSK1PDD3 7PK8vqQ== X-Google-Smtp-Source: AGHT+IFiik1twHkySjCG+q0PZLNGQ+/qXzURw7UAUGAHx92sAQlAJmGQax5Fwa+zn95yKD6Hm3P8+q9WrJlk X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a25:a009:0:b0:dc6:b982:cfa2 with SMTP id x9-20020a25a009000000b00dc6b982cfa2mr89928ybh.8.1709319420327; Fri, 01 Mar 2024 10:57:00 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:58 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 2e076f695292..fec8dc23f475 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -601,6 +601,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") @@ -943,6 +1001,7 @@ all_metrics =3D MetricGroup("", [ IntelIlp(), IntelL2(), IntelLdSt(), + IntelMissLat(), IntelMlp(), IntelPorts(), IntelSwpf(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sat Feb 7 19:41:06 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 00A343B293 for ; Fri, 1 Mar 2024 18:57:03 +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=1709319426; cv=none; b=hbxESSp9dtWwkDPQP/yx9mCSIJTChw1kPeiaGPsR/ZDSFi35CQGZF8qHWRflDldkggKb28xGg04esj+dK208kd/IQQmYXofVgfdpIQfbYml+Z5RwIIOKbkgcjNvJDN6ZsqRx5neyJyBXChYkuXUs8aLq6I5XLFVlF0L+mBsf/BQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709319426; c=relaxed/simple; bh=0GwxMF9zq0iQE2g/LR7Nppd8iDmEHy9zf2CgiW+kRNg=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=GTdFKKT+cTmDSh6dTOmGdUmWObMIO9Xzxzdlfwap3IgyAYMRumjiKLKONC4/CCoXzrXmTuCuNYRhgxRyXgoe0w/S1VmWWPmem3C6P/KJsefGbLAUfMHoDDCBFH4hp/4CKQwvz6x56MRm+j7lWPWPJ2xPWlHpZnKyko9chmJgc/A= 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=T0jujN/A; 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="T0jujN/A" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60832a48684so34393067b3.1 for ; Fri, 01 Mar 2024 10:57:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709319423; x=1709924223; 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=fo96hrchgf3LWlHf7KBd8+uynqShNfYHYZPYMJSMK2s=; b=T0jujN/AZQjr3lOqDNc7kcB7fE8SKc3QUXTo2yQmFyshdEcJ8k7wE+qyanMnVDN/Ar WN+070FwOMK4N5wAGTT2u9TkdR65G+UCXtulSqqtSdkyfJce+fL0hLtprbJzhJuPPdu+ WcnjUgGq1j7k9oisfn3/YFaRMnSYaoVvh/RerFNIJbcZz+Ra763j/A4suKR90P93JfG3 aGvi/B2i+fxr4N5+Hx/Pbij4ncOCd4KJ6eXjIwzc83PRz39SwCjhFXgkbVVLPAF7/O2w LJ1XbaUEiWhpOMzE6EUf0HxvP51ih0lef7scS5z7S9IpCA7h4S0dws/G2OZ30rhIBJye LtGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709319423; x=1709924223; 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=fo96hrchgf3LWlHf7KBd8+uynqShNfYHYZPYMJSMK2s=; b=Dj0u7JYwAtC8I/fga/lboNyior4ZkPphaCV3si5u0MW+I/ZPLcbRcrh0f+uUie/XqQ thcL1HikDKd7UfebG1h7gPVC3A32VKwtUnIh9u+Mq0IluDb5qEP6R/jL+YrzpIoJogxD VUQUrVl6wTixzjn6is0nUljvI4w5U9H4S77sEPAMoxIWD91t6Dkb7mYOhjoAX4ZQ3KNF jI6lPhPZuYUbaJ1rNbSPFiI+aMqYHKwjJ+R35hQDDtjoHVaDk/dB3+aGdyNzj19Vs3J3 RQ3eIpkyHbIWxsh+jY/NjjNq4cOaO20IdJ5f29EAsOKQFjtNH506xzm6sBvMeJIbkABV noKw== X-Forwarded-Encrypted: i=1; AJvYcCXYaI1CVoHMnk3xF4HFyRLYsxuSPeCyuBXhboHjJz8quO334PO8gRMVGN5hi+D4SVsiEgdTKCVKqGjArGCPRfFqpEIfOp29Dx2lB3CD X-Gm-Message-State: AOJu0YzV02Qx7LvRUb4w1cwt95zrHXkXSMAsJJI9W87yz4ieKOR5s/vU zRFHfcRfhV9vNrxLE2MZsPN5jmmsLBIuCKLcWjFUbpV55K4pIV8fc+zjDb21X8K9S0Nzdm62fhp qyw/nug== X-Google-Smtp-Source: AGHT+IGEtw0NhNZNNzxM5AZXFUR7beHFvrjDXANVJCH5+8swKWQ+Zf2DeohiorrOBaHw/YadX2Dc6WCBMK9N X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:af4b:7fc1:b7be:fcb7]) (user=irogers job=sendgmr) by 2002:a81:9950:0:b0:609:4d6f:7c0b with SMTP id q77-20020a819950000000b006094d6f7c0bmr473516ywg.4.1709319422982; Fri, 01 Mar 2024 10:57:02 -0800 (PST) Date: Fri, 1 Mar 2024 10:55:59 -0800 In-Reply-To: <20240301185559.2661241-1-irogers@google.com> Message-Id: <20240301185559.2661241-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: <20240301185559.2661241-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v2 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 fec8dc23f475..859447d558ff 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -990,6 +990,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") + + all_metrics =3D MetricGroup("", [ Idle(), Rapl(), @@ -1009,6 +1030,7 @@ all_metrics =3D MetricGroup("", [ UncoreDir(), UncoreMem(), UncoreMemBw(), + UncoreUpiBw(), ]) =20 if args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog