Re: [PATCH 1/6] tools/perf/json: Add common metrics for s390

From: Ian Rogers
Date: Mon Mar 13 2023 - 11:22:19 EST


On Mon, Mar 13, 2023 at 1:06 AM Thomas Richter <tmricht@xxxxxxxxxxxxx> wrote:
>
> Add 3 metrics for s390 machines:
> - Cycles per instruction: Amount of CPU cycles used per instructions,
> named cpi.
> - Problem state ratio: Ratio of instructions executed in problem state
> compared to total number of instructions, named prbstate.
> - Level one instruction and data cache misses per 100 instructions,
> named l1mp.
>
> For details about the formulas see this documentation:
> https://www.ibm.com/support/pages/system/files/inline-files/CPU%20MF%20Formulas%20including%20z16%20-%20May%202022_1.pdf
>
> Outpuf after:
> # ./perf stat -M cpi -- dd if=/dev/zero of=/dev/null bs=1M count=10K
> 10240+0 records in
> 10240+0 records out
> 10737418240 bytes (11 GB, 10 GiB) copied, 1.30151 s, 8.2 GB/s
>
> Performance counter stats for 'dd if=/dev/zero of=/dev/null .....':
>
> 6,779,778,802 CPU_CYCLES # 1.96 cpi
> 3,461,975,090 INSTRUCTIONS
>
> 1.306873021 seconds time elapsed
>
> 0.001034000 seconds user
> 1.305677000 seconds sys
> #
>
> Signed-off-by: Thomas Richter <tmricht@xxxxxxxxxxxxx>
> Acked-By: Sumanth Korikkar <sumanthk@xxxxxxxxxxxxx>

Acked-by: Ian Rogers <irogers@xxxxxxxxxx>

Thanks,
Ian

