[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP-5=fVH0spLTv16Fs37PKQNkkPXZUcyomQ+Vjc1+NAA9GU5ow@mail.gmail.com>
Date: Fri, 18 Oct 2024 08:47:01 -0700
From: Ian Rogers <irogers@...gle.com>
To: Sandipan Das <sandipan.das@....com>
Cc: linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org,
peterz@...radead.org, mingo@...hat.com, acme@...nel.org, namhyung@...nel.org,
mark.rutland@....com, alexander.shishkin@...ux.intel.com, jolsa@...nel.org,
adrian.hunter@...el.com, eranian@...gle.com, ravi.bangoria@....com,
ananth.narayan@....com
Subject: Re: [PATCH 2/3] perf vendor events amd: Add Zen 5 data fabric metrics
On Fri, Oct 18, 2024 at 2:32 AM Sandipan Das <sandipan.das@....com> wrote:
>
> Add data fabric metrics taken from Section 2.1.16.2 "Performance
> Measurement" in the Processor Programming Reference (PPR) for AMD Family
> 1Ah Model 02h Revision C1 Processors document available at the link
> below.
>
> The recommended metrics are sourced from Table 28 "Guidance for Common
> Performance Statistics with Complex Event Selects". They capture data
> bandwidth for various links and interfaces in the data fabric.
>
> Link: https://bugzilla.kernel.org/attachment.cgi?id=307010
> Signed-off-by: Sandipan Das <sandipan.das@....com>
> ---
> .../arch/x86/amdzen5/recommended.json | 112 ++++++++++++++++++
> 1 file changed, 112 insertions(+)
>
> diff --git a/tools/perf/pmu-events/arch/x86/amdzen5/recommended.json b/tools/perf/pmu-events/arch/x86/amdzen5/recommended.json
> index c97874039c1e..635d57e3bc15 100644
> --- a/tools/perf/pmu-events/arch/x86/amdzen5/recommended.json
> +++ b/tools/perf/pmu-events/arch/x86/amdzen5/recommended.json
> @@ -341,5 +341,117 @@
> "MetricGroup": "memory_controller",
> "PerPkg": "1",
> "ScaleUnit": "1per_memclk"
> + },
> + {
> + "MetricName": "dram_read_bandwidth_for_local_or_remote_socket",
> + "BriefDescription": "DRAM read data bandwidth for accesses in local or remote socket.",
> + "MetricExpr": "(local_or_remote_socket_read_data_beats_dram_0 + local_or_remote_socket_read_data_beats_dram_1 + local_or_remote_socket_read_data_beats_dram_2 + local_or_remote_socket_read_data_beats_dram_3 + local_or_remote_socket_read_data_beats_dram_4 + local_or_remote_socket_read_data_beats_dram_5 + local_or_remote_socket_read_data_beats_dram_6 + local_or_remote_socket_read_data_beats_dram_7 + local_or_remote_socket_read_data_beats_dram_8 + local_or_remote_socket_read_data_beats_dram_9 + local_or_remote_socket_read_data_beats_dram_10 + local_or_remote_socket_read_data_beats_dram_11) / duration_time",
Fwiw, I think we can make writing metrics like this less error prone
with python. PTAL at:
https://lore.kernel.org/lkml/20240926174101.406874-1-irogers@google.com/
Thanks,
Ian
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "dram_write_bandwidth_for_local_socket",
> + "BriefDescription": "DRAM write data bandwidth for accesses in local socket.",
> + "MetricExpr": "(local_socket_write_data_beats_dram_0 + local_socket_write_data_beats_dram_1 + local_socket_write_data_beats_dram_2 + local_socket_write_data_beats_dram_3 + local_socket_write_data_beats_dram_4 + local_socket_write_data_beats_dram_5 + local_socket_write_data_beats_dram_6 + local_socket_write_data_beats_dram_7 + local_socket_write_data_beats_dram_8 + local_socket_write_data_beats_dram_9 + local_socket_write_data_beats_dram_10 + local_socket_write_data_beats_dram_11) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "dram_write_bandwidth_for_remote_socket",
> + "BriefDescription": "DRAM write data bandwidth for accesses in remote socket.",
> + "MetricExpr": "(remote_socket_write_data_beats_dram_0 + remote_socket_write_data_beats_dram_1 + remote_socket_write_data_beats_dram_2 + remote_socket_write_data_beats_dram_3 + remote_socket_write_data_beats_dram_4 + remote_socket_write_data_beats_dram_5 + remote_socket_write_data_beats_dram_6 + remote_socket_write_data_beats_dram_7 + remote_socket_write_data_beats_dram_8 + remote_socket_write_data_beats_dram_9 + remote_socket_write_data_beats_dram_10 + remote_socket_write_data_beats_dram_11) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "dram_write_bandwidth_for_local_or_remote_socket",
> + "BriefDescription": "DRAM write data bandwidth for accesses in local or remote socket.",
> + "MetricExpr": "(local_or_remote_socket_write_data_beats_dram_0 + local_or_remote_socket_write_data_beats_dram_1 + local_or_remote_socket_write_data_beats_dram_2 + local_or_remote_socket_write_data_beats_dram_3 + local_or_remote_socket_write_data_beats_dram_4 + local_or_remote_socket_write_data_beats_dram_5 + local_or_remote_socket_write_data_beats_dram_6 + local_or_remote_socket_write_data_beats_dram_7 + local_or_remote_socket_write_data_beats_dram_8 + local_or_remote_socket_write_data_beats_dram_9 + local_or_remote_socket_write_data_beats_dram_10 + local_or_remote_socket_write_data_beats_dram_11) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "upstream_dma_read_bandwidth_for_local_socket",
> + "BriefDescription": "Upstream DMA read data bandwidth for accesses in local socket.",
> + "MetricExpr": "(local_socket_upstream_read_data_beats_io_0 + local_socket_upstream_read_data_beats_io_1 + local_socket_upstream_read_data_beats_io_2 + local_socket_upstream_read_data_beats_io_3 + local_socket_upstream_read_data_beats_io_4 + local_socket_upstream_read_data_beats_io_5 + local_socket_upstream_read_data_beats_io_6 + local_socket_upstream_read_data_beats_io_7) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "upstream_dma_write_bandwidth_for_local_socket",
> + "BriefDescription": "Upstream DMA write data bandwidth for accesses in local socket.",
> + "MetricExpr": "(local_socket_upstream_write_data_beats_io_0 + local_socket_upstream_write_data_beats_io_1 + local_socket_upstream_write_data_beats_io_2 + local_socket_upstream_write_data_beats_io_3 + local_socket_upstream_write_data_beats_io_4 + local_socket_upstream_write_data_beats_io_5 + local_socket_upstream_write_data_beats_io_6 + local_socket_upstream_write_data_beats_io_7) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "upstream_dma_read_bandwidth_for_remote_socket",
> + "BriefDescription": "Upstream DMA read data bandwidth for accesses in remote socket.",
> + "MetricExpr": "(remote_socket_upstream_read_data_beats_io_0 + remote_socket_upstream_read_data_beats_io_1 + remote_socket_upstream_read_data_beats_io_2 + remote_socket_upstream_read_data_beats_io_3 + remote_socket_upstream_read_data_beats_io_4 + remote_socket_upstream_read_data_beats_io_5 + remote_socket_upstream_read_data_beats_io_6 + remote_socket_upstream_read_data_beats_io_7) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "upstream_dma_write_bandwidth_for_remote_socket",
> + "BriefDescription": "Upstream DMA write data bandwidth for accesses in remote socket.",
> + "MetricExpr": "(remote_socket_upstream_write_data_beats_io_0 + remote_socket_upstream_write_data_beats_io_1 + remote_socket_upstream_write_data_beats_io_2 + remote_socket_upstream_write_data_beats_io_3 + remote_socket_upstream_write_data_beats_io_4 + remote_socket_upstream_write_data_beats_io_5 + remote_socket_upstream_write_data_beats_io_6 + remote_socket_upstream_write_data_beats_io_7) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "core_inbound_data_bandwidth_for_local_socket",
> + "BriefDescription": "Core inbound data bandwidth for accesses in local socket.",
> + "MetricExpr": "(local_socket_inbound_data_beats_cfi_0 + local_socket_inbound_data_beats_cfi_1 + local_socket_inbound_data_beats_cfi_2 + local_socket_inbound_data_beats_cfi_3 + local_socket_inbound_data_beats_cfi_4 + local_socket_inbound_data_beats_cfi_5 + local_socket_inbound_data_beats_cfi_6 + local_socket_inbound_data_beats_cfi_7 + local_socket_inbound_data_beats_cfi_8 + local_socket_inbound_data_beats_cfi_9 + local_socket_inbound_data_beats_cfi_10 + local_socket_inbound_data_beats_cfi_11 + local_socket_inbound_data_beats_cfi_12 + local_socket_inbound_data_beats_cfi_13 + local_socket_inbound_data_beats_cfi_14 + local_socket_inbound_data_beats_cfi_15) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "3.2e-5MB/s"
> + },
> + {
> + "MetricName": "core_outbound_data_bandwidth_for_local_socket",
> + "BriefDescription": "Core outbound data bandwidth for accesses in local socket.",
> + "MetricExpr": "(local_socket_outbound_data_beats_cfi_0 + local_socket_outbound_data_beats_cfi_1 + local_socket_outbound_data_beats_cfi_2 + local_socket_outbound_data_beats_cfi_3 + local_socket_outbound_data_beats_cfi_4 + local_socket_outbound_data_beats_cfi_5 + local_socket_outbound_data_beats_cfi_6 + local_socket_outbound_data_beats_cfi_7 + local_socket_outbound_data_beats_cfi_8 + local_socket_outbound_data_beats_cfi_9 + local_socket_outbound_data_beats_cfi_10 + local_socket_outbound_data_beats_cfi_11 + local_socket_outbound_data_beats_cfi_12 + local_socket_outbound_data_beats_cfi_13 + local_socket_outbound_data_beats_cfi_14 + local_socket_outbound_data_beats_cfi_15) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "core_inbound_data_bandwidth_for_remote_socket",
> + "BriefDescription": "Core inbound data bandwidth for accesses in remote socket.",
> + "MetricExpr": "(remote_socket_inbound_data_beats_cfi_0 + remote_socket_inbound_data_beats_cfi_1 + remote_socket_inbound_data_beats_cfi_2 + remote_socket_inbound_data_beats_cfi_3 + remote_socket_inbound_data_beats_cfi_4 + remote_socket_inbound_data_beats_cfi_5 + remote_socket_inbound_data_beats_cfi_6 + remote_socket_inbound_data_beats_cfi_7 + remote_socket_inbound_data_beats_cfi_8 + remote_socket_inbound_data_beats_cfi_9 + remote_socket_inbound_data_beats_cfi_10 + remote_socket_inbound_data_beats_cfi_11 + remote_socket_inbound_data_beats_cfi_12 + remote_socket_inbound_data_beats_cfi_13 + remote_socket_inbound_data_beats_cfi_14 + remote_socket_inbound_data_beats_cfi_15) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "3.2e-5MB/s"
> + },
> + {
> + "MetricName": "core_outbound_data_bandwidth_for_remote_socket",
> + "BriefDescription": "Core outbound data bandwidth for accesses in remote socket.",
> + "MetricExpr": "(remote_socket_outbound_data_beats_cfi_0 + remote_socket_outbound_data_beats_cfi_1 + remote_socket_outbound_data_beats_cfi_2 + remote_socket_outbound_data_beats_cfi_3 + remote_socket_outbound_data_beats_cfi_4 + remote_socket_outbound_data_beats_cfi_5 + remote_socket_outbound_data_beats_cfi_6 + remote_socket_outbound_data_beats_cfi_7 + remote_socket_outbound_data_beats_cfi_8 + remote_socket_outbound_data_beats_cfi_9 + remote_socket_outbound_data_beats_cfi_10 + remote_socket_outbound_data_beats_cfi_11 + remote_socket_outbound_data_beats_cfi_12 + remote_socket_outbound_data_beats_cfi_13 + remote_socket_outbound_data_beats_cfi_14 + remote_socket_outbound_data_beats_cfi_15) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "cross_socket_inbound_data_bandwidth_for_local_socket",
> + "BriefDescription": "Inbound data bandwidth for accesses between local socket and remote socket.",
> + "MetricExpr": "(local_socket_inbound_data_beats_link_0 + local_socket_inbound_data_beats_link_1 + local_socket_inbound_data_beats_link_2 + local_socket_inbound_data_beats_link_3 + local_socket_inbound_data_beats_link_4 + local_socket_inbound_data_beats_link_5) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> + },
> + {
> + "MetricName": "cross_socket_outbound_data_bandwidth_for_local_socket",
> + "BriefDescription": "Outbound data bandwidth for accesses between local socket and remote socket.",
> + "MetricExpr": "(local_socket_outbound_data_beats_link_0 + local_socket_outbound_data_beats_link_1 + local_socket_outbound_data_beats_link_2 + local_socket_outbound_data_beats_link_3 + local_socket_outbound_data_beats_link_4 + local_socket_outbound_data_beats_link_5) / duration_time",
> + "MetricGroup": "data_fabric",
> + "PerPkg": "1",
> + "ScaleUnit": "6.4e-5MB/s"
> }
> ]
> --
> 2.43.0
>
Powered by blists - more mailing lists