197dca671SAndi Kleen[
297dca671SAndi Kleen    {
3fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
4*b5948fc6SIan Rogers        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)",
5fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
661ec07f5SHaiyan Song        "MetricName": "Frontend_Bound",
7*b5948fc6SIan Rogers        "PublicDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend. Frontend denotes the first part of the processor core responsible to fetch operations that are executed later on by the Backend part. Within the Frontend; a branch predictor predicts the next address to fetch; cache-lines are fetched from the memory subsystem; parsed into instructions; and lastly decoded into micro-operations (uops). Ideally the Frontend can issue Machine_Width uops every cycle to the Backend. Frontend Bound denotes unutilized issue-slots when there is no Backend stall; i.e. bubbles where Frontend delivered no uops while Backend could have accepted them. For example; stalls due to instruction-cache misses would be categorized under Frontend Bound."
8fd550098SAndi Kleen    },
9fd550098SAndi Kleen    {
10fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend. SMT version; use when SMT is enabled and measuring per logical CPU.",
11*b5948fc6SIan Rogers        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
12fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
1361ec07f5SHaiyan Song        "MetricName": "Frontend_Bound_SMT",
14*b5948fc6SIan Rogers        "PublicDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend. Frontend denotes the first part of the processor core responsible to fetch operations that are executed later on by the Backend part. Within the Frontend; a branch predictor predicts the next address to fetch; cache-lines are fetched from the memory subsystem; parsed into instructions; and lastly decoded into micro-operations (uops). Ideally the Frontend can issue Machine_Width uops every cycle to the Backend. Frontend Bound denotes unutilized issue-slots when there is no Backend stall; i.e. bubbles where Frontend delivered no uops while Backend could have accepted them. For example; stalls due to instruction-cache misses would be categorized under Frontend Bound. SMT version; use when SMT is enabled and measuring per logical CPU."
15fd550098SAndi Kleen    },
16fd550098SAndi Kleen    {
17fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
18*b5948fc6SIan Rogers        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD)",
19fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
2061ec07f5SHaiyan Song        "MetricName": "Bad_Speculation",
2161ec07f5SHaiyan Song        "PublicDescription": "This category represents fraction of slots wasted due to incorrect speculations. This include slots used to issue uops that do not eventually get retired and slots for which the issue-pipeline was blocked due to recovery from earlier incorrect speculation. For example; wasted work due to miss-predicted branches are categorized under Bad Speculation category. Incorrect data speculation followed by Memory Ordering Nukes is another example."
22fd550098SAndi Kleen    },
23fd550098SAndi Kleen    {
24fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations. SMT version; use when SMT is enabled and measuring per logical CPU.",
25*b5948fc6SIan Rogers        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * ( INT_MISC.RECOVERY_CYCLES_ANY / 2 ) ) / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
26fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
2761ec07f5SHaiyan Song        "MetricName": "Bad_Speculation_SMT",
2861ec07f5SHaiyan Song        "PublicDescription": "This category represents fraction of slots wasted due to incorrect speculations. This include slots used to issue uops that do not eventually get retired and slots for which the issue-pipeline was blocked due to recovery from earlier incorrect speculation. For example; wasted work due to miss-predicted branches are categorized under Bad Speculation category. Incorrect data speculation followed by Memory Ordering Nukes is another example. SMT version; use when SMT is enabled and measuring per logical CPU."
29fd550098SAndi Kleen    },
30fd550098SAndi Kleen    {
31fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend",
32*b5948fc6SIan Rogers        "MetricConstraint": "NO_NMI_WATCHDOG",
33*b5948fc6SIan Rogers        "MetricExpr": "1 - ( (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) + (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD)) + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) )",
34fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
3561ec07f5SHaiyan Song        "MetricName": "Backend_Bound",
3661ec07f5SHaiyan Song        "PublicDescription": "This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend. Backend is the portion of the processor core where the out-of-order scheduler dispatches ready uops into their respective execution units; and once completed these uops get retired according to program order. For example; stalls due to data-cache misses or stalls due to the divider unit being overloaded are both categorized under Backend Bound. Backend Bound is further divided into two main categories: Memory Bound and Core Bound."
37fd550098SAndi Kleen    },
38fd550098SAndi Kleen    {
39fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend. SMT version; use when SMT is enabled and measuring per logical CPU.",
40*b5948fc6SIan Rogers        "MetricExpr": "1 - ( (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) + (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * ( INT_MISC.RECOVERY_CYCLES_ANY / 2 ) ) / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) )",
41fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
4261ec07f5SHaiyan Song        "MetricName": "Backend_Bound_SMT",
4361ec07f5SHaiyan Song        "PublicDescription": "This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend. Backend is the portion of the processor core where the out-of-order scheduler dispatches ready uops into their respective execution units; and once completed these uops get retired according to program order. For example; stalls due to data-cache misses or stalls due to the divider unit being overloaded are both categorized under Backend Bound. Backend Bound is further divided into two main categories: Memory Bound and Core Bound. SMT version; use when SMT is enabled and measuring per logical CPU."
44fd550098SAndi Kleen    },
45fd550098SAndi Kleen    {
46fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
47*b5948fc6SIan Rogers        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)",
48fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
4961ec07f5SHaiyan Song        "MetricName": "Retiring",
50*b5948fc6SIan Rogers        "PublicDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired. Ideally; all pipeline slots would be attributed to the Retiring category.  Retiring of 100% would indicate the maximum Pipeline_Width throughput was achieved.  Maximizing Retiring typically increases the Instructions-per-cycle (see IPC metric). Note that a high Retiring value does not necessary mean there is no room for more performance.  For example; Heavy-operations or Microcode Assists are categorized under Retiring. They often indicate suboptimal performance and can often be optimized or avoided. "
51fd550098SAndi Kleen    },
52fd550098SAndi Kleen    {
53fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired. SMT version; use when SMT is enabled and measuring per logical CPU.",
54*b5948fc6SIan Rogers        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
55fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
5661ec07f5SHaiyan Song        "MetricName": "Retiring_SMT",
57*b5948fc6SIan Rogers        "PublicDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired. Ideally; all pipeline slots would be attributed to the Retiring category.  Retiring of 100% would indicate the maximum Pipeline_Width throughput was achieved.  Maximizing Retiring typically increases the Instructions-per-cycle (see IPC metric). Note that a high Retiring value does not necessary mean there is no room for more performance.  For example; Heavy-operations or Microcode Assists are categorized under Retiring. They often indicate suboptimal performance and can often be optimized or avoided. SMT version; use when SMT is enabled and measuring per logical CPU."
58fd550098SAndi Kleen    },
59fd550098SAndi Kleen    {
6061ec07f5SHaiyan Song        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
6197dca671SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
62*b5948fc6SIan Rogers        "MetricGroup": "Ret;Summary",
6397dca671SAndi Kleen        "MetricName": "IPC"
6497dca671SAndi Kleen    },
6597dca671SAndi Kleen    {
66fd550098SAndi Kleen        "BriefDescription": "Uops Per Instruction",
6761ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
68*b5948fc6SIan Rogers        "MetricGroup": "Pipeline;Ret;Retire",
6997dca671SAndi Kleen        "MetricName": "UPI"
7097dca671SAndi Kleen    },
7197dca671SAndi Kleen    {
7261ec07f5SHaiyan Song        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
73*b5948fc6SIan Rogers        "MetricExpr": "1 / (INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD)",
74*b5948fc6SIan Rogers        "MetricGroup": "Pipeline;Mem",
7597dca671SAndi Kleen        "MetricName": "CPI"
7697dca671SAndi Kleen    },
7797dca671SAndi Kleen    {
7861ec07f5SHaiyan Song        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
7997dca671SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
80*b5948fc6SIan Rogers        "MetricGroup": "Pipeline",
8197dca671SAndi Kleen        "MetricName": "CLKS"
8297dca671SAndi Kleen    },
8397dca671SAndi Kleen    {
84*b5948fc6SIan Rogers        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
85*b5948fc6SIan Rogers        "MetricExpr": "4 * CPU_CLK_UNHALTED.THREAD",
86*b5948fc6SIan Rogers        "MetricGroup": "TmaL1",
8797dca671SAndi Kleen        "MetricName": "SLOTS"
8897dca671SAndi Kleen    },
8997dca671SAndi Kleen    {
90*b5948fc6SIan Rogers        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
91*b5948fc6SIan Rogers        "MetricExpr": "4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
92*b5948fc6SIan Rogers        "MetricGroup": "TmaL1_SMT",
93fd550098SAndi Kleen        "MetricName": "SLOTS_SMT"
94fd550098SAndi Kleen    },
95fd550098SAndi Kleen    {
96*b5948fc6SIan Rogers        "BriefDescription": "The ratio of Executed- by Issued-Uops",
97*b5948fc6SIan Rogers        "MetricExpr": "UOPS_DISPATCHED.THREAD / UOPS_ISSUED.ANY",
98*b5948fc6SIan Rogers        "MetricGroup": "Cor;Pipeline",
99*b5948fc6SIan Rogers        "MetricName": "Execute_per_Issue",
100*b5948fc6SIan Rogers        "PublicDescription": "The ratio of Executed- by Issued-Uops. Ratio > 1 suggests high rate of uop micro-fusions. Ratio < 1 suggest high rate of \"execute\" at rename stage."
10197dca671SAndi Kleen    },
10297dca671SAndi Kleen    {
103*b5948fc6SIan Rogers        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
104*b5948fc6SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
105*b5948fc6SIan Rogers        "MetricGroup": "Ret;SMT;TmaL1",
10697dca671SAndi Kleen        "MetricName": "CoreIPC"
10797dca671SAndi Kleen    },
10897dca671SAndi Kleen    {
109*b5948fc6SIan Rogers        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
110*b5948fc6SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
111*b5948fc6SIan Rogers        "MetricGroup": "Ret;SMT;TmaL1_SMT",
112fd550098SAndi Kleen        "MetricName": "CoreIPC_SMT"
113fd550098SAndi Kleen    },
114fd550098SAndi Kleen    {
115fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
116*b5948fc6SIan Rogers        "MetricExpr": "( 1 * ( FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE ) + 2 * FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + 4 * ( FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE ) + 8 * SIMD_FP_256.PACKED_SINGLE ) / CPU_CLK_UNHALTED.THREAD",
117*b5948fc6SIan Rogers        "MetricGroup": "Ret;Flops",
118fd550098SAndi Kleen        "MetricName": "FLOPc"
119fd550098SAndi Kleen    },
120fd550098SAndi Kleen    {
121fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
122*b5948fc6SIan Rogers        "MetricExpr": "( 1 * ( FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE ) + 2 * FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + 4 * ( FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE ) + 8 * SIMD_FP_256.PACKED_SINGLE ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
123*b5948fc6SIan Rogers        "MetricGroup": "Ret;Flops_SMT",
124fd550098SAndi Kleen        "MetricName": "FLOPc_SMT"
125fd550098SAndi Kleen    },
126fd550098SAndi Kleen    {
127fd550098SAndi Kleen        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
12861ec07f5SHaiyan Song        "MetricExpr": "UOPS_DISPATCHED.THREAD / (( cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@)",
129*b5948fc6SIan Rogers        "MetricGroup": "Backend;Cor;Pipeline;PortsUtil",
13097dca671SAndi Kleen        "MetricName": "ILP"
13197dca671SAndi Kleen    },
13297dca671SAndi Kleen    {
13361ec07f5SHaiyan Song        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
134fd550098SAndi Kleen        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
13597dca671SAndi Kleen        "MetricGroup": "SMT",
13697dca671SAndi Kleen        "MetricName": "CORE_CLKS"
13797dca671SAndi Kleen    },
13897dca671SAndi Kleen    {
139*b5948fc6SIan Rogers        "BriefDescription": "Total number of retired Instructions, Sample with: INST_RETIRED.PREC_DIST",
140*b5948fc6SIan Rogers        "MetricExpr": "INST_RETIRED.ANY",
141*b5948fc6SIan Rogers        "MetricGroup": "Summary;TmaL1",
142*b5948fc6SIan Rogers        "MetricName": "Instructions"
143*b5948fc6SIan Rogers    },
144*b5948fc6SIan Rogers    {
145*b5948fc6SIan Rogers        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
146*b5948fc6SIan Rogers        "MetricExpr": "IDQ.DSB_UOPS / (( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) )",
147*b5948fc6SIan Rogers        "MetricGroup": "DSB;Fed;FetchBW",
148*b5948fc6SIan Rogers        "MetricName": "DSB_Coverage"
149*b5948fc6SIan Rogers    },
150*b5948fc6SIan Rogers    {
151fd550098SAndi Kleen        "BriefDescription": "Average CPU Utilization",
15261ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
153*b5948fc6SIan Rogers        "MetricGroup": "HPC;Summary",
15497dca671SAndi Kleen        "MetricName": "CPU_Utilization"
15597dca671SAndi Kleen    },
15697dca671SAndi Kleen    {
157*b5948fc6SIan Rogers        "BriefDescription": "Measured Average Frequency for unhalted processors [GHz]",
158*b5948fc6SIan Rogers        "MetricExpr": "(CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time",
159*b5948fc6SIan Rogers        "MetricGroup": "Summary;Power",
160*b5948fc6SIan Rogers        "MetricName": "Average_Frequency"
161*b5948fc6SIan Rogers    },
162*b5948fc6SIan Rogers    {
16397dca671SAndi Kleen        "BriefDescription": "Giga Floating Point Operations Per Second",
164*b5948fc6SIan Rogers        "MetricExpr": "( ( 1 * ( FP_COMP_OPS_EXE.SSE_SCALAR_SINGLE + FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE ) + 2 * FP_COMP_OPS_EXE.SSE_PACKED_DOUBLE + 4 * ( FP_COMP_OPS_EXE.SSE_PACKED_SINGLE + SIMD_FP_256.PACKED_DOUBLE ) + 8 * SIMD_FP_256.PACKED_SINGLE ) / 1000000000 ) / duration_time",
165*b5948fc6SIan Rogers        "MetricGroup": "Cor;Flops;HPC",
16697dca671SAndi Kleen        "MetricName": "GFLOPs"
16797dca671SAndi Kleen    },
16897dca671SAndi Kleen    {
169fd550098SAndi Kleen        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
17061ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
17197dca671SAndi Kleen        "MetricGroup": "Power",
17297dca671SAndi Kleen        "MetricName": "Turbo_Utilization"
17397dca671SAndi Kleen    },
17497dca671SAndi Kleen    {
17561ec07f5SHaiyan Song        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
176*b5948fc6SIan Rogers        "MetricExpr": "1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
177*b5948fc6SIan Rogers        "MetricGroup": "SMT",
17897dca671SAndi Kleen        "MetricName": "SMT_2T_Utilization"
17997dca671SAndi Kleen    },
18097dca671SAndi Kleen    {
181*b5948fc6SIan Rogers        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
182*b5948fc6SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / CPU_CLK_UNHALTED.THREAD",
183*b5948fc6SIan Rogers        "MetricGroup": "OS",
18497dca671SAndi Kleen        "MetricName": "Kernel_Utilization"
18597dca671SAndi Kleen    },
18697dca671SAndi Kleen    {
187*b5948fc6SIan Rogers        "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode",
188*b5948fc6SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / INST_RETIRED.ANY_P:k",
189*b5948fc6SIan Rogers        "MetricGroup": "OS",
190*b5948fc6SIan Rogers        "MetricName": "Kernel_CPI"
191*b5948fc6SIan Rogers    },
192*b5948fc6SIan Rogers    {
193fd550098SAndi Kleen        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
19461ec07f5SHaiyan Song        "MetricExpr": "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000",
195*b5948fc6SIan Rogers        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
196fd550098SAndi Kleen        "MetricName": "DRAM_BW_Use"
197fd550098SAndi Kleen    },
198fd550098SAndi Kleen    {
199*b5948fc6SIan Rogers        "BriefDescription": "Average latency of all requests to external memory (in Uncore cycles)",
200*b5948fc6SIan Rogers        "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@",
201*b5948fc6SIan Rogers        "MetricGroup": "Mem;SoC",
202*b5948fc6SIan Rogers        "MetricName": "MEM_Request_Latency"
203*b5948fc6SIan Rogers    },
204*b5948fc6SIan Rogers    {
205*b5948fc6SIan Rogers        "BriefDescription": "Average number of parallel requests to external memory. Accounts for all requests",
206*b5948fc6SIan Rogers        "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@",
207*b5948fc6SIan Rogers        "MetricGroup": "Mem;SoC",
208*b5948fc6SIan Rogers        "MetricName": "MEM_Parallel_Requests"
209*b5948fc6SIan Rogers    },
210*b5948fc6SIan Rogers    {
211*b5948fc6SIan Rogers        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
212*b5948fc6SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH:u",
213*b5948fc6SIan Rogers        "MetricGroup": "Branches;OS",
214*b5948fc6SIan Rogers        "MetricName": "IpFarBranch"
215*b5948fc6SIan Rogers    },
216*b5948fc6SIan Rogers    {
21761ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per core",
21897dca671SAndi Kleen        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
21997dca671SAndi Kleen        "MetricGroup": "Power",
22097dca671SAndi Kleen        "MetricName": "C3_Core_Residency"
22197dca671SAndi Kleen    },
22297dca671SAndi Kleen    {
22361ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per core",
22497dca671SAndi Kleen        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
22597dca671SAndi Kleen        "MetricGroup": "Power",
22697dca671SAndi Kleen        "MetricName": "C6_Core_Residency"
22797dca671SAndi Kleen    },
22897dca671SAndi Kleen    {
22961ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per core",
23097dca671SAndi Kleen        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
23197dca671SAndi Kleen        "MetricGroup": "Power",
23297dca671SAndi Kleen        "MetricName": "C7_Core_Residency"
23397dca671SAndi Kleen    },
23497dca671SAndi Kleen    {
23561ec07f5SHaiyan Song        "BriefDescription": "C2 residency percent per package",
23697dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
23797dca671SAndi Kleen        "MetricGroup": "Power",
23897dca671SAndi Kleen        "MetricName": "C2_Pkg_Residency"
23997dca671SAndi Kleen    },
24097dca671SAndi Kleen    {
24161ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per package",
24297dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
24397dca671SAndi Kleen        "MetricGroup": "Power",
24497dca671SAndi Kleen        "MetricName": "C3_Pkg_Residency"
24597dca671SAndi Kleen    },
24697dca671SAndi Kleen    {
24761ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per package",
24897dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
24997dca671SAndi Kleen        "MetricGroup": "Power",
25097dca671SAndi Kleen        "MetricName": "C6_Pkg_Residency"
25197dca671SAndi Kleen    },
25297dca671SAndi Kleen    {
25361ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per package",
25497dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
25597dca671SAndi Kleen        "MetricGroup": "Power",
25697dca671SAndi Kleen        "MetricName": "C7_Pkg_Residency"
25797dca671SAndi Kleen    }
25897dca671SAndi Kleen]
259