linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kajoljain <kjain@linux.ibm.com>
To: "Paul A. Clarke" <pc@us.ibm.com>,
	Michael Ellerman <michaele@au1.ibm.com>
Cc: acme@kernel.org, maddy@linux.vnet.ibm.com,
	rnsastry@linux.ibm.com, jolsa@redhat.com,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	atrajeev@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2] perf vendor events power10: Add metric events json file for power10 platform
Date: Tue, 26 Oct 2021 15:31:06 +0530	[thread overview]
Message-ID: <a6cea033-4d34-8734-b58d-a54c513eaf59@linux.ibm.com> (raw)
In-Reply-To: <20211025120658.GD104437@li-24c3614c-2adc-11b2-a85c-85f334518bdb.ibm.com>



On 10/25/21 5:36 PM, Paul A. Clarke wrote:
> On Mon, Oct 25, 2021 at 02:23:15PM +1100, Michael Ellerman wrote:
>> "Paul A. Clarke" <pc@us.ibm.com> writes:
>>> Thanks for the changes!
>>> More nits below (many left over from prior review)...
>>>
>>> On Fri, Oct 22, 2021 at 11:55:05AM +0530, Kajol Jain wrote:
>>>> Add pmu metric json file for power10 platform.
>>>>
>>>> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
>>>> ---
>>>> Changelog v1 -> v2:
>>>> - Did some nit changes in BriefDescription field
>>>>   as suggested by Paul A. Clarke
>>>>
>>>> - Link to the v1 patch: https://lkml.org/lkml/2021/10/6/131
>>>>
>>>>  .../arch/powerpc/power10/metrics.json         | 676 ++++++++++++++++++
>>>>  1 file changed, 676 insertions(+)
>>>>  create mode 100644 tools/perf/pmu-events/arch/powerpc/power10/metrics.json
>>>>
>>>> diff --git a/tools/perf/pmu-events/arch/powerpc/power10/metrics.json b/tools/perf/pmu-events/arch/powerpc/power10/metrics.json
>>>> new file mode 100644
>>>> index 000000000000..8adab5cd9934
>>>> --- /dev/null
>>>> +++ b/tools/perf/pmu-events/arch/powerpc/power10/metrics.json
>>>> @@ -0,0 +1,676 @@
>>>> +[
>>>> +    {
>>>> +        "BriefDescription": "Percentage of cycles that are run cycles",
>>>> +        "MetricExpr": "PM_RUN_CYC / PM_CYC * 100",
>>>> +        "MetricGroup": "General",
>>>> +        "MetricName": "RUN_CYCLES_RATE",
>>>> +        "ScaleUnit": "1%"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per completed instruction",
>>>> +        "MetricExpr": "PM_CYC / PM_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "CYCLES_PER_INSTRUCTION"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled for any reason",
>>>> +        "MetricExpr": "PM_DISP_STALL_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled because there was a flush",
>>>> +        "MetricExpr": "PM_DISP_STALL_FLUSH / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_FLUSH_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled because the MMU was handling a translation miss",
>>>> +        "MetricExpr": "PM_DISP_STALL_TRANSLATION / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_TRANSLATION_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled waiting to resolve an instruction ERAT miss",
>>>> +        "MetricExpr": "PM_DISP_STALL_IERAT_ONLY_MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_IERAT_ONLY_MISS_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled waiting to resolve an instruction TLB miss",
>>>> +        "MetricExpr": "PM_DISP_STALL_ITLB_MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_ITLB_MISS_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled due to an icache miss",
>>>> +        "MetricExpr": "PM_DISP_STALL_IC_MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_IC_MISS_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled while the instruction was fetched from the local L2",
>>>> +        "MetricExpr": "PM_DISP_STALL_IC_L2 / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_IC_L2_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled while the instruction was fetched from the local L3",
>>>> +        "MetricExpr": "PM_DISP_STALL_IC_L3 / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_IC_L3_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled while the instruction was fetched from any source beyond the local L3",
>>>> +        "MetricExpr": "PM_DISP_STALL_IC_L3MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_IC_L3MISS_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled due to an icache miss after a branch mispredict",
>>>> +        "MetricExpr": "PM_DISP_STALL_BR_MPRED_ICMISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_BR_MPRED_ICMISS_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled while instruction was fetched from the local L2 after suffering a branch mispredict",
>>>> +        "MetricExpr": "PM_DISP_STALL_BR_MPRED_IC_L2 / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_BR_MPRED_IC_L2_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled while instruction was fetched from the local L3 after suffering a branch mispredict",
>>>> +        "MetricExpr": "PM_DISP_STALL_BR_MPRED_IC_L3 / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_BR_MPRED_IC_L3_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled while instruction was fetched from any source beyond the local L3 after suffering a branch mispredict",
>>>> +        "MetricExpr": "PM_DISP_STALL_BR_MPRED_IC_L3MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_BR_MPRED_IC_L3MISS_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled due to a branch mispredict",
>>>> +        "MetricExpr": "PM_DISP_STALL_BR_MPRED / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_BR_MPRED_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch for any reason",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_HELD_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch because of a synchronizing instruction that requires the ICT to be empty before dispatch",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_SYNC_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISP_HELD_STALL_SYNC_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch while waiting on the scoreboard",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_SCOREBOARD_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISP_HELD_STALL_SCOREBOARD_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch due to issue queue full",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_ISSQ_FULL_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISP_HELD_STALL_ISSQ_FULL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch because the mapper/SRB was full",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_RENAME_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_HELD_RENAME_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch because the STF mapper/SRB was full",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_STF_MAPPER_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_HELD_STF_MAPPER_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch because the XVFC mapper/SRB was full",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_XVFC_MAPPER_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_HELD_XVFC_MAPPER_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch for any other reason",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_OTHER_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_HELD_OTHER_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction has been dispatched but not issued for any reason",
>>>> +        "MetricExpr": "PM_ISSUE_STALL / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "ISSUE_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per 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",
>>>> +        "MetricName": "EXECUTION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction spent executing an NTC instruction that gets flushed some time after dispatch",
>>>> +        "MetricExpr": "PM_EXEC_STALL_NTC_FLUSH / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "NTC_FLUSH_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTF instruction finishes at dispatch",
>>>> +        "MetricExpr": "PM_EXEC_STALL_FIN_AT_DISP / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "FIN_AT_DISP_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is executing in the branch unit",
>>>> +        "MetricExpr": "PM_EXEC_STALL_BRU / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "BRU_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a simple fixed point instruction that is executing in the LSU",
>>>> +        "MetricExpr": "PM_EXEC_STALL_SIMPLE_FX / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "SIMPLE_FX_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is executing in the VSU",
>>>> +        "MetricExpr": "PM_EXEC_STALL_VSU / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "VSU_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting to be finished in one of the execution units",
>>>> +        "MetricExpr": "PM_EXEC_STALL_TRANSLATION / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "TRANSLATION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a load or store that suffered a translation miss",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DERAT_ONLY_MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DERAT_ONLY_MISS_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is recovering from a TLB miss",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DERAT_DTLB_MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DERAT_DTLB_MISS_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is executing in the LSU",
>>>> +        "MetricExpr": "PM_EXEC_STALL_LSU / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "LSU_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a load that is executing in the LSU",
>>>> +        "MetricExpr": "PM_EXEC_STALL_LOAD / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "LOAD_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from either the local L2 or local L3",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_L2L3 / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_L2L3_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from either the local L2 or local L3, with an RC dispatch conflict",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_L2L3_CONFLICT / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_L2L3_CONFLICT_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from either the local L2 or local L3, without an RC dispatch conflict",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_L2L3_NOCONFLICT / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_L2L3_NOCONFLICT_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from a source beyond the local L2 and local L3",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_L3MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_L3MISS_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from a neighbor chiplet's L2 or L3 in the same chip",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_L21_L31 / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_L21_L31_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from L4, local memory or OpenCapp chip",
>>>
>>> What is "OpenCapp"?  Is is different from OpenCAPI?
>>>
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_LMEM / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_LMEM_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from a remote chip (cache, L4, memory or OpenCapp) in the same group",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_OFF_CHIP / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_OFF_CHIP_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is waiting for a load miss to resolve from a distant chip (cache, L4, memory or OpenCapp chip)",
>>>> +        "MetricExpr": "PM_EXEC_STALL_DMISS_OFF_NODE / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DMISS_OFF_NODE_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is executing a TLBIEL instruction",
>>>> +        "MetricExpr": "PM_EXEC_STALL_TLBIEL / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "TLBIEL_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is finishing a load after its data has been reloaded from a data source beyond the local L1, OR when the LSU is processing an L1-hit, OR when the NTF instruction merged with another load in the LMQ",
>>>> +        "MetricExpr": "PM_EXEC_STALL_LOAD_FINISH / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "LOAD_FINISH_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a store that is executing in the LSU",
>>>> +        "MetricExpr": "PM_EXEC_STALL_STORE / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "STORE_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is in the store unit outside of handling store misses or other special store operations",
>>>
>>> Is "store unit" not the same as "LSU" ?  Use "LSU" uniformly if appropriate:
>>> s/store unit/LSU/
>>>
>>>> +        "MetricExpr": "PM_EXEC_STALL_STORE_PIPE / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "STORE_PIPE_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a store whose cache line was not resident in the L1 and had to wait for allocation of the missing line into the L1",
>>>> +        "MetricExpr": "PM_EXEC_STALL_STORE_MISS / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "STORE_MISS_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a TLBIE instruction waiting for a response from the L2",
>>>> +        "MetricExpr": "PM_EXEC_STALL_TLBIE / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "TLBIE_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is executing a PTESYNC instruction",
>>>> +        "MetricExpr": "PM_EXEC_STALL_PTESYNC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "PTESYNC_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction cannot complete because the thread was blocked",
>>>> +        "MetricExpr": "PM_CMPL_STALL / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction cannot complete because it was interrupted by ANY exception",
>>>> +        "MetricExpr": "PM_CMPL_STALL_EXCEPTION / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "EXCEPTION_COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is stuck at finish waiting for the non-speculative finish of either a STCX instruction waiting for its result or a load waiting for non-critical sectors of data and ECC",
>>>> +        "MetricExpr": "PM_CMPL_STALL_MEM_ECC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "MEM_ECC_COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction cannot complete the instruction is a STCX instruction waiting for resolution from the nest",
>>>
>>> Need to reword this, I think.  I propose "Average cycles per instruction
>>> when the NTC instruction is a STCX instruction waiting for resolution
>>> from the nest", which follows the form used by HWSYNC_COMPLETION_STALL_CPI,
>>> below.
>>>
>>>> +        "MetricExpr": "PM_CMPL_STALL_STCX / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "STCX_COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a LWSYNC instruction waiting to complete",
>>>> +        "MetricExpr": "PM_CMPL_STALL_LWSYNC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "LWSYNC_COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction is a HWSYNC instruction stuck at finish waiting for a response from the L2",
>>>> +        "MetricExpr": "PM_CMPL_STALL_HWSYNC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "HWSYNC_COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction required special handling before completion",
>>>> +        "MetricExpr": "PM_CMPL_STALL_SPECIAL / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "SPECIAL_COMPLETION_STALL_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when dispatch was stalled because fetch was being held, so there was nothing in the pipeline for this thread",
>>>> +        "MetricExpr": "PM_DISP_STALL_FETCH / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_FETCH_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average cycles per instruction when the NTC instruction was held at dispatch because of power management",
>>>> +        "MetricExpr": "PM_DISP_STALL_HELD_HALT_CYC / PM_RUN_INST_CMPL",
>>>> +        "MetricGroup": "CPI",
>>>> +        "MetricName": "DISPATCHED_HELD_HALT_CPI"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Percentage of flushes per completed run instruction",
>>>
>>> s/per completed run instruction/per instruction/
>>
>> I'm not sure we want to drop "completed" from this and all the following
>> descriptions.
>>
>> There is a meaningful distinction between completed and dispatched
>> instructions, I think it's useful to be explicit about which the event
>> is counting.
>>
>> I agree dropping "run" is a good idea, most people won't understand that
>> "run" means "non-idle", and I think don't expect idle instructions to be
>> counted anyway.
>>
>> ...
>>>
>>>> +        "MetricExpr": "PM_RUN_INST_CMPL / PM_RUN_CYC",
>>>> +        "MetricGroup": "General",
>>>> +        "MetricName": "RUN_IPC"
>>>> +    },
>>>> +    {
>>>> +        "BriefDescription": "Average number of instructions completed per instruction group",
>>>
>>> s/completed//
>>
>> And here the meaning is different if you drop "completed".
> 
> All fair comments.  I am looking for consistency, but correctness trumps.
> 
> Regarding consistency, though, there are lots of occurences like:
> |        "BriefDescription": "Average cycles per instruction when dispatch was stalled for any reason",
> |        "MetricExpr": "PM_DISP_STALL_CYC / PM_RUN_INST_CMPL",
> 
> Can we pick one phrase for all metrics where PM_RUN_INST_CMPL is used,
> perhaps?  "completed instructions" ?

Hi Paul/Michael,
      Sure I will update description part to use "completed
instructions", whereever PM_RUN_INST_CMPL event is used.

Thanks,
Kajol Jain

> 
> PC
> 

  reply	other threads:[~2021-10-26 10:01 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-22  6:25 [PATCH v2] perf vendor events power10: Add metric events json file for power10 platform Kajol Jain
2021-10-22 14:49 ` Paul A. Clarke
2021-10-25  3:23   ` Michael Ellerman
2021-10-25 12:06     ` Paul A. Clarke
2021-10-26 10:01       ` kajoljain [this message]
2021-10-26  9:58   ` kajoljain
2021-10-28  9:04     ` kajoljain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a6cea033-4d34-8734-b58d-a54c513eaf59@linux.ibm.com \
    --to=kjain@linux.ibm.com \
    --cc=acme@kernel.org \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.vnet.ibm.com \
    --cc=michaele@au1.ibm.com \
    --cc=pc@us.ibm.com \
    --cc=rnsastry@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).