[PATCH] powerpc/perf: Add json metric events to present CPI stall cycles in powerpc
Ian Rogers
irogers at google.com
Fri Feb 17 05:10:05 AEDT 2023
On Wed, Feb 15, 2023 at 10:12 PM Athira Rajeev
<atrajeev at linux.vnet.ibm.com> wrote:
>
> Power10 Performance Monitoring Unit (PMU) provides events
> to understand stall cycles of different pipeline stages.
> These events along with completed instructions provides
> useful metrics for application tuning.
>
> Patch implements the json changes to collect counter statistics
> to present the high level CPI stall breakdown metrics. New metric
> group is named as "CPI_STALL_RATIO" and this new metric group
> presents these stall metrics:
> - DISPATCHED_CPI ( Dispatch stall cycles per insn )
> - ISSUE_STALL_CPI ( Issue stall cycles per insn )
> - EXECUTION_STALL_CPI ( Execution stall cycles per insn )
> - COMPLETION_STALL_CPI ( Completition stall cycles per insn )
>
> To avoid multipling of events, PM_RUN_INST_CMPL event has been
> modified to use PMC5(performance monitoring counter5) instead
> of PMC4. This change is needed, since completion stall event
> is using PMC4.
>
> Usage example:
>
> ./perf stat --metric-no-group -M CPI_STALL_RATIO <workload>
>
> Performance counter stats for 'workload':
>
> 63,056,817,982 PM_CMPL_STALL # 0.28 COMPLETION_STALL_CPI
> 1,743,988,038,896 PM_ISSUE_STALL # 7.73 ISSUE_STALL_CPI
> 225,597,495,030 PM_RUN_INST_CMPL # 6.18 DISPATCHED_CPI
> # 37.48 EXECUTION_STALL_CPI
> 1,393,916,546,654 PM_DISP_STALL_CYC
> 8,455,376,836,463 PM_EXEC_STALL
>
> "--metric-no-group" is used for forcing PM_RUN_INST_CMPL to be scheduled
> in all group for more accuracy.
>
> Signed-off-by: Athira Rajeev <atrajeev at linux.vnet.ibm.com>
Acked-by: Ian Rogers <irogers at google.com>
Thanks,
Ian
> ---
> tools/perf/pmu-events/arch/powerpc/power10/metrics.json | 8 ++++----
> tools/perf/pmu-events/arch/powerpc/power10/others.json | 2 +-
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/pmu-events/arch/powerpc/power10/metrics.json b/tools/perf/pmu-events/arch/powerpc/power10/metrics.json
> index b57526fa44f2..6f53583a0c62 100644
> --- a/tools/perf/pmu-events/arch/powerpc/power10/metrics.json
> +++ b/tools/perf/pmu-events/arch/powerpc/power10/metrics.json
> @@ -15,7 +15,7 @@
> {
> "BriefDescription": "Average cycles per completed instruction when dispatch was stalled for any reason",
> "MetricExpr": "PM_DISP_STALL_CYC / PM_RUN_INST_CMPL",
> - "MetricGroup": "CPI",
> + "MetricGroup": "CPI;CPI_STALL_RATIO",
> "MetricName": "DISPATCHED_CPI"
> },
> {
> @@ -147,13 +147,13 @@
> {
> "BriefDescription": "Average cycles per completed instruction when the NTC instruction has been dispatched but not issued for any reason",
> "MetricExpr": "PM_ISSUE_STALL / PM_RUN_INST_CMPL",
> - "MetricGroup": "CPI",
> + "MetricGroup": "CPI;CPI_STALL_RATIO",
> "MetricName": "ISSUE_STALL_CPI"
> },
> {
> "BriefDescription": "Average cycles per completed instruction when the NTC instruction is waiting to be finished in one of the execution units",
> "MetricExpr": "PM_EXEC_STALL / PM_RUN_INST_CMPL",
> - "MetricGroup": "CPI",
> + "MetricGroup": "CPI;CPI_STALL_RATIO",
> "MetricName": "EXECUTION_STALL_CPI"
> },
> {
> @@ -309,7 +309,7 @@
> {
> "BriefDescription": "Average cycles per completed instruction when the NTC instruction cannot complete because the thread was blocked",
> "MetricExpr": "PM_CMPL_STALL / PM_RUN_INST_CMPL",
> - "MetricGroup": "CPI",
> + "MetricGroup": "CPI;CPI_STALL_RATIO",
> "MetricName": "COMPLETION_STALL_CPI"
> },
> {
> diff --git a/tools/perf/pmu-events/arch/powerpc/power10/others.json b/tools/perf/pmu-events/arch/powerpc/power10/others.json
> index 7d0de1a2860b..a771e4b6bec5 100644
> --- a/tools/perf/pmu-events/arch/powerpc/power10/others.json
> +++ b/tools/perf/pmu-events/arch/powerpc/power10/others.json
> @@ -265,7 +265,7 @@
> "BriefDescription": "Load Missed L1, counted at finish time."
> },
> {
> - "EventCode": "0x400FA",
> + "EventCode": "0x500FA",
> "EventName": "PM_RUN_INST_CMPL",
> "BriefDescription": "Completed PowerPC instructions gated by the run latch."
> }
> --
> 2.31.1
>
More information about the Linuxppc-dev
mailing list