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

Message ID 20230313080201.2440201-1-tmricht@linux.ibm.com
State New
Headers
Series [1/6] tools/perf/json: Add common metrics for s390 |

Commit Message

Thomas Richter March 13, 2023, 8:01 a.m. UTC
  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@linux.ibm.com>
Acked-By: Sumanth Korikkar <sumanthk@linux.ibm.com>
---
 .../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(+)
  

Comments

Ian Rogers March 13, 2023, 3:21 p.m. UTC | #1
On Mon, Mar 13, 2023 at 1:06 AM Thomas Richter <tmricht@linux.ibm.com> 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@linux.ibm.com>
> Acked-By: Sumanth Korikkar <sumanthk@linux.ibm.com>

Acked-by: Ian Rogers <irogers@google.com>

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
>
  

Patch

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"
   }
 ]