From nobody Sun Feb 8 07:26:48 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 E59E1134C4 for ; Thu, 14 Mar 2024 05:58: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=1710395930; cv=none; b=FS7meh+z/it0YObQr6vkW0s0DYEXj211QIogaerRw04eQGgUwLlGfv8maSC4TTFr4dHTUr5DgKdKnm+PY8+Kr/K/tRFfstBa6vbswvVMPlg1Y7QUu21asiJ19LWuG7PO0yzuOwniA3RY/qbzlVr2R7XRnnOO69jBxg+c2Mrvrwg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395930; c=relaxed/simple; bh=IAzSrx8t9wZGU/Nqcs1fpbJl37Ev3p1nvjGgwwav/B8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=szHrD2DfBdP7A35likj5NcXksxaAC+3LXWVtXv7GlKgZXs0z6GN649vwjtnXRKr9Cy7JDmBt/2rgzfXJs+23rTP5yVjLXxXLdgzJCsJOidvD0Wav9y6aYHENqVYuRzFRtnnszLpQsnA9DmNEdjpx6GudO4Mmhrnr7zCsSDbI10s= 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=3pU4Z77X; 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="3pU4Z77X" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60a3bb05c9bso13277567b3.1 for ; Wed, 13 Mar 2024 22:58:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395928; x=1711000728; 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=sDxyhheMDipyi/5Jry1qvhK6C7MfhuZSSv07ekPBo4g=; b=3pU4Z77XoAJ4GqJpDD1QGphlJfbiRYlR5HxkcBwd2g2FTAIQhz0KfVd2Ruca2mdPgv 3rk/NBofn7KMdYz8xbE6mz75zRv8S+IqRDwlnusAiCkR154IHGzAIzj5cYfMgQoOVn9i oTmZ40X2hEdSTnD//G5aNgRsEurUTeMkxTRyIkfp8Y2QxeJ8JdsDaq/LOmeRkgVNMqCT LgrpNDj99rvGxPWwo+kbdvg5bYfGIiS9G4WE/ILz11yr38sDsUDn0xAiecVnqDaqTbHk TmPxMQ5tcN1P7yHhYOVTD5o2Pi+k6Ni5sVNOyAGvt6v4dTBvKb527hR/AGTnuI3fJ8fG X/hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395928; x=1711000728; 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=sDxyhheMDipyi/5Jry1qvhK6C7MfhuZSSv07ekPBo4g=; b=bQcc/wiuPA61pMDkAAFW/2kd2QOINZFSXLPoDY52XnV+PX20i3nVSsJ4gYvAS1MS76 CdIC/xJPNyGVO+kXb3/jAsKOVqi2PvEKDYIyG044iqQV7c4p69SjtSND9DZrhOF9Gf3K 26JEBd5PuigI/15vhjuldFrXjZebgJqsokjy8UfPQiUZ2gU54nGmhoE8+TzjD6iOFF5o uuIU8WrqJlLn36Ul1cexUZWHcQcp+ub70DDbqSWg52w19Hxj6MimD2IitrFghmrGJO4w 6oBDJU7xpNapSflcma3rFjtT+y1OUUUUoE+ztqI4aEk9NE91jBGQgAYSlrepfRDSMEp1 qRYQ== X-Forwarded-Encrypted: i=1; AJvYcCUjTCWgd9tuGr121n/6cuIMgO6c7i+WnYBs+gby7xAy5XX0bWbGXqN3nD+QfvgPID9VEeMbc15LRdq58NHGB/dcCXAJkCkMcmQn7Zz4 X-Gm-Message-State: AOJu0YwzUjN1hp1b+Y6cwxtotDzfOPyaL+n+1qWqmJvv/rAhyGlicCNF qJ5Kg3Zfp7M4RRrhVTCUhWsj/eqICQzDXHgmzYA+kUy8nINhRPx6fe0YF39TP2uQ7rentgTGED4 2kznxHQ== X-Google-Smtp-Source: AGHT+IHRwEuxnC8JO0B+y1dFjOphGJq4fjARgojy/F0zQnf1VZ05Ad0QH5HbS6Pih4J/wF+nsi85MX6ELHTb X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a0d:e210:0:b0:5e6:1e40:e2e3 with SMTP id l16-20020a0de210000000b005e61e40e2e3mr149832ywe.5.1710395928192; Wed, 13 Mar 2024 22:58:48 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:28 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 01/12] perf jevents: Add RAPL event metric for AMD zen models From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add power per second metrics based on RAPL. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 31 +++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 4f728e7aae4a..fd420466b999 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -1,14 +1,37 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -from metric import (JsonEncodeMetric, JsonEncodeMetricGroupDescriptions, L= oadEvents, - MetricGroup) +from metric import (d_ratio, has_event, Event, JsonEncodeMetric, JsonEncod= eMetricGroupDescriptions, + LoadEvents, Metric, MetricGroup, Select) import argparse import json +import math import os =20 # Global command line arguments. _args =3D None =20 +interval_sec =3D Event("duration_time") + +def Rapl() -> MetricGroup: + """Processor socket power consumption estimate. + + Use events from the running average power limit (RAPL) driver. + """ + # Watts =3D joules/second + # Currently only energy-pkg is supported by AMD: + # https://lore.kernel.org/lkml/20220105185659.643355-1-eranian@google.co= m/ + pkg =3D Event("power/energy\-pkg/") + cond_pkg =3D Select(pkg, has_event(pkg), math.nan) + scale =3D 2.3283064365386962890625e-10 + metrics =3D [ + Metric("cpu_power_pkg", "", + d_ratio(cond_pkg * scale, interval_sec), "Watts"), + ] + + return MetricGroup("cpu_power", metrics, + description=3D"Processor socket power consumption est= imates") + + def main() -> None: global _args =20 @@ -31,7 +54,9 @@ def main() -> None: directory =3D f"{_args.events_path}/x86/{_args.model}/" LoadEvents(directory) =20 - all_metrics =3D MetricGroup("",[]) + all_metrics =3D MetricGroup("", [ + Rapl(), + ]) =20 if _args.metricgroups: print(JsonEncodeMetricGroupDescriptions(all_metrics)) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 42E9E13FF2 for ; Thu, 14 Mar 2024 05:58: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=1710395932; cv=none; b=CZTIboE4Q+QgPvd4RqM81qiurAUx4YRODdKVIwzXQ/BhjptnYtwtAX+B8wVnM6Ow7xMA/KYnxFivRghRIlFxHD3P6pc5ZvYC0mJkt3q6IAxY8iRa24+ooUFg0uGlXvctD9vWHCFM+Gd272BB0XmSspOLIdEOBGNKpf/Bh8WhD88= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395932; c=relaxed/simple; bh=ANNGBGcZ3vDgNq3zL21zrHIvWLxXdmT224ZJ8sCgbXk=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=iEIaXNaqcsxhfI4VAHiwvO3Kv8P+aCoeGvv6H3CSugCGfvAN0D/FGnMr/MlHJ9dFi2rGTYDQCuAgImMDqpNVM2+N3p1fOe74ZyQcFtMkBqTZ0IyPqnKLOEq3diiw/GcwXWqVostsdss4Pwsw8XHO+BRH8V0SO6If4he9eyWe8oo= 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=IgvQmxMm; 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="IgvQmxMm" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a629e2121so11859427b3.0 for ; Wed, 13 Mar 2024 22:58:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395930; x=1711000730; 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=OEqFUQsewVgNTMEeM5wU4wFjtSmvLCXeb2V2OfeYmrA=; b=IgvQmxMmCCmcOuj/Cx6M8n7hVRHZ+64QVWIp1umzp4RWmVZlBKKlmNJlzOMhiLAKgU D2ehwpsf3jngvFbVUMYBsflj/GqFhSBes9fPwrXpRAlbs7hLwDC1qhu4CerFWh+vE+2E XewRJ/xPXUerSwhyoFsKT8lVDA99JORsRCNYHw939BsEaBWLURVle/CzrV0ExG1S/irc 1vc4zWfxjPQ+mt6sKxvUBt5Gt26AyDxnxD1bb9qbpo5KSAjlCs8p6WIGa6/WMTG0Ry5z ohWBOMRyiyijPYl7Nk7LCbp2vJGfk8mwJPoB+ULQpjDczC7gjFnLmIEPPzbzauphBOHG CCxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395930; x=1711000730; 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=OEqFUQsewVgNTMEeM5wU4wFjtSmvLCXeb2V2OfeYmrA=; b=XmV9JZ1MAWEdE2uC3p/VMFP4IV3vTJtOeIiAvF+3CmBd18OWPGLQes1bsSuFdy9wvP Ehkfon6jP4VyGqmytp61v4/v58fWlvbMYE8lEd/r9a3KNx3vLPbPJWHZMMkxNo8IH6+M GrNijTuP4i4KOVfH+ghkbCau435oRL2w/xuLJAvpUM486XYaYbD1LqfqjGw+ElJfRcF9 MnvJGnaJNZTCKBo6caEIeQ+HX8c888qh2aB0wENgj6Ig5Cssb8PBNrm+whQ2VbgomOKy HY2jPscMrpISompdzcmjVnqYgeWqscFJEIYvTLImywNm3u+Ome6mz8DVtTZ9tE0mz9VX dFGA== X-Forwarded-Encrypted: i=1; AJvYcCUeJqJVvbt8nDlc4xwQkh3Ke/5hque4wZu8THG7hnYWak8hrjy3h5BLAxBhKN7JUc/y9/MADv/d9WgDFpVUk8AauO2ibOFyTiHwlIdY X-Gm-Message-State: AOJu0YyM7zs7OWb31jrShT++RPVv75aKUQn3kP0ImcecGbirF6j7Oudr UP0GprzlUS5QyeCLcYgaB8Fnq6is6suqcaSb084n/qt8acFfY+1zjxDd7B2iWO0zajW+8q+cW8r Djcbdfw== X-Google-Smtp-Source: AGHT+IHT5rYavCu3O8x9OWfHu1PU/pOaCHZYG/nQxLnQ3Zyb39rA6u658fANhWXSCYfWQxXIQEfB/afY9/d3 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:1a45:b0:dcd:88e9:e508 with SMTP id cy5-20020a0569021a4500b00dcd88e9e508mr252693ybb.5.1710395930282; Wed, 13 Mar 2024 22:58:50 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:29 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 02/12] perf jevents: Add idle metric for AMD zen models From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@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/amd_metrics.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index fd420466b999..e069b95d6470 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -from metric import (d_ratio, has_event, Event, JsonEncodeMetric, JsonEncod= eMetricGroupDescriptions, - LoadEvents, Metric, MetricGroup, Select) +from metric import (d_ratio, has_event, max, Event, JsonEncodeMetric, + JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, + MetricGroup, Select) import argparse import json import math @@ -12,6 +13,16 @@ _args =3D None =20 interval_sec =3D Event("duration_time") =20 +def Idle() -> Metric: + cyc =3D Event("msr/mperf/") + tsc =3D Event("msr/tsc/") + low =3D max(tsc - cyc, 0) + return Metric( + "idle", + "Percentage of total wallclock cycles where CPUs are in low power st= ate (C1 or deeper sleep state)", + d_ratio(low, tsc), "100%") + + def Rapl() -> MetricGroup: """Processor socket power consumption estimate. =20 @@ -55,6 +66,7 @@ def main() -> None: LoadEvents(directory) =20 all_metrics =3D MetricGroup("", [ + Idle(), Rapl(), ]) =20 --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 353A914AB0 for ; Thu, 14 Mar 2024 05:58:53 +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=1710395934; cv=none; b=L6rrZFnE7+OwUyuAgABf9mVRorN+iYPrJTjBrvxKfQOtu/0ydENTP16Vw7og4V8tiM4jrEC9RvFNrwrW5ieVvaTdNTYDP6vxpjyJa+vI3+7f7lc95KshO7xAOPF7jY2LelMDk4fIijlcd0ZtfbQoD6W+NDNnmqkGZsbYIF5zSVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395934; c=relaxed/simple; bh=TmZjr1X7q9cH5lQWNtCsYCRCu/YSYQB8OaB2AWUPRcA=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=rVKyXR0GtxAC3CMHvQwbhM4NmAssDsGCNOfiSCUd9iwDG4MA56IvOMs8EctjDqJ0ulBP1b+XDNm69GXGsNV/h7aHhPhVGGkTmMTP1RhHYzCTa8P/1X9zJeC8gkSlZpPeH7oFvqMWa0v/gGV4qs/jRYG32DSF17nQpiun2FhNrfg= 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=EBhAJVK5; 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="EBhAJVK5" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60cbba6fa0bso14084837b3.3 for ; Wed, 13 Mar 2024 22:58:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395932; x=1711000732; 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=5kqjdI3Mz70ShPxJH/La6sSgiKNcz9TbPXqY+nxcV2M=; b=EBhAJVK5PnGtR8OPR1NG+3ArmxY6TXNyhiof0bifQGnZB/KXLKCAO42cG+fioTT/R9 BE1AFSnStU/jgBG6ZNGFjQfnifqukKY+3WV8k8IJuftGERZ+MGofiyJm7jsG9qihoLDj sWWmdGxYKucAjs9h4tvsr/SBpNhpUyPbDSE8Wy4tqIZpDiBIfl5Kk0GLJYecnLH/uaxH M7CNXFxrNt6GdKJpYKq5z6ogixSHWA/l3fSpvFIGrKetvb+DsImFlzFgHPK9YJQ8iGoO lsDvo/FUqGqtRHjj3gIJqh4ug1mEIVg5ICWgIRWvnPUcCkbny9eE/CIja3AwsAHFS8yD 5JmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395932; x=1711000732; 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=5kqjdI3Mz70ShPxJH/La6sSgiKNcz9TbPXqY+nxcV2M=; b=mejwGPvZcesxFn0rS+L0u+J6vnUqqFlKoOrBNySUGrj7B66M1c4vSLln2AnFm0UUlh kCuznKcPtHaWVB8LvEBHMGOlAEl/ZtlgmSSihmWOYQY1u4CygWrEKI+IazyEJ0OyQ2xr CRlwHfqENvOAFeAfR0NlplKR5PxKr3gZMhMaqGEXg4iBOONc38LlEgnZpR9OFeBtQ05i gdgjTC1HsYrJy+UTFWbrbGpjugYCPri4FwYaQQbyfzoDs3tDt519P27+keW1aJIVmU9J k8AKYfjFWEV66UNjdjq1zdMzkehrMccobDeAD38Gs1xBaFKYhL0LNxvKtWwL/PhQ7y4P JdFQ== X-Forwarded-Encrypted: i=1; AJvYcCUpfgAS5Gu34F6PkuTSKJ6aimMBhBYTF9+MQ8MtnT2CWab2tXDTW6PNn3Sueedxa7PZdcdZCjapra0MNPTvzuWF+qVW6Wv4WV/b7+ev X-Gm-Message-State: AOJu0YxBwiOwblX/fJA0XrEhTD0CUyDMBxSx7HXMad5ffPs5lCpk3BRa 5fLdEZ58j/sFxPV7Lm/68Mlxv7LgKEM4DH4giJTtKoebntdU1eukMjXbZGONHmxUxG5b+Md2kJ0 JtWyqFA== X-Google-Smtp-Source: AGHT+IHnDGcpkrYyy1dIlgPlwKh6DeetOXeGIVDucIy4Xp2XHB5PqzZtCKmDu2XfMYM5K7xn9HL8uoH0G+Bp X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:220e:b0:dcb:bc80:8333 with SMTP id dm14-20020a056902220e00b00dcbbc808333mr211969ybb.13.1710395932244; Wed, 13 Mar 2024 22:58:52 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:30 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 03/12] perf jevents: Add upc metric for uops per cycle for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The metric adjusts for whether or not SMT is on. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index e069b95d6470..c64470d4822e 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) from metric import (d_ratio, has_event, max, Event, JsonEncodeMetric, - JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, - MetricGroup, Select) + JsonEncodeMetricGroupDescriptions, Literal, LoadEvents, + Metric, MetricGroup, Select) import argparse import json import math @@ -10,8 +10,17 @@ import os =20 # Global command line arguments. _args =3D None - +_zen_model: int =3D 1 interval_sec =3D Event("duration_time") +cycles =3D Event("cycles") +# Number of CPU cycles scaled for SMT. +smt_cycles =3D Select(cycles / 2, Literal("#smt_on"), cycles) + +def AmdUpc() -> Metric: + ops =3D Event("ex_ret_ops", "ex_ret_cops") + upc =3D d_ratio(ops, smt_cycles) + return Metric("upc", "Micro-ops retired per core cycle (higher is better= )", + upc, "uops/cycle") =20 def Idle() -> Metric: cyc =3D Event("msr/mperf/") @@ -45,6 +54,7 @@ def Rapl() -> MetricGroup: =20 def main() -> None: global _args + global _zen_model =20 def dir_path(path: str) -> str: """Validate path is a directory for argparse.""" @@ -65,7 +75,10 @@ def main() -> None: directory =3D f"{_args.events_path}/x86/{_args.model}/" LoadEvents(directory) =20 + _zen_model =3D int(_args.model[6:]) + all_metrics =3D MetricGroup("", [ + AmdUpc(), Idle(), Rapl(), ]) --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 EB44B168DA for ; Thu, 14 Mar 2024 05:58:54 +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=1710395936; cv=none; b=BFlUSsfxf5J66VYloi5Hm0zUlgepvLK6lHmjATi2KSJbjGbnUlTTzO9c6f/G5cxt5MWGLt9NFAbsHBKlDuFNGCaWGDOBkviIEtWT/nOC+3i8XnX8nXN/qfuIrcOcZrndP1fwaNq67uxYC0okAc7vLMdUzEeUjGpIPtKHkH+tJlw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395936; c=relaxed/simple; bh=1aTQAgc1+FUV3JZPE25wSRhpJaaZ7z2hEU8jOaHOcOY=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=evRNJg1MU8zuvgIcsjIHjeVwi9+TEL3m6chI8brKgEuReVZosfuxAu2cZAFwaqC98nFLdiF9ubLFnWCkbpCArXb5pWRMK0sG0K/1655rb3J+3dy9tv/+FVccCHo5huaEWFZlx6ITLbeNQuMjBDgO/cscF8jw8RnyckrdkgNbBDk= 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=aDDF1mI9; 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="aDDF1mI9" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a0b18e52dso7643327b3.1 for ; Wed, 13 Mar 2024 22:58:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395934; x=1711000734; 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=xDtQKHb7FIK3RKA97IRnCPyGvKIoLbeEOtfXenAPU+w=; b=aDDF1mI9Jr1dz5FZGsa1CHAlGjmGG3ATW8Fgtb1gmA2wS1+mZDPDRAjtWdA8m7G8bA nwtxVWhFvwCUBDmfuPgsaxSWGpf/O3Nv5Tn4Sp3D5uoimXMrf0HCOG0D/pYNmTkpyqPs hrlzayQfzmmU+U8txZS8sXdfEM4L1TlPLQOjva2GpKsb3DG/owS/ZvV3cV3m7qudxL9A 0ySYOu1gGzQF5U/GebGjpeEudnZ7dWmHd0VH8uP9hQRrZOHwakPV2aoGcoNiK6+otkld 0XfOP6rfiwd8g0kjv/xCE5OB4uXTTspOnlMEBk3yFH/jbRmTMuZzQDvfsQKSrqseey4+ qZmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395934; x=1711000734; 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=xDtQKHb7FIK3RKA97IRnCPyGvKIoLbeEOtfXenAPU+w=; b=cS6ckqIB+fS1qArjdCb3P6tdeYBaqjfVeioOlLK/GfMJUzKRLHzX48NfCd8VrVrSA6 0sU+GTt8SOjg5+IKUBuHN04GO3TAofEbRXtCfs6GkZqslAPo6qYQQyLQDcKgtA0NCwzY +9Olk0RWgGAjOutH2++ZZVG5HYIZQMAtpmtvA4fzqqNyUvhmPsBiqIBeQIzJG214Jmlf oZNRfKSQLXAUuV5wVibJrunX8JSK/FaattoPvB/eJ0PSfgEPQCzKTIIrfCTZws9x1CFf 4B1DN9UxtlG6yHG++DbMaQekGzd8pe+18+t85ctCK0hYiO3Wb9XTXw3UoItPlYkQfRF5 wSog== X-Forwarded-Encrypted: i=1; AJvYcCV84w96yyn+pV0yQsA9G8WAib3s+2cNmNx5o2j8lf44mzpxkjDRwoiqsGRgNBjj2cz31mmjqPKkUI8ujl5vkqkpEyuGjmuZnFz2LLcF X-Gm-Message-State: AOJu0YyXZMj3YHtJ2CAjSXtcAdbjEYX9C/FpXClc451AkvaybUYzyyPd RfkUcBU4T8HViEfeI5L2ZFkxFySk0K3FVL79pO9qGogT95AJptThuz6K/YDKsSfxeNg1hWPTJYU rXAHdpg== X-Google-Smtp-Source: AGHT+IEJ8B3EIxhKlxB3fmkLM4IXaBlERvuraNfoOEV2xzDcBSpZhi2nZqvRMYbMZYe/L0moJuzyDmxkri/N X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:6dc8:0:b0:60c:1a1a:657b with SMTP id i191-20020a816dc8000000b0060c1a1a657bmr229501ywc.4.1710395934222; Wed, 13 Mar 2024 22:58:54 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:31 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 04/12] perf jevents: Add br metric group for branch statistics on AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@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. The lack of conditional events on anything but zen2 means this category is lacking on zen1, zen3 and zen4. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 105 +++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index c64470d4822e..90545d4862a6 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -7,15 +7,119 @@ import argparse import json import math import os +from typing import Optional =20 # Global command line arguments. _args =3D None _zen_model: int =3D 1 interval_sec =3D Event("duration_time") +ins =3D Event("instructions") cycles =3D Event("cycles") # Number of CPU cycles scaled for SMT. smt_cycles =3D Select(cycles / 2, Literal("#smt_on"), cycles) =20 +def AmdBr(): + def Total() -> MetricGroup: + br =3D Event("ex_ret_brn") + br_m_all =3D Event("ex_ret_brn_misp") + br_clr =3D Event("ex_ret_msprd_brnch_instr_dir_msmtch", "ex_ret_brn_re= sync") + + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + misp_r =3D d_ratio(br_m_all, br) + clr_r =3D d_ratio(br_clr, interval_sec) + + return MetricGroup("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") + ]) + + def Taken() -> MetricGroup: + br =3D Event("ex_ret_brn_tkn") + br_m_tk =3D Event("ex_ret_brn_tkn_misp") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + misp_r =3D d_ratio(br_m_tk, br) + return MetricGroup("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%"), + 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]: + global _zen_model + br =3D Event("ex_ret_cond") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + + metrics =3D [ + Metric("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"), + ] + if _zen_model =3D=3D 2: + br_m_cond =3D Event("ex_ret_cond_misp") + misp_r =3D d_ratio(br_m_cond, br) + metrics +=3D [ + Metric("br_cond_mispred", + "Retired conditional branch instructions mispredicted as = a " + "percentage of all conditional branches.", misp_r, "100%"= ), + ] + + return MetricGroup("br_cond", metrics) + + def Fused() -> MetricGroup: + br =3D Event("ex_ret_fused_instr", "ex_ret_fus_brnch_inst") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + return MetricGroup("br_cond", [ + Metric("br_fused_retired", + "Retired fused branch instructions per second.", br_r, "ins= n/s"), + Metric( + "br_fused_insn_between_branches", + "The number of instructions divided by the number of fused " + "branches.", ins_r, "insn"), + ]) + + def Far() -> MetricGroup: + br =3D Event("ex_ret_brn_far") + br_r =3D d_ratio(br, interval_sec) + ins_r =3D d_ratio(ins, br) + return MetricGroup("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(), Fused(), Far(= )], + description=3D"breakdown of retired branch instructio= ns") + + def AmdUpc() -> Metric: ops =3D Event("ex_ret_ops", "ex_ret_cops") upc =3D d_ratio(ops, smt_cycles) @@ -78,6 +182,7 @@ def main() -> None: _zen_model =3D int(_args.model[6:]) =20 all_metrics =3D MetricGroup("", [ + AmdBr(), AmdUpc(), Idle(), Rapl(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 03AA211C94 for ; Thu, 14 Mar 2024 05:58:56 +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=1710395938; cv=none; b=rod/zjKZ+U41u8wXjWva9QJfdxorNbP1RLdBD72zOCHRFgpN63wAlKfhTA4u5Mh78OfUKlt4kxgiI1bNseMokw/cQnreixP/YHWqB1y8oxC67soaKd+x/Qw+nYqI4gt2/OuPCabbmTX5BNUF1JQz8WG3emnqjXzzVG/bCd+4h3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395938; c=relaxed/simple; bh=TvRZPjew8/CPgNR1zc4nGB4ze/mcB2Jah94Ua4LIrDA=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=nkHjrJgBGx1j6XfDE8nuOTTomn8snEVgoQykKVjfCOUuEaFpK2fHFnhW7Dv8TDaZNi+Qg5w4cRuZ21i2n++i2tU+Y4wF0fIs5USzAKSbYFlellhjI81bZnNaFnCbiZqcolPUC55cR5HnRD5mtcNaASSQMe4HD/Qr1+b2XU+v+Ak= 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=eK6XCDbo; 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="eK6XCDbo" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dc647f65573so981878276.2 for ; Wed, 13 Mar 2024 22:58:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395936; x=1711000736; 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=Rxi4fggPixiVFuhVXSoHQicrKYgfFvqkEeqWtSPSm6Y=; b=eK6XCDbo6nejD30dAtdZoBZ6Wtq5PQZcIhOe24TVQs4Yxhl7C3pHZ9KdAiP6yn39eH 6cBC6/vh8Q3AuHnVAjgCyYpuwVp8+nmsaXvuEfpMKbiAAYvhXTR8HRf7UssBon2VkYWK WRHZdi+AXdZzUp6/9jAAv8H4E1De4i1uCzN7pAwiRda2D7Yvtgw6kmuvBpQz1KRvI95a Ud7k75uqhxjeXqASmEE9pmGjbeTUjRIhQN/398Zoyps4C6Z8nbw/eAQYwZYJ9YhHOTh1 MAI2JNk1z9Wh+MgICyYvYyZ/RARMpqm3diHR5e3dPqlD29UIOBZlxhpl4+V69TIstYmy +WzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395936; x=1711000736; 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=Rxi4fggPixiVFuhVXSoHQicrKYgfFvqkEeqWtSPSm6Y=; b=Fov5IJ2ZWwR9ZTuIo2nz+JzmW12cdm7Dk4iEDIyxhGiFlkMs2ghhAX2DjsLXEdhe1Q fdc6Y6BMEBiFdt2uwVRvgQnSGjzk5bmX1+YwFOSYYlwEOh5Nj0U4dkXCusD/15miByWX 2tlPInPCHAhFvTCGkxcZj+x9EzmtyViq39/T6xD4qrW/egO2r+Tg5065LGzN5MvTVEY3 eMwft5H5aUtv5osj+1yKV2XjHxmm3d7uZ9Vzmhl1L7tBGuTRYASWw95dSQBx8N4HXDsk fAwRndbTp9M/z09xUV7NBP3JcBxWZ6ZLswz1dlWIaLCeBUHzSOfFNj4G5aOP4zltSO3D M+EA== X-Forwarded-Encrypted: i=1; AJvYcCWTYrXOOeYjDilfwr9Xn78MeCLF8Z1513v0aTMywoUOhCFw9hWqD8qcp8k9lcsU+s3c4cD6VChQwGAlKdChreoo8QsA20sKbIbddjkO X-Gm-Message-State: AOJu0YyxrRuRT2sVgAFy47DFkxbC9TKn+KbJgmgWIi/5/+v614758b1X ZWFfteIpJJ4Mow6+IER6RREBOtQT8T6HKgXIM8Mt0epAzMA5pVhZbb/CM3v7VQg5UMv9CyhUWm5 aYOrNMQ== X-Google-Smtp-Source: AGHT+IGPmfRPG1o7K6/hSQPRpIO4pPp4foG2pF0la5o/tucMPboxCnzp1c+2tet24X1PfQJd6ag1r4AFNKcE X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:72e:b0:dc6:e8a7:fdba with SMTP id l14-20020a056902072e00b00dc6e8a7fdbamr253985ybt.4.1710395936161; Wed, 13 Mar 2024 22:58:56 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:32 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 05/12] perf jevents: Add software prefetch (swpf) metric group for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give the utility of software prefetches on zen2, zen3 and zen4. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 96 ++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 90545d4862a6..9551b44dbbaf 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,101 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdSwpf() -> Optional[MetricGroup]: + """Returns a MetricGroup representing AMD software prefetch metrics.""" + global _zen_model + if _zen_model <=3D 1: + return None + + swp_ld =3D Event("ls_dispatch.ld_dispatch") + swp_t0 =3D Event("ls_pref_instr_disp.prefetch") + swp_w =3D Event("ls_pref_instr_disp.prefetch_w") # Missing on Zen1 + swp_nt =3D Event("ls_pref_instr_disp.prefetch_nta") + swp_mab =3D Event("ls_inef_sw_pref.mab_mch_cnt") + swp_l2 =3D Event("ls_sw_pf_dc_fills.local_l2", + "ls_sw_pf_dc_fills.lcl_l2", + "ls_sw_pf_dc_fill.ls_mabresp_lcl_l2") + swp_lc =3D Event("ls_sw_pf_dc_fills.local_ccx", + "ls_sw_pf_dc_fills.int_cache", + "ls_sw_pf_dc_fill.ls_mabresp_lcl_cache") + swp_lm =3D Event("ls_sw_pf_dc_fills.dram_io_near", + "ls_sw_pf_dc_fills.mem_io_local", + "ls_sw_pf_dc_fill.ls_mabresp_lcl_dram") + swp_rc =3D Event("ls_sw_pf_dc_fills.far_cache", + "ls_sw_pf_dc_fills.ext_cache_remote", + "ls_sw_pf_dc_fill.ls_mabresp_rmt_cache") + swp_rm =3D Event("ls_sw_pf_dc_fills.dram_io_far", + "ls_sw_pf_dc_fills.mem_io_remote", + "ls_sw_pf_dc_fill.ls_mabresp_rmt_dram") + + # All the swpf that were satisfied beyond L1D are good. + all_pf =3D swp_t0 + swp_w + swp_nt + good_pf =3D swp_l2 + swp_lc + swp_lm + swp_rc + swp_rm + bad_pf =3D max(all_pf - good_pf, 0) + + loc_pf =3D swp_l2 + swp_lc + swp_lm + rem_pf =3D swp_rc + swp_rm + + req_pend =3D max(0, bad_pf - swp_mab) + + r1 =3D d_ratio(ins, all_pf) + r2 =3D d_ratio(swp_ld, all_pf) + r3 =3D d_ratio(swp_t0, interval_sec) + r4 =3D d_ratio(swp_w, interval_sec) + r5 =3D d_ratio(swp_nt, interval_sec) + overview =3D MetricGroup("swpf_overview", [ + Metric("swpf_ov_insn_bt_swpf", "Insn between SWPF", r1, "insns"), + Metric("swpf_ov_loads_bt_swpf", "Loads between SWPF", r2, "loads"), + Metric("swpf_ov_rate_prefetch_t0_t1_t2", "Rate prefetch TO_T1_T2", r= 3, + "insns/sec"), + Metric("swpf_ov_rate_prefetch_w", "Rate prefetch W", r4, "insns/sec"= ), + Metric("swpf_ov_rate_preftech_nta", "Rate prefetch NTA", r5, "insns/= sec"), + ]) + + r1 =3D d_ratio(swp_mab, all_pf) + r2 =3D d_ratio(req_pend, all_pf) + usefulness_bad =3D MetricGroup("swpf_usefulness_bad", [ + Metric("swpf_use_bad_hit_l1", "Usefulness bad hit L1", r1, "100%"), + Metric("swpf_use_bad_req_pend", "Usefulness bad req pending", r2, "1= 00%"), + ]) + + r1 =3D d_ratio(good_pf, all_pf) + usefulness_good =3D MetricGroup("swpf_usefulness_good", [ + Metric("swpf_use_good_other_src", "Usefulness good other src", r1, + "100%"), + ]) + + usefulness =3D MetricGroup("swpf_usefulness", [ + usefulness_bad, + usefulness_good, + ]) + + r1 =3D d_ratio(swp_l2, good_pf) + r2 =3D d_ratio(swp_lc, good_pf) + r3 =3D d_ratio(swp_lm, good_pf) + data_src_local =3D MetricGroup("swpf_data_src_local", [ + Metric("swpf_data_src_local_l2", "Data source local l2", r1, "100%"), + Metric("swpf_data_src_local_ccx_l3_loc_ccx", + "Data source local ccx l3 loc ccx", r2, "100%"), + Metric("swpf_data_src_local_memory_or_io", + "Data source local memory or IO", r3, "100%"), + ]) + + r1 =3D d_ratio(swp_rc, good_pf) + r2 =3D d_ratio(swp_rm, good_pf) + data_src_remote =3D MetricGroup("swpf_data_src_remote", [ + Metric("swpf_data_src_remote_cache", "Data source remote cache", r1, + "100%"), + Metric("swpf_data_src_remote_memory_or_io", + "Data source remote memory or IO", r2, "100%"), + ]) + + data_src =3D MetricGroup("swpf_data_src", [data_src_local, data_src_remo= te]) + + return MetricGroup("swpf", [overview, usefulness, data_src], + description=3D"Sofware prefetch breakdown (CCX L3 =3D= L3 of current thread, Loc CCX =3D CCX cache on some socket)") + + def AmdUpc() -> Metric: ops =3D Event("ex_ret_ops", "ex_ret_cops") upc =3D d_ratio(ops, smt_cycles) @@ -183,6 +278,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdSwpf(), AmdUpc(), Idle(), Rapl(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 3668117BC9 for ; Thu, 14 Mar 2024 05:58:59 +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=1710395940; cv=none; b=YYhvWiFa2KhpnEHQdxX0fZMvYHmblNKZ5QHNEz2kR3eoWUWvYabM/Fpgnt0FiqKrvJqJA5SDF0KJs2dgIRbVj/iJkxsnlzBLJkZd8e0WPbytJ4NYiMPfT87+NFY6Kod/eGaYQWNTV7ItXfEbbMv+tMRcJw0WG/WKtKzdBExM2Ik= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395940; c=relaxed/simple; bh=WOWe+5ZwJjFtAMO5LixHT9n3OypFjRwiFMl5aR4Ng6M=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=L66/l8AwMehWCgzlWmMqlWCpJPMTLwxz+PNQWHTR0ZdvPVsMM2oeN4Y/sEh2RgLFv1JXT8k9h9kRFTwwQ+bp19tW999yaLYXat4g+46Zi7+uJee4IymccZdhhcQ3zjJao3m86njjNB6nd2tJ1PTEG8A/P0R5ot9Rlob9yq69s00= 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=SCUOzZEI; 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="SCUOzZEI" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dcc4563611cso751561276.3 for ; Wed, 13 Mar 2024 22:58:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395938; x=1711000738; 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=a6qdDgoIQxn8fAzaUEAV7cPE0zy3zkq2eTruom8IDPQ=; b=SCUOzZEIdO8gDjkgOpgAJOUpsl1206R4nxH31TmYCH3fL/Xbp7URZAvuZEFzyouVvW LKOn4JEZ+hv+yp9iQbNkZmGgIjpcwRT60brAXUVRZcP7+9v8DKxDhsIMRD+9LBm5PPGZ 5Cr8XDY7/42QqROTJFHsxisFhmcDYBx7WIL7FwYpULwILyBNGjHGpgzSzlYCrwyme5oW HHMsz+FwVo0enu9zYl0d6/BUHVvtUci0T+RREjoDJk9sUouL9/vxexO5p6kWRRoFMbQY ONhNQjEPno0e0q0TU3K4eXQO6qIpnRJi5GJ+CwogBk0ni0EZzvgviNdFJ7rSDpUGPtYD Md8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395938; x=1711000738; 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=a6qdDgoIQxn8fAzaUEAV7cPE0zy3zkq2eTruom8IDPQ=; b=Zqv7oDuSDzNXSjoQnTSH3urS/glUuCNhOcc5Q/7KaeyInxzVSCskuEG19A8wHDB/bb qSC8+A/QbiNPXOian5jqV9MRu+uQLElnYTQvXZ2MtUS++kfj5ERwRVri/G/JmFjnkCMA oXbLL/Pm7dvwq/e/AtgXWQ97keM13qpZL1oJTR0CAq3EbnD77dwG14UJvsfgLEZmg7X+ n4VcvxkgbVZ1hJ70yQFZNkbmyGkJ1cgbwfrf2y+lydrtjEab5JboYCbprVCKX750F0WZ IltRhyjNY8rbe/4xpmRO29ruPHtLBZPacUJdpJHKX7DJww9qOJosGVJrStB3dku5I3jh 6EEA== X-Forwarded-Encrypted: i=1; AJvYcCUnqmVJ9wE+UpTLQUOCGACjlitN60AxWyFFYb6S9JZzR7iustzBAjjVDI6qq6nFW0grb8zW/KG14PuOA4zlX7Akx1Sj1tKTWigmIlTc X-Gm-Message-State: AOJu0Yz7rpFWfd4jjvDgQyrMDTwLA7PH7t1AcaZQYw8Wzwbe2Bsa5aLs kLTOZDhkaOE6w6gK6clkL/PPK5M95gO2bx4jUbATGmU1tJ9tmwflC8DwFc+lwN5GE8bsTYxcBkl VBpOQ2w== X-Google-Smtp-Source: AGHT+IFwr9ZZkG4/Fh7fUI8lDx9QV/iU/l1lXRZYsYunk9OLcTNKwFWK1vfmVkvaph3bP0KvJ/sxfqbBwcRZ X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:2603:b0:dcc:54d0:85e0 with SMTP id dw3-20020a056902260300b00dcc54d085e0mr256664ybb.11.1710395938388; Wed, 13 Mar 2024 22:58:58 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:33 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 06/12] perf jevents: Add hardware prefetch (hwpf) metric group for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give the utility of hardware prefetches on zen2, zen3 and zen4. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 9551b44dbbaf..5c91e97ae6c4 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,67 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdHwpf(): + """Returns a MetricGroup representing AMD hardware prefetch metrics.""" + global _zen_model + if _zen_model <=3D 1: + return None + + hwp_ld =3D Event("ls_dispatch.ld_dispatch") + hwp_l2 =3D Event("ls_hw_pf_dc_fills.local_l2", + "ls_hw_pf_dc_fills.lcl_l2", + "ls_hw_pf_dc_fill.ls_mabresp_lcl_l2") + hwp_lc =3D Event("ls_hw_pf_dc_fills.local_ccx", + "ls_hw_pf_dc_fills.int_cache", + "ls_hw_pf_dc_fill.ls_mabresp_lcl_cache") + hwp_lm =3D Event("ls_hw_pf_dc_fills.dram_io_near", + "ls_hw_pf_dc_fills.mem_io_local", + "ls_hw_pf_dc_fill.ls_mabresp_lcl_dram") + hwp_rc =3D Event("ls_hw_pf_dc_fills.far_cache", + "ls_hw_pf_dc_fills.ext_cache_remote", + "ls_hw_pf_dc_fill.ls_mabresp_rmt_cache") + hwp_rm =3D Event("ls_hw_pf_dc_fills.dram_io_far", + "ls_hw_pf_dc_fills.mem_io_remote", + "ls_hw_pf_dc_fill.ls_mabresp_rmt_dram") + + loc_pf =3D hwp_l2 + hwp_lc + hwp_lm + rem_pf =3D hwp_rc + hwp_rm + all_pf =3D loc_pf + rem_pf + + r1 =3D d_ratio(ins, all_pf) + r2 =3D d_ratio(hwp_ld, all_pf) + r3 =3D d_ratio(all_pf, interval_sec) + + overview =3D MetricGroup("hwpf_overview", [ + Metric("hwpf_ov_insn_bt_hwpf", "Insn between HWPF", r1, "insns"), + Metric("hwpf_ov_loads_bt_hwpf", "Loads between HWPF", r2, "loads"), + Metric("hwpf_ov_rate", "HWPF per second", r3, "hwpf/s"), + ]) + r1 =3D d_ratio(hwp_l2, all_pf) + r2 =3D d_ratio(hwp_lc, all_pf) + r3 =3D d_ratio(hwp_lm, all_pf) + data_src_local =3D MetricGroup("hwpf_data_src_local", [ + Metric("hwpf_data_src_local_l2", "Data source local l2", r1, "100%"), + Metric("hwpf_data_src_local_ccx_l3_loc_ccx", + "Data source local ccx l3 loc ccx", r2, "100%"), + Metric("hwpf_data_src_local_memory_or_io", + "Data source local memory or IO", r3, "100%"), + ]) + + r1 =3D d_ratio(hwp_rc, all_pf) + r2 =3D d_ratio(hwp_rm, all_pf) + data_src_remote =3D MetricGroup("hwpf_data_src_remote", [ + Metric("hwpf_data_src_remote_cache", "Data source remote cache", r1, + "100%"), + Metric("hwpf_data_src_remote_memory_or_io", + "Data source remote memory or IO", r2, "100%"), + ]) + + data_src =3D MetricGroup("hwpf_data_src", [data_src_local, data_src_remo= te]) + return MetricGroup("hwpf", [overview, data_src], + description=3D"Hardware prefetch breakdown (CCX L3 = =3D L3 of current thread, Loc CCX =3D CCX cache on some socket)") + + def AmdSwpf() -> Optional[MetricGroup]: """Returns a MetricGroup representing AMD software prefetch metrics.""" global _zen_model @@ -278,6 +339,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdHwpf(), AmdSwpf(), AmdUpc(), Idle(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 3C1FC168DA for ; Thu, 14 Mar 2024 05:59:01 +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=1710395942; cv=none; b=iULOphbAygOSdwAZH6uWj/AyQxFS+e70i75zV/kU56DaxABuqCB3vlEmL/9dnhKQVuxzioh4UkK9UY8bUhk1iOBrd01thUAMOCMQc2LPLyNpa/jnaH8UGnu4ReztsnM7IzyPGMqw4KRNciXonTXhZ5gQCjORRw7p0zGDsOg5+wU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395942; c=relaxed/simple; bh=uD+ncb3SOpzS3D4AWmHZXyW8xZjeqOQxX5jabJMPaGE=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=AQ3+M7g3Wkxmqh+Chd9W3Z+J6VqljXcROppcNDcEds6BrnbMSbrG5DvmbZXP8N0bZU9aGNWHHcuk3nx+QsMBTKLFFSahqLSoAKzfIeN6C5SeyrtfDp2rLM6E60Jji4OcLhhF1UwSb42Dyu9ZI3MLd//ZPgJaD+YKtrp2X9F7UmQ= 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=hacqdjwB; 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="hacqdjwB" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-60cbba6fa0bso14086477b3.3 for ; Wed, 13 Mar 2024 22:59:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395940; x=1711000740; 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=KrI/1zc5BFXiIRfg2dbGhOnQNaJK/kV9DB75bXww9T4=; b=hacqdjwBhKl+vlnCRIlZ5LPe3G0e+aYBkieBEE/SRtuMq4s+PKUVQCZGDPV0AYpL8u Vn+VAugWjFMcsD90qamob79XjYCNCyiz5ulhzXvhMTn8xhz4FnQ3DO/0CkQ6pSOj54fu NrOP12/YffN/nGKvDc1FreQHGFt+ksAVoejJVTJ2oImiuWk4skbGfUDU3sKVzjNk3egw XyvXQulQNy8Y5qLpSaYkdjNnuuTkpvR6xdLyvyJt1kH/cXvx1NoOCNPfwlvrqKLfNs/P 8MuUuBKKYQN/sY1ikkNAenshYslfG3o1qhaZqSW/o1tv/36nPG4cyLCKWV94L6D1ZVPj nJKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395940; x=1711000740; 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=KrI/1zc5BFXiIRfg2dbGhOnQNaJK/kV9DB75bXww9T4=; b=B9Kl4MNT+cU8tsLKIaDw/CljRIDwkXltYmA9nyQpa60gOjYtH4FBaPVonyfBF6FAbo DQgVmaFR3hfztZ4dE+qJOKacybYWwI+pO7WzB3Y5XVTl/N2sAPC6pGsLInpE+IsfX5rE 0aG+AMujtduZ4ll4FD72Jdd6TRmqt3NS80SQyi+RgNyJpmKvGjnhIUxg89vIhYWJrAMD tuZx6phVQ8gSImYymktKmg8eNIftr9+PGFUlsWkhMO66f7GxyuxAxWaaqcApPtl6bi1u xa2sO3Tbi0MA7IduVl4QcMdU6EQ4UCX+L3d8MmaNouk/4GWoV97eoOaj2yAo/pX9okE+ GKGA== X-Forwarded-Encrypted: i=1; AJvYcCXyk99B4GKax0YQAOlLF5BMu8JhmhS2VtQ/hqAxTJUlGJtnGdlCr5HdCgUoP7zRdgNxn8LUKj+jKRBK3xRU+/JFoHJotJjvnbswIw1+ X-Gm-Message-State: AOJu0YyH7P6wj0pDLFSHG1zhclzv8z2WxTb6JCgftW9IJy+Lqcjzz/rN hOjVdu8fM4BTImbOIP9WbFtn+E5f8Fk5rS6yJR2IlDQUu32Ju+M6tanIpYy+c8/nUDYQ7znTzCY 6L2zWQA== X-Google-Smtp-Source: AGHT+IGs7JzRifivMIHpa34epwGOHsG0lQ9Y292XADLN/cHfUHmCJF3yE8kqtAphyDzWxZLdKzs7QO6EH2MT X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a0d:d64e:0:b0:608:d045:6eff with SMTP id y75-20020a0dd64e000000b00608d0456effmr174232ywd.2.1710395940302; Wed, 13 Mar 2024 22:59:00 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:34 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 07/12] perf jevents: Add itlb metric group for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give an overview and details of the l1 itlb (zen1, zen2, zen3) and l2 itlb (all zens). Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 5c91e97ae6c4..519aa9ab8801 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,53 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdItlb(): + global _zen_model + l2h =3D Event("bp_l1_tlb_miss_l2_tlb_hit", "bp_l1_tlb_miss_l2_hit") + l2m =3D Event("l2_itlb_misses") + l2r =3D l2h + l2m + + itlb_l1_mg =3D None + l1m =3D l2r + if _zen_model <=3D 3: + l1r =3D Event("ic_fw32") + l1h =3D max(l1r - l1m, 0) + itlb_l1_mg =3D MetricGroup("itlb_l1", [ + Metric("itlb_l1_hits", + "L1 ITLB hits as a perecentage of L1 ITLB accesses.", + d_ratio(l1h, l1h + l1m), "100%"), + Metric("itlb_l1_miss", + "L1 ITLB misses as a perecentage of L1 ITLB accesses.", + d_ratio(l1m, l1h + l1m), "100%"), + Metric("itlb_l1_reqs", + "The number of 32B fetch windows transferred from IC pipe t= o DE " + "instruction decoder per second.", d_ratio(l1r, interval_se= c), + "windows/sec"), + ]) + + return MetricGroup("itlb", [ + MetricGroup("itlb_ov", [ + Metric("itlb_ov_insn_bt_l1_miss", + "Number of instructions between l1 misses", d_ratio( + ins, l1m), "insns"), + Metric("itlb_ov_insn_bt_l2_miss", + "Number of instructions between l2 misses", d_ratio( + ins, l2m), "insns"), + ]), + itlb_l1_mg, + MetricGroup("itlb_l2", [ + Metric("itlb_l2_hits", + "L2 ITLB hits as a percentage of all L2 ITLB accesses.", + d_ratio(l2h, l2r), "100%"), + Metric("itlb_l2_miss", + "L2 ITLB misses as a percentage of all L2 ITLB accesses.", + d_ratio(l2m, l2r), "100%"), + Metric("itlb_l2_reqs", "ITLB accesses per second.", + d_ratio(l2r, interval_sec), "accesses/sec"), + ]), + ], description=3D"Instruction TLB breakdown") + + def AmdHwpf(): """Returns a MetricGroup representing AMD hardware prefetch metrics.""" global _zen_model @@ -339,6 +386,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdItlb(), AmdHwpf(), AmdSwpf(), AmdUpc(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 3B2C318044 for ; Thu, 14 Mar 2024 05:59: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=1710395944; cv=none; b=D4wM9zGxhwlXSPqktwjBc7UIw1TBv9JP4UFPUtD02MVAahAG4FfuS3hcmZa36zCGNBRnZmqvMKfRQeG5LHNUGFFJRFiOsfVGdEBSH987TxIgrUQBz4do8hp9OUwQT3LrSvFiEHgecg4v8njcSDuZhtG21yDHmucjEU3FlMQ4x8k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395944; c=relaxed/simple; bh=whMVmxF3NoYz6Wx64jZe95t16CbQJLeON0KmO6ONXNo=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=USxFp5SmarW0y/LADIm+k0XUKor8INIyUQsE3nk4kvQbBPpjPkmOW//HowPFTwDif710deU6tiqsyZvGrFh00T82DUniF6VcBCEFaKmquQ434Ij3hioDp18qnLuAjnB481828t0X0VRBhsKYy++gKdLo0znBaUv8NVIMBOs1GxY= 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=BA6Rl4Ng; 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="BA6Rl4Ng" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a0815e3f9so10277747b3.2 for ; Wed, 13 Mar 2024 22:59:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395942; x=1711000742; 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=AScvNp0fYbHG89nkyRKQajNiisdR6SwLChBrHvGyhcc=; b=BA6Rl4Ng0vnBae80umvCxBknVss+ZLbp7Yz/SWwZTk7IwLQ+wOs65KcFAHPqBP5rNE XBeBQ0N8zJgi1h2p33BKL1zeqP0/ZnRzbno1t3lLhMHqAmZeSn4+KI+uLqKjX2y1DDbA nVrtO3GHCNL30WT7IB5uYfGhJxD1lfAJF5w40EaVkEQfm4Ysrbkp5wHVjIlflh59/NLp wpLHVosUbpn1WiEcPeCCmnOqJzma7XydPyPRWTKbAzteL3oVmW9rZQw5Xh+SrAp2LgIX TudOCpXnSyiT52G73ihG0k5rGYtO7Wa+SYjWfaBDEHMr4a80vQcrPrukelNSLyTdCeys RJ0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395942; x=1711000742; 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=AScvNp0fYbHG89nkyRKQajNiisdR6SwLChBrHvGyhcc=; b=lyKAoJTcWHqthnCK6GdWSFTpPDM1nc+U9juJP2hSMxo1GdGMxUKx/nZKhtZb3k7mcA 3oIOIUQr4EqnOz/1y9oq5wRKcXqWNGB7LhSuEPP74z/Sn7chI1EOg39zOWwYvdMyUkBM y98+68mIqGZRBGBSnrXrjW0uPnqQ2GilmvRPJhkmvnKJbx3JxKhgiRM5+JyYX8bXhHQL sZCeO6h/OpR8Uy6OHyXW+4BPbuPjZwbTYkflrsoWNbDriMN/sYeKzbm7mQqIgg24I2fS Khqr2MNv4dlY8b2cHQbiUp/WpgItAYAmUFhvtIQhdDcIZoYOYJxNoKuHJS2ru/pXKF6d BCjw== X-Forwarded-Encrypted: i=1; AJvYcCWrQooyDXDKbNnn4pX1qkEZfnlHVjMP2WrW30fddGnrlHRHcC/62KXHl1qZ0V/1EGu4Ml5GC0cf/9elrnBhSoxEeDSmbZrSmYejPqp2 X-Gm-Message-State: AOJu0YwBFxLffviaX1cIbyQaVQA2csH29dbFxrr0rAoRt9kyBZ+SG7mm mvGMoMNnfPFARVWto1+YWEogpOT/vqyQlMJGoko2Bp73H9ucdWPG/dI1fBMw/VHwgfc+lYOYuNp TlnSoCw== X-Google-Smtp-Source: AGHT+IFFkMR91+4WamnF5jU1jy66HUh37ZDG5SlCY/q6Kc7cyBxemp5moQUFnelv0KCgKJs0ZPJ7qApHXmTd X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:4886:0:b0:60a:66b9:c089 with SMTP id v128-20020a814886000000b0060a66b9c089mr149852ywa.8.1710395942348; Wed, 13 Mar 2024 22:59:02 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:35 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 08/12] perf jevents: Add dtlb metric group for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add metrics that give an overview and details of the dtlb (zen1, zen2, zen3). Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 109 +++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 519aa9ab8801..1bddfb939597 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,114 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdDtlb() -> Optional[MetricGroup]: + global _zen_model + if _zen_model >=3D 4: + return None + + d_dat =3D Event("ls_dc_accesses") if _zen_model <=3D 3 else None + d_h4k =3D Event("ls_l1_d_tlb_miss.tlb_reload_4k_l2_hit") + d_hcoal =3D Event("ls_l1_d_tlb_miss.tlb_reload_coalesced_page_hit") if _= zen_model >=3D 2 else 0 + d_h2m =3D Event("ls_l1_d_tlb_miss.tlb_reload_2m_l2_hit") + d_h1g =3D Event("ls_l1_d_tlb_miss.tlb_reload_1g_l2_hit") + + d_m4k =3D Event("ls_l1_d_tlb_miss.tlb_reload_4k_l2_miss") + d_mcoal =3D Event("ls_l1_d_tlb_miss.tlb_reload_coalesced_page_miss") if = _zen_model >=3D 2 else 0 + d_m2m =3D Event("ls_l1_d_tlb_miss.tlb_reload_2m_l2_miss") + d_m1g =3D Event("ls_l1_d_tlb_miss.tlb_reload_1g_l2_miss") + + d_w0 =3D Event("ls_tablewalker.dc_type0") if _zen_model <=3D 3 else None + d_w1 =3D Event("ls_tablewalker.dc_type1") if _zen_model <=3D 3 else None + walks =3D d_w0 + d_w1 + walks_r =3D d_ratio(walks, interval_sec) + ins_w =3D d_ratio(ins, walks) + l1 =3D d_dat + l1_r =3D d_ratio(l1, interval_sec) + l2_hits =3D d_h4k + d_hcoal + d_h2m + d_h1g + l2_miss =3D d_m4k + d_mcoal + d_m2m + d_m1g + l2_r =3D d_ratio(l2_hits + l2_miss, interval_sec) + l1_miss =3D l2_hits + l2_miss + walks + l1_hits =3D max(l1 - l1_miss, 0) + ins_l =3D d_ratio(ins, l1_miss) + + return MetricGroup("dtlb", [ + MetricGroup("dtlb_ov", [ + Metric("dtlb_ov_insn_bt_l1_miss", + "DTLB overview: instructions between l1 misses.", ins_l, + "insns"), + Metric("dtlb_ov_insn_bt_walks", + "DTLB overview: instructions between dtlb page table walk= s.", + ins_w, "insns"), + ]), + MetricGroup("dtlb_l1", [ + Metric("dtlb_l1_hits", + "DTLB L1 hits as percentage of all DTLB L1 accesses.", + d_ratio(l1_hits, l1), "100%"), + Metric("dtlb_l1_miss", + "DTLB L1 misses as percentage of all DTLB L1 accesses.", + d_ratio(l1_miss, l1), "100%"), + Metric("dtlb_l1_reqs", "DTLB L1 accesses per second.", l1_r, + "insns/s"), + ]), + MetricGroup("dtlb_l2", [ + Metric("dtlb_l2_hits", + "DTLB L2 hits as percentage of all DTLB L2 accesses.", + d_ratio(l2_hits, l2_hits + l2_miss), "100%"), + Metric("dtlb_l2_miss", + "DTLB L2 misses as percentage of all DTLB L2 accesses.", + d_ratio(l2_miss, l2_hits + l2_miss), "100%"), + Metric("dtlb_l2_reqs", "DTLB L2 accesses per second.", l2_r, + "insns/s"), + MetricGroup("dtlb_l2_4kb", [ + Metric( + "dtlb_l2_4kb_hits", + "DTLB L2 4kb page size hits as percentage of all DTLB L2= 4kb " + "accesses.", d_ratio(d_h4k, d_h4k + d_m4k), "100%"), + Metric( + "dtlb_l2_4kb_miss", + "DTLB L2 4kb page size misses as percentage of all DTLB = L2 4kb" + "accesses.", d_ratio(d_m4k, d_h4k + d_m4k), "100%") + ]), + MetricGroup("dtlb_l2_coalesced", [ + Metric( + "dtlb_l2_coal_hits", + "DTLB L2 coalesced page (16kb) hits as percentage of all= DTLB " + "L2 coalesced accesses.", d_ratio(d_hcoal, + d_hcoal + d_mcoal), "1= 00%"), + Metric( + "dtlb_l2_coal_miss", + "DTLB L2 coalesced page (16kb) misses as percentage of a= ll " + "DTLB L2 coalesced accesses.", + d_ratio(d_mcoal, d_hcoal + d_mcoal), "100%") + ]), + MetricGroup("dtlb_l2_2mb", [ + Metric( + "dtlb_l2_2mb_hits", + "DTLB L2 2mb page size hits as percentage of all DTLB L2= 2mb " + "accesses.", d_ratio(d_h2m, d_h2m + d_m2m), "100%"), + Metric( + "dtlb_l2_2mb_miss", + "DTLB L2 2mb page size misses as percentage of all DTLB = L2 " + "accesses.", d_ratio(d_m2m, d_h2m + d_m2m), "100%") + ]), + MetricGroup("dtlb_l2_1g", [ + Metric( + "dtlb_l2_1g_hits", + "DTLB L2 1gb page size hits as percentage of all DTLB L2= 1gb " + "accesses.", d_ratio(d_h1g, d_h1g + d_m1g), "100%"), + Metric( + "dtlb_l2_1g_miss", + "DTLB L2 1gb page size misses as percentage of all DTLB = L2 " + "1gb accesses.", d_ratio(d_m1g, d_h1g + d_m1g), "100%") + ]), + ]), + MetricGroup("dtlb_walks", [ + Metric("dtlb_walks_reqs", "DTLB page table walks per second.", + walks_r, "walks/s"), + ]), + ], description=3D"Data TLB metrics") + + def AmdItlb(): global _zen_model l2h =3D Event("bp_l1_tlb_miss_l2_tlb_hit", "bp_l1_tlb_miss_l2_hit") @@ -386,6 +494,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdDtlb(), AmdItlb(), AmdHwpf(), AmdSwpf(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 809411863E for ; Thu, 14 Mar 2024 05:59:05 +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=1710395947; cv=none; b=PlZcQBL+igCrkXQuETlIZZOe3NdF6VCv/IA82Ccbu07D8ECz0G9l8uxOlpflgkvUs9rDu2pFtd/XrwZDCYX1DEbYFOO6f8ltJpQSDSf+tlpRqbKfhmQPRzf0aaDY+A4YbAWdtEb+25oiwpOwtoq9gKLE4INF+aM/RrdGqI5KJwU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395947; c=relaxed/simple; bh=A3qe7dMEX2lXbNeL+sr2/wlfhIFe+L9DGvZJP6pwk94=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=H3k8d2C2bw+ZGuoPROj6hUZMWDhIp+tVCn3PPGKURmvttziWjWvRIeAUsPsHuREgS+xDHSuxXwB//HJku7YWP0tfCkHUPXRvk6rlWmnVGtnhFSWRGqkq3Jjryf6jIfgr2QNd72VpEda9CEPwJmyORDQcWxFKJ6bl1HnrefHMmCA= 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=Si15N7Sq; 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="Si15N7Sq" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dcbee93a3e1so913398276.3 for ; Wed, 13 Mar 2024 22:59:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395944; x=1711000744; 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=NROLFT4HVfPyZQ7YdAuPbGl5r8e13yqyBFaFho3+nMQ=; b=Si15N7SqefEE20XoTlFaR+2ST7S2GuTXRS697CZw3NBndnHgZdUWYzTh6V5H6TDr4m YnmRJmf0eqK3hFrzhUoE6sqe1Z757jRa0kE78o+Ea3At+EqeFyayi6yFRRRPtoig/Miu 3ZepVv4Zr30tG/DPGk1WX8xm1Zax32msi7dkoAz7W2tz1LeImnn5I5x0wIzFc0idkOxV fTMoljj4vPpct677E3M8xKzbi39MpOjwJfFVbl9vlnnnOsyCMbABMG2Xx7liwVJzLQkh IpChl4SbtNub26spUzKQR0xcsQOylJ1C5UGEY3v+aQB5+OBmntkXZnVBj3iJiStgk5mS u/ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395944; x=1711000744; 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=NROLFT4HVfPyZQ7YdAuPbGl5r8e13yqyBFaFho3+nMQ=; b=Sin8J722NxGUXJMnUp0hvjCT3znRTRud8gWVlqDPTqeZvUe3udK1ffDTptYHiVweW4 IDn0wyeImX472VfK+HFWFeNYK0NDf8mES1uPaofGURvtH3BIdwqcSTzmi5d3D4AZcK/s ucw4lwDJQtKNwqCQJa2EncEVGj846xOhUV3mXn8K4WDBwqAnISuyaiDfcrFJ1NrJoRAz drjTB10jHIiABzj1J0N2JsP407maSeJBy/33ntpsBieTEevhTxzUlC8A/tYtlhqBLRzX kQ7QB7u+zuuEQsnhDGJ0nnbTobarUQiqODjbkshauvyUfDZAuOtEsDTssqt/CzP0O+XQ 4Shw== X-Forwarded-Encrypted: i=1; AJvYcCUeWo3hrY4LHR+jGzdUOYYefatzabIfgDilGq42MebiYlYqjTgn85UJ6OMVMPpdLMF/tAIJOSf6m28dC820c/Ev+YLkOfcO+nm0XvRV X-Gm-Message-State: AOJu0Yxia/63GFOi1gBOboz934rGLeIeS4wx8OyF/1NZPriJj4tUZgPi 4fPCCyDra5e75gXkJSycCkvMpVZwKavXTBn4AmgVVIatxFbVsYKuAzLer9++qI4AXkI84JBv+Gm svwuxfg== X-Google-Smtp-Source: AGHT+IEkB6E/HmiiV6NChvaNoFf1Ne5N34wILtWGVdfafUgNW4vqbhRifL/71foolCMM/EeILiEhRu1XtVrP X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:1004:b0:dc6:44d4:bee0 with SMTP id w4-20020a056902100400b00dc644d4bee0mr27734ybt.7.1710395944447; Wed, 13 Mar 2024 22:59:04 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:36 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 09/12] perf jevents: Add uncore l3 metric group for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Metrics use the amd_l3 PMU for access/miss/hit information. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/amd_metrics.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 1bddfb939597..79312e33c2d0 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -466,6 +466,22 @@ def Rapl() -> MetricGroup: return MetricGroup("cpu_power", metrics, description=3D"Processor socket power consumption est= imates") =20 +def UncoreL3(): + acc =3D Event("l3_lookup_state.all_coherent_accesses_to_l3", + "l3_lookup_state.all_l3_req_typs") + miss =3D Event("l3_lookup_state.l3_miss", + "l3_comb_clstr_state.request_miss") + acc =3D max(acc, miss) + hits =3D acc - miss + + return MetricGroup("l3", [ + Metric("l3_accesses", "L3 victim cache accesses", + d_ratio(acc, interval_sec), "accesses/sec"), + Metric("l3_hits", "L3 victim cache hit rate", d_ratio(hits, acc), "1= 00%"), + Metric("l3_miss", "L3 victim cache miss rate", d_ratio(miss, acc), + "100%"), + ], description=3D"L3 cache breakdown per CCX") + =20 def main() -> None: global _args @@ -501,6 +517,7 @@ def main() -> None: AmdUpc(), Idle(), Rapl(), + UncoreL3(), ]) =20 if _args.metricgroups: --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 749BF18C31 for ; Thu, 14 Mar 2024 05:59:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395948; cv=none; b=nr7CR2Bt7FES36PjARLQb284do1Kemd0o0RwiETupgY0AiWhg0F6exMj78nQmhKHsgxLhEz4L0DExXPKwVvSAaV9Gs94ZDKS9xspLOY6038jVQ/DOubiva+sCNqfDVlmhEbpyovW9SVjoKeNIv2rClE1dhi0tIu8Alkg+XEtaK8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395948; c=relaxed/simple; bh=QxznQlTiwxvRoxcxuNV3lrLzfe9XcWRO0Ze5cmywbq8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=eVTz7DgsJcFMrmvXcB4ty17k274GtkqdREH+jr8YmJSrIZk0UX8s8bztweUJ2RfKpfIeD/c86+eZxxNg9KLgBSZjkLlMRIL4rtujakH0DTtc7SnotFrGQl4+CquLPA+QGBWMLek6yJALYV/hkgMq0eUeMtsIYgO0D74BbqfiLFA= 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=AXtggZ7d; 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="AXtggZ7d" Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dd0ae66422fso1349719276.0 for ; Wed, 13 Mar 2024 22:59:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395946; x=1711000746; 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=Oeo18tfO4V4k4hOOFEDEBLHaBjdn7guPG+ER0JNnTTc=; b=AXtggZ7dttyMt4bYoWmOC8WKi5bzydN51AuI0T2mYTHbiZGP06bWd7kV7W2mSqb+vD b83ToA41KA6PFuTUJ3Rvf992spXrF6ESWUEPfbFfqcTlsHB+D/HHcaHS6geGd2ve2waX FXB3rtrdzE89GByO4la9XkUH5e4gWqVTH7o8jZ94dAuSDjdEZyqPhahWsKkZyVfsqHX3 3CR5Hb5yLfeJapfMZcL6yzB6LAe7CT1PpSqJOQrRb2RtjoR2WcBd4HVNtVKXs4h4915U P//ZKxamqjT5jOWxoygL5cF8eCASlge/8J3hLG5iYJXxjJfZ3Tnfrs47uohwmeC48uMq dNtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395946; x=1711000746; 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=Oeo18tfO4V4k4hOOFEDEBLHaBjdn7guPG+ER0JNnTTc=; b=Stz6VYcXJiS3/RNhyqoAed2JpsbySdAgEW/gqf4xvBCR9AsxC2IrCcRk7Z/rInE8jN NfJvVRpwpR0oxRk07ChgXPkXDrVf6euPbv0EzOu6t9czr5Ckx2vuwHrxksDihcdD7fWF xmxg52qGdvFzjC2R/XkgZ+pg8U9d11MKd6ahZT1gvHqTGV+N7ewWcdX+ofdesN3EvB/6 EGzRIX9b5wWEarITlaQqnAViwqiWoeKYwC5Ndw649Up3bANguOf3Dw77N2ibjw/Ofrsj Jji4LYZ2v7vk3VMFY7ZOlK7r5RedTDycWOrVmJT4KmSZqhwQijs80bSP0Bjog/5anrxQ 7JSg== X-Forwarded-Encrypted: i=1; AJvYcCWVxo3aSwZbs+g+6jP1NeS/m/XQ7LHTYB0Cy3ZTPMdGwCnyBFSkhfmpoemcfi6O277Dbz9GlcfCTURawO7Raq+iaETcPCPC8z5R8g9J X-Gm-Message-State: AOJu0YxgxY34qbYEC7ssB3VqR0ZCUhq/pIY9jr65MGc4Su8LE7lcP6XU EUz7uMhr1BLf6KOi80DKomXhD4BJv2Byx4BPAuYLBS1l6IaRIEOw97XH82X/bQ43BGNNI4i258Y KO1nAnQ== X-Google-Smtp-Source: AGHT+IG/XogiODg03QMgLQSvsA9HqjPkCurw8x+4o9RsmV5BB/Z3oRwYqk0vvwKt62C06+05JF1JG6gPS+px X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a05:6902:2504:b0:dbf:4359:326a with SMTP id dt4-20020a056902250400b00dbf4359326amr261294ybb.1.1710395946496; Wed, 13 Mar 2024 22:59:06 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:37 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 10/12] perf jevents: Add load store breakdown metrics ldst for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@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/amd_metrics.py | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 79312e33c2d0..2fc8064e4fc0 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -275,6 +275,80 @@ def AmdItlb(): ], description=3D"Instruction TLB breakdown") =20 =20 +def AmdLdSt() -> MetricGroup: + ldst_ld =3D Event("ls_dispatch.ld_dispatch") + ldst_st =3D Event("ls_dispatch.store_dispatch") + ldst_ldc1 =3D Event(f"{ldst_ld}/cmask=3D1/") + ldst_stc1 =3D Event(f"{ldst_st}/cmask=3D1/") + ldst_ldc2 =3D Event(f"{ldst_ld}/cmask=3D2/") + ldst_stc2 =3D Event(f"{ldst_st}/cmask=3D2/") + ldst_ldc3 =3D Event(f"{ldst_ld}/cmask=3D3/") + ldst_stc3 =3D Event(f"{ldst_st}/cmask=3D3/") + ldst_cyc =3D Event("ls_not_halted_cyc") + + ld_rate =3D d_ratio(ldst_ld, interval_sec) + st_rate =3D d_ratio(ldst_st, interval_sec) + + ld_v1 =3D max(ldst_ldc1 - ldst_ldc2, 0) + ld_v2 =3D max(ldst_ldc2 - ldst_ldc3, 0) + ld_v3 =3D ldst_ldc3 + + st_v1 =3D max(ldst_stc1 - ldst_stc2, 0) + st_v2 =3D max(ldst_stc2 - ldst_stc3, 0) + st_v3 =3D ldst_stc3 + + return MetricGroup("ldst", [ + MetricGroup("ldst_total", [ + Metric("ldst_total_ld", "Number of loads dispatched per second.", + ld_rate, "insns/sec"), + Metric("ldst_total_st", "Number of stores dispatched per second.= ", + st_rate, "insns/sec"), + ]), + MetricGroup("ldst_percent_insn", [ + Metric("ldst_percent_insn_ld", + "Load instructions as a percentage of all instructions.", + d_ratio(ldst_ld, ins), "100%"), + Metric("ldst_percent_insn_st", + "Store instructions as a percentage of all instructions.", + d_ratio(ldst_st, ins), "100%"), + ]), + MetricGroup("ldst_ret_loads_per_cycle", [ + Metric( + "ldst_ret_loads_per_cycle_1", + "Load instructions retiring in 1 cycle as a percentage of al= l " + "unhalted cycles.", d_ratio(ld_v1, ldst_cyc), "100%"), + Metric( + "ldst_ret_loads_per_cycle_2", + "Load instructions retiring in 2 cycles as a percentage of a= ll " + "unhalted cycles.", d_ratio(ld_v2, ldst_cyc), "100%"), + Metric( + "ldst_ret_loads_per_cycle_3", + "Load instructions retiring in 3 or more cycles as a percent= age" + "of all unhalted cycles.", d_ratio(ld_v3, ldst_cyc), "100%"), + ]), + MetricGroup("ldst_ret_stores_per_cycle", [ + Metric( + "ldst_ret_stores_per_cycle_1", + "Store instructions retiring in 1 cycle as a percentage of a= ll " + "unhalted cycles.", d_ratio(st_v1, ldst_cyc), "100%"), + Metric( + "ldst_ret_stores_per_cycle_2", + "Store instructions retiring in 2 cycles as a percentage of = all " + "unhalted cycles.", d_ratio(st_v2, ldst_cyc), "100%"), + Metric( + "ldst_ret_stores_per_cycle_3", + "Store instructions retiring in 3 or more cycles as a percen= tage" + "of all unhalted cycles.", d_ratio(st_v3, ldst_cyc), "100%"), + ]), + MetricGroup("ldst_insn_bt", [ + Metric("ldst_insn_bt_ld", "Number of instructions between loads.= ", + d_ratio(ins, ldst_ld), "insns"), + Metric("ldst_insn_bt_st", "Number of instructions between stores= .", + d_ratio(ins, ldst_st), "insns"), + ]) + ], description=3D"Breakdown of load/store instructions") + + def AmdHwpf(): """Returns a MetricGroup representing AMD hardware prefetch metrics.""" global _zen_model @@ -512,6 +586,7 @@ def main() -> None: AmdBr(), AmdDtlb(), AmdItlb(), + AmdLdSt(), AmdHwpf(), AmdSwpf(), AmdUpc(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 BCA0D1B7E7 for ; Thu, 14 Mar 2024 05:59:09 +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=1710395951; cv=none; b=D9Hy3gmn9DxblSgc3nw9BbzvT5bo2YZofBxUKOaCtrlfMVlxe1+sqj/Aa83B+wq2lbiOW/XQ5LSHvrJTVW6+iy6TPBd8q6TgSbp1A96kydLefNrmwSfregvkplsSAujMWLIdrXB1i7pdTOubUKQp4Hu+4gJ5aF9vD2HDsfcEEjE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395951; c=relaxed/simple; bh=1kQ5uW3vdTVEojW2lkh4TbCqUKQ9kwqg/lZBltsOY3w=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=AN00/ZhjDNMXiVmvMdeLdB9Vw82ng0/7Y4cwLkH/iL0bmB1c0rqhzRAOs6GB+2K9WTRG+OKHe8BvjuyFUhRFjSfHZBVqT2trCosFl5pbrtO9xyc1C6ENvd47x5/Iy66Mq0EVcOBWu5MpwqnZLDjXGLcgYr+PS0n+nTSX4ZNMMm4= 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=Sf7uJGJb; 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="Sf7uJGJb" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-608e4171382so10438217b3.3 for ; Wed, 13 Mar 2024 22:59:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395949; x=1711000749; 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=d57tF9Q2XhdTDIJ4za9SIwSfvP/kj9N7wv6tDaN1ld0=; b=Sf7uJGJb5qj5SnQfJIGpUhuch/c2YmI4CwpzOatHSR7iG21KzSx8BHwQFIWKyWWQQG RxF1nIXD6SSkCxOWjfppnw7705lDS3xnzolDVL8S+ekkuKQm1yHz+fV/plOSTMrUZjDo 1ASPwbYccVFS4qc9bZWStY/t4MHsDz8LZp1lsRRbrUNU7Yj68PKDZXOYuJ5WYOc84Ovi KF0gtOo5Q9nag8vwJ5oWRQk6uMC0d5T26LLZH+mEPajL+pOJPlgYcNI7QF4amqikciUJ NMOldEQKsWn6oKermX7e/MfCzkqd/a6poyspMM/Fct04V0pKwVl2/TViaYQrF7B2rwfB m3jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395949; x=1711000749; 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=d57tF9Q2XhdTDIJ4za9SIwSfvP/kj9N7wv6tDaN1ld0=; b=qe3dlM0j9RQi4eXCsC6GAZ+TC4HutI3o3sxxjE5PXCdpeqDGphYsSKg1iYsUDUNPdY 35M5BwjrtV0Xoh9RTjODvMtDc+xWUoRG8VzOutfpiWY1kiCmuR8WlDJREfNzD8LfQm05 dK8/kZ14iauxun9kRDpC/Xa0lY1l7Ozaw5aPgSoJIZewwyoIkTOy8Izq1ZfTq+wgqq9P V4TZFZewfPbsZ+DBYGayuV7kMY2JMFYKvEDHM2JOoB/avt7Tc9oTna5AnZXSTddmQ1a9 wYiar4ZmRVKfk2unjBYumb+ltqUWg5hBZJPPK6tZVJgvDOi3l/ITpE//NR1rpsPWVtfE GWhw== X-Forwarded-Encrypted: i=1; AJvYcCXnTVEmtja5NoV0dPh1lNUcj71dZFOOCgSwELLPj3TAjfZtp6ej2LcdVp6huoDOBAxMI4uBo+1YsNxSdWgUNTx5nYf2gO89BN/0EA7p X-Gm-Message-State: AOJu0Yz+cJGaK0PCQatMmuAIqyeG9l6kA0a3Ax3xLJ9E80KgkZq2GIp0 43UjBlg7K+mNi4qZYF81WDmgPg5UX9WHjKqtPOjDM7m+CgTJ++YPzmVEZHSNOfZpIq9YbOvKoIB HQRWjWg== X-Google-Smtp-Source: AGHT+IHpTzwZVr+evwz6fT+xaE9J2vpkhCCxsBfF/HuodCT82E805zezsyLrev/LIjgH/VuabifvcDBWF3bV X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a81:4995:0:b0:609:4c74:5cab with SMTP id w143-20020a814995000000b006094c745cabmr153105ywa.2.1710395948788; Wed, 13 Mar 2024 22:59:08 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:38 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 11/12] perf jevents: Add ILP metrics for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@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/amd_metrics.py | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index 2fc8064e4fc0..bf5c4ffa53e9 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,35 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdIlp() -> MetricGroup: + tsc =3D Event("msr/tsc/") + c0 =3D Event("msr/mperf/") + low =3D tsc - c0 + inst_ret =3D Event("ex_ret_instr") + inst_ret_c =3D [Event(f"{inst_ret.name}/cmask=3D{x}/") for x in range(= 1, 6)] + ilp =3D [d_ratio(max(inst_ret_c[x] - inst_ret_c[x + 1], 0), cycles) fo= r x in range(0, 4)] + ilp.append(d_ratio(inst_ret_c[4], cycles)) + ilp0 =3D 1 + for x in ilp: + ilp0 -=3D x + return MetricGroup("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 AmdDtlb() -> Optional[MetricGroup]: global _zen_model if _zen_model >=3D 4: @@ -584,6 +613,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdIlp(), AmdDtlb(), AmdItlb(), AmdLdSt(), --=20 2.44.0.278.ge034bb2e1d-goog From nobody Sun Feb 8 07:26:48 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 211611BDE0 for ; Thu, 14 Mar 2024 05:59:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395953; cv=none; b=iibiSOpliBLqUxkXAbM2GhlEIu4eQZmdtqnAH42w4pX2U6MSJeX83knE55r/KLpiJ0SMsTIi6x9mz6fRy9SpHijjUzFUKjYtXwUWFyGxnU5o0/3oQxLT1eFwql9F9d6PQk9B3VmG1SlozLQUsghX+mnnCRULENCRK8ALGY49NkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710395953; c=relaxed/simple; bh=Mk3XQlHLZxdVodcrzm+PODwSYBMgkZqVt9gXIE7aW2I=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=pCm3SDYQ6Kfokq9Hs0on4N2MikIs4Bb0GZ+8KBnyOPZ11bSGuZzFy+HuRE9S6jgcq07AC6kN62mYpKxgLSLZ/SXxw/WbkyYjOkZC1REJqj2r4251Hd8U20gjVqsV/VxirJmkL/VHVDUsrKMtbxMtccyLBhwANV9ATiHk+rcUVzA= 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=Q3Me8htA; 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="Q3Me8htA" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-608ad239f8fso10660217b3.0 for ; Wed, 13 Mar 2024 22:59:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710395951; x=1711000751; 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=xSBh0lB+a23+39fFaPjg8zQM/Im9uFNXguVDinAnXbc=; b=Q3Me8htAcgDEJEuqazatt0G3Rlq7GsKxRDIeFW0dTzEQfeqVVWA72NvbSLXFhqSXXj O2o+rPXJKuOaBpK9pwDk5/7k7/mc7l6YM9fL+4Ih+5KDYgwBCwQF1BB51REA2TYOkIN1 bGYLLKYjvQO9N5CZ61AwyULuiZCKG1n8d7C9II3FrL9JN3Ub0spAXefYGrtDvIYuTYeD UY4mIgSzwyGO7lBP0oVnNMek3l7+M49LrhB+7BRws094d7Kx3xHKsU9Gj7gz/1BDBScE kYpDAeKO3oCAU1bwTtv9BPOENT5lfFJUyN7EMvl/E/jk4MXV36Nty8XiUs5D23b3lg8t CPcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710395951; x=1711000751; 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=xSBh0lB+a23+39fFaPjg8zQM/Im9uFNXguVDinAnXbc=; b=XEdZagZbTNliN9nTuE8dvk+56r9dsURxiA31UNHP/AXKDyHl0o3rQJ5ti9b+HzoQnX l7Wc4XVfYaBZ04Dgr49CTr8voGsBL1FBY20NWBWziSpHXZVoj3HGnGpDkJATOELUQZl8 ONLZdZUd3PS/lq1ylTw9ckHciAxI+kFoXCIqaHuM+Xrgt74M0i712YeHVD5jNeNuok7g DdD9gfJYu76BTqROCOF6vgp3l0Dh/vDCickODDHSv3AS0EUZL8rFc/MUOEy+rhWn5e7K s5O3HHw4yXct5guTmJvhF4yvRBnyaum8vXnaLgdx9JI4H558ikAQt7Y3E/T1ZfLPbQXD 4pfg== X-Forwarded-Encrypted: i=1; AJvYcCVsDfAdD4STyaRZNRQSOaXVsjEZn7MeNWA8scQj9ljWLD8+i1rURpRCWZs+AE8b6vZbKc+lhpzaK+I5ygwTaDjsWtG0aeLzMYZptqIX X-Gm-Message-State: AOJu0YxTCB1S2UQ98Vl4RhtpIaqfP2ripZp36QLI8JiNfhR7Si55I/li 8F6rJzkqT+2HE9A+fjPS4BIqyXaNrQ7G+YS08iO/XJ7pa1telCsT42F02Kg90KHikggBeNdChDN LZ90tDg== X-Google-Smtp-Source: AGHT+IGz/WcD1pwUVpDjsHmi87+odVdNlep/ZH4vaPqLNRuRB0bMnFJncve4GNCavNVSJJbYCIMFntlCkmwb X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449f:3bde:a4cd:806a]) (user=irogers job=sendgmr) by 2002:a25:9285:0:b0:dc6:dfc6:4207 with SMTP id y5-20020a259285000000b00dc6dfc64207mr211031ybl.10.1710395950986; Wed, 13 Mar 2024 22:59:10 -0700 (PDT) Date: Wed, 13 Mar 2024 22:58:39 -0700 In-Reply-To: <20240314055839.1975063-1-irogers@google.com> Message-Id: <20240314055839.1975063-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: <20240314055839.1975063-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v3 12/12] perf jevents: Add context switch metrics for AMD From: Ian Rogers To: Sandipan Das , Ravi Bangoria , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@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/amd_metrics.py | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tools/perf/pmu-events/amd_metrics.py b/tools/perf/pmu-events/a= md_metrics.py index bf5c4ffa53e9..bc70743c2f11 100755 --- a/tools/perf/pmu-events/amd_metrics.py +++ b/tools/perf/pmu-events/amd_metrics.py @@ -120,6 +120,37 @@ def AmdBr(): description=3D"breakdown of retired branch instructio= ns") =20 =20 +def AmdCtxSw() -> MetricGroup: + cs =3D Event("context\-switches") + metrics =3D [ + Metric("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")) + + ev =3D Event("ls_dispatch.ld_dispatch") + metrics.append(Metric("cs_loads", "Loads per context switch", + d_ratio(ev, cs), "loads/cs")) + + ev =3D Event("ls_dispatch.store_dispatch") + metrics.append(Metric("cs_stores", "Stores per context switch", + d_ratio(ev, cs), "stores/cs")) + + ev =3D Event("ex_ret_brn_tkn") + metrics.append(Metric("cs_br_taken", "Branches taken per context switch", + d_ratio(ev, cs), "br_taken/cs")) + + return MetricGroup("cs", metrics, + description =3D ("Number of context switches per seco= nd, instructions " + "retired & core cycles between context= switches")) + + def AmdIlp() -> MetricGroup: tsc =3D Event("msr/tsc/") c0 =3D Event("msr/mperf/") @@ -613,6 +644,7 @@ def main() -> None: =20 all_metrics =3D MetricGroup("", [ AmdBr(), + AmdCtxSw(), AmdIlp(), AmdDtlb(), AmdItlb(), --=20 2.44.0.278.ge034bb2e1d-goog