> ---
> .../pmu-events/arch/s390/cf_z13/transaction.json | 15 +++++++++++++++
> .../pmu-events/arch/s390/cf_z14/transaction.json | 15 +++++++++++++++
> .../pmu-events/arch/s390/cf_z15/transaction.json | 15 +++++++++++++++
> .../pmu-events/arch/s390/cf_z16/transaction.json | 15 +++++++++++++++
> 4 files changed, 60 insertions(+)
>
> diff --git a/tools/perf/pmu-events/arch/s390/cf_z13/transaction.json b/tools/perf/pmu-events/arch/s390/cf_z13/transaction.json
> index 1a0034f79f73..86bf83b4504e 100644
> --- a/tools/perf/pmu-events/arch/s390/cf_z13/transaction.json
> +++ b/tools/perf/pmu-events/arch/s390/cf_z13/transaction.json
> @@ -3,5 +3,20 @@
> "BriefDescription": "Transaction count",
> "MetricName": "transaction",
> "MetricExpr": "TX_C_TEND + TX_NC_TEND + TX_NC_TABORT + TX_C_TABORT_SPECIAL + TX_C_TABORT_NO_SPECIAL"
> + },
> + {
> + "BriefDescription": "Cycles per Instruction",
> + "MetricName": "cpi",
> + "MetricExpr": "CPU_CYCLES / INSTRUCTIONS"
> + },
> + {
> + "BriefDescription": "Problem State Instruction Ratio",
> + "MetricName": "prbstate",
> + "MetricExpr": "(PROBLEM_STATE_INSTRUCTIONS / INSTRUCTIONS) * 100"
> + },
> + {
> + "BriefDescription": "Level One Miss per 100 Instructions",
> + "MetricName": "l1mp",
> + "MetricExpr": "((L1I_DIR_WRITES + L1D_DIR_WRITES) / INSTRUCTIONS) * 100"
> }
> ]
> diff --git a/tools/perf/pmu-events/arch/s390/cf_z14/transaction.json b/tools/perf/pmu-events/arch/s390/cf_z14/transaction.json
> index 1a0034f79f73..86bf83b4504e 100644
> --- a/tools/perf/pmu-events/arch/s390/cf_z14/transaction.json
> +++ b/tools/perf/pmu-events/arch/s390/cf_z14/transaction.json
> @@ -3,5 +3,20 @@
> "BriefDescription": "Transaction count",
> "MetricName": "transaction",
> "MetricExpr": "TX_C_TEND + TX_NC_TEND + TX_NC_TABORT + TX_C_TABORT_SPECIAL + TX_C_TABORT_NO_SPECIAL"
> + },
> + {
> + "BriefDescription": "Cycles per Instruction",
> + "MetricName": "cpi",
> + "MetricExpr": "CPU_CYCLES / INSTRUCTIONS"
> + },
> + {
> + "BriefDescription": "Problem State Instruction Ratio",
> + "MetricName": "prbstate",
> + "MetricExpr": "(PROBLEM_STATE_INSTRUCTIONS / INSTRUCTIONS) * 100"
> + },
> + {
> + "BriefDescription": "Level One Miss per 100 Instructions",
> + "MetricName": "l1mp",
> + "MetricExpr": "((L1I_DIR_WRITES + L1D_DIR_WRITES) / INSTRUCTIONS) * 100"
> }
> ]
> diff --git a/tools/perf/pmu-events/arch/s390/cf_z15/transaction.json b/tools/perf/pmu-events/arch/s390/cf_z15/transaction.json
> index 1a0034f79f73..86bf83b4504e 100644
> --- a/tools/perf/pmu-events/arch/s390/cf_z15/transaction.json
> +++ b/tools/perf/pmu-events/arch/s390/cf_z15/transaction.json
> @@ -3,5 +3,20 @@
> "BriefDescription": "Transaction count",
> "MetricName": "transaction",
> "MetricExpr": "TX_C_TEND + TX_NC_TEND + TX_NC_TABORT + TX_C_TABORT_SPECIAL + TX_C_TABORT_NO_SPECIAL"
> + },
> + {
> + "BriefDescription": "Cycles per Instruction",
> + "MetricName": "cpi",
> + "MetricExpr": "CPU_CYCLES / INSTRUCTIONS"
> + },
> + {
> + "BriefDescription": "Problem State Instruction Ratio",
> + "MetricName": "prbstate",
> + "MetricExpr": "(PROBLEM_STATE_INSTRUCTIONS / INSTRUCTIONS) * 100"
> + },
> + {
> + "BriefDescription": "Level One Miss per 100 Instructions",
> + "MetricName": "l1mp",
> + "MetricExpr": "((L1I_DIR_WRITES + L1D_DIR_WRITES) / INSTRUCTIONS) * 100"
> }
> ]
> diff --git a/tools/perf/pmu-events/arch/s390/cf_z16/transaction.json b/tools/perf/pmu-events/arch/s390/cf_z16/transaction.json
> index 1a0034f79f73..86bf83b4504e 100644
> --- a/tools/perf/pmu-events/arch/s390/cf_z16/transaction.json
> +++ b/tools/perf/pmu-events/arch/s390/cf_z16/transaction.json
> @@ -3,5 +3,20 @@
> "BriefDescription": "Transaction count",
> "MetricName": "transaction",
> "MetricExpr": "TX_C_TEND + TX_NC_TEND + TX_NC_TABORT + TX_C_TABORT_SPECIAL + TX_C_TABORT_NO_SPECIAL"
> + },
> + {
> + "BriefDescription": "Cycles per Instruction",
> + "MetricName": "cpi",
> + "MetricExpr": "CPU_CYCLES / INSTRUCTIONS"
> + },
> + {
> + "BriefDescription": "Problem State Instruction Ratio",
> + "MetricName": "prbstate",
> + "MetricExpr": "(PROBLEM_STATE_INSTRUCTIONS / INSTRUCTIONS) * 100"
> + },
> + {
> + "BriefDescription": "Level One Miss per 100 Instructions",
> + "MetricName": "l1mp",
> + "MetricExpr": "((L1I_DIR_WRITES + L1D_DIR_WRITES) / INSTRUCTIONS) * 100"
> }
> ]
> --
> 2.39.1
>