perf vendor events intel: Update metrics from TMAM 3.5
[linux-2.6-block.git] / tools / perf / pmu-events / arch / x86 / jaketown / jkt-metrics.json
CommitLineData
28bc0ddb
AK
1[
2 {
fd550098
AK
3 "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * cycles)",
4 "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-ops (uops). Ideally the Frontend can issue 4 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.",
5 "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
6 "MetricGroup": "TopdownL1",
7 "MetricName": "Frontend_Bound"
8 },
9 {
10 "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
11 "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-ops (uops). Ideally the Frontend can issue 4 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.",
12 "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.",
13 "MetricGroup": "TopdownL1_SMT",
14 "MetricName": "Frontend_Bound_SMT"
15 },
16 {
17 "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles)",
18 "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.",
19 "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
20 "MetricGroup": "TopdownL1",
21 "MetricName": "Bad_Speculation"
22 },
23 {
24 "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 ) )))",
25 "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.",
26 "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations. SMT version; use when SMT is enabled and measuring per logical CPU.",
27 "MetricGroup": "TopdownL1_SMT",
28 "MetricName": "Bad_Speculation_SMT"
29 },
30 {
31 "MetricExpr": "1 - ( (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * cycles)) + (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles)) + (UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)) )",
32 "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.",
33 "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",
34 "MetricGroup": "TopdownL1",
35 "MetricName": "Backend_Bound"
36 },
37 {
38 "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 ) )))) )",
39 "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.",
40 "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.",
41 "MetricGroup": "TopdownL1_SMT",
42 "MetricName": "Backend_Bound_SMT"
43 },
44 {
45 "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)",
46 "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 4 uops retired per cycle has been achieved. Maximizing Retiring typically increases the Instruction-Per-Cycle metric. Note that a high Retiring value does not necessary mean there is no room for more performance. For example; Microcode assists are categorized under Retiring. They hurt performance and can often be avoided. ",
47 "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
48 "MetricGroup": "TopdownL1",
49 "MetricName": "Retiring"
50 },
51 {
52 "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
53 "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 4 uops retired per cycle has been achieved. Maximizing Retiring typically increases the Instruction-Per-Cycle metric. Note that a high Retiring value does not necessary mean there is no room for more performance. For example; Microcode assists are categorized under Retiring. They hurt performance and can often be avoided. SMT version; use when SMT is enabled and measuring per logical CPU.",
54 "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.",
55 "MetricGroup": "TopdownL1_SMT",
56 "MetricName": "Retiring_SMT"
57 },
58 {
28bc0ddb 59 "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
fd550098 60 "BriefDescription": "Instructions Per Cycle (per logical thread)",
28bc0ddb
AK
61 "MetricGroup": "TopDownL1",
62 "MetricName": "IPC"
63 },
64 {
28bc0ddb 65 "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
fd550098
AK
66 "BriefDescription": "Uops Per Instruction",
67 "MetricGroup": "Pipeline;Retiring",
28bc0ddb
AK
68 "MetricName": "UPI"
69 },
70 {
fd550098
AK
71 "MetricExpr": "min( 1 , UOPS_ISSUED.ANY / ( (UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY) * 32 * ( ICACHE.HIT + ICACHE.MISSES ) / 4 ) )",
72 "BriefDescription": "Rough Estimation of fraction of fetched lines bytes that were likely (includes speculatively fetches) consumed by program instructions",
73 "MetricGroup": "PGO",
28bc0ddb
AK
74 "MetricName": "IFetch_Line_Utilization"
75 },
76 {
fd550098
AK
77 "MetricExpr": "IDQ.DSB_UOPS / (( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) )",
78 "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
79 "MetricGroup": "DSB;Frontend_Bandwidth",
28bc0ddb
AK
80 "MetricName": "DSB_Coverage"
81 },
82 {
984d91f4 83 "MetricExpr": "1 / (INST_RETIRED.ANY / cycles)",
fd550098 84 "BriefDescription": "Cycles Per Instruction (threaded)",
28bc0ddb
AK
85 "MetricGroup": "Pipeline;Summary",
86 "MetricName": "CPI"
87 },
88 {
28bc0ddb 89 "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
fd550098 90 "BriefDescription": "Per-thread actual clocks when the logical processor is active.",
28bc0ddb
AK
91 "MetricGroup": "Summary",
92 "MetricName": "CLKS"
93 },
94 {
fd550098
AK
95 "MetricExpr": "4 * cycles",
96 "BriefDescription": "Total issue-pipeline slots (per core)",
28bc0ddb
AK
97 "MetricGroup": "TopDownL1",
98 "MetricName": "SLOTS"
99 },
100 {
fd550098
AK
101 "MetricExpr": "4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
102 "BriefDescription": "Total issue-pipeline slots (per core)",
103 "MetricGroup": "TopDownL1_SMT",
104 "MetricName": "SLOTS_SMT"
105 },
106 {
28bc0ddb 107 "MetricExpr": "INST_RETIRED.ANY",
fd550098 108 "BriefDescription": "Total number of retired Instructions",
28bc0ddb
AK
109 "MetricGroup": "Summary",
110 "MetricName": "Instructions"
111 },
112 {
fd550098 113 "MetricExpr": "INST_RETIRED.ANY / cycles",
28bc0ddb 114 "BriefDescription": "Instructions Per Cycle (per physical core)",
28bc0ddb
AK
115 "MetricGroup": "SMT",
116 "MetricName": "CoreIPC"
117 },
118 {
fd550098
AK
119 "MetricExpr": "INST_RETIRED.ANY / (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
120 "BriefDescription": "Instructions Per Cycle (per physical core)",
121 "MetricGroup": "SMT",
122 "MetricName": "CoreIPC_SMT"
123 },
124 {
125 "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 )) / cycles",
126 "BriefDescription": "Floating Point Operations Per Cycle",
127 "MetricGroup": "FLOPS",
128 "MetricName": "FLOPc"
129 },
130 {
131 "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 ) ))",
132 "BriefDescription": "Floating Point Operations Per Cycle",
133 "MetricGroup": "FLOPS_SMT",
134 "MetricName": "FLOPc_SMT"
135 },
136 {
137 "MetricExpr": "UOPS_DISPATCHED.THREAD / (( cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@)",
28bc0ddb 138 "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
28bc0ddb
AK
139 "MetricGroup": "Pipeline;Ports_Utilization",
140 "MetricName": "ILP"
141 },
142 {
fd550098 143 "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
28bc0ddb 144 "BriefDescription": "Core actual clocks when any thread is active on the physical core",
28bc0ddb
AK
145 "MetricGroup": "SMT",
146 "MetricName": "CORE_CLKS"
147 },
148 {
28bc0ddb 149 "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
fd550098 150 "BriefDescription": "Average CPU Utilization",
28bc0ddb
AK
151 "MetricGroup": "Summary",
152 "MetricName": "CPU_Utilization"
153 },
154 {
fd550098 155 "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",
28bc0ddb 156 "BriefDescription": "Giga Floating Point Operations Per Second",
28bc0ddb
AK
157 "MetricGroup": "FLOPS;Summary",
158 "MetricName": "GFLOPs"
159 },
160 {
28bc0ddb 161 "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
fd550098 162 "BriefDescription": "Average Frequency Utilization relative nominal frequency",
28bc0ddb
AK
163 "MetricGroup": "Power",
164 "MetricName": "Turbo_Utilization"
165 },
166 {
28bc0ddb 167 "MetricExpr": "1 - CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
fd550098 168 "BriefDescription": "Fraction of cycles where both hardware threads were active",
28bc0ddb
AK
169 "MetricGroup": "SMT;Summary",
170 "MetricName": "SMT_2T_Utilization"
171 },
172 {
28bc0ddb 173 "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC:u / CPU_CLK_UNHALTED.REF_TSC",
fd550098 174 "BriefDescription": "Fraction of cycles spent in Kernel mode",
28bc0ddb
AK
175 "MetricGroup": "Summary",
176 "MetricName": "Kernel_Utilization"
177 },
178 {
fd550098
AK
179 "MetricExpr": "( 64 * ( uncore_imc@cas_count_read@ + uncore_imc@cas_count_write@ ) / 1000000000 ) / duration_time",
180 "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
181 "MetricGroup": "Memory_BW",
182 "MetricName": "DRAM_BW_Use"
183 },
184 {
185 "MetricExpr": "cbox_0@event\\=0x0@",
186 "BriefDescription": "Socket actual clocks when any core is active on that socket",
187 "MetricGroup": "",
188 "MetricName": "Socket_CLKS"
189 },
190 {
28bc0ddb
AK
191 "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
192 "MetricGroup": "Power",
fd550098 193 "BriefDescription": "C3 residency percent per core",
28bc0ddb
AK
194 "MetricName": "C3_Core_Residency"
195 },
196 {
28bc0ddb
AK
197 "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
198 "MetricGroup": "Power",
fd550098 199 "BriefDescription": "C6 residency percent per core",
28bc0ddb
AK
200 "MetricName": "C6_Core_Residency"
201 },
202 {
28bc0ddb
AK
203 "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
204 "MetricGroup": "Power",
fd550098 205 "BriefDescription": "C7 residency percent per core",
28bc0ddb
AK
206 "MetricName": "C7_Core_Residency"
207 },
208 {
28bc0ddb
AK
209 "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
210 "MetricGroup": "Power",
fd550098 211 "BriefDescription": "C2 residency percent per package",
28bc0ddb
AK
212 "MetricName": "C2_Pkg_Residency"
213 },
214 {
28bc0ddb
AK
215 "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
216 "MetricGroup": "Power",
fd550098 217 "BriefDescription": "C3 residency percent per package",
28bc0ddb
AK
218 "MetricName": "C3_Pkg_Residency"
219 },
220 {
28bc0ddb
AK
221 "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
222 "MetricGroup": "Power",
fd550098 223 "BriefDescription": "C6 residency percent per package",
28bc0ddb
AK
224 "MetricName": "C6_Pkg_Residency"
225 },
226 {
28bc0ddb
AK
227 "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
228 "MetricGroup": "Power",
fd550098 229 "BriefDescription": "C7 residency percent per package",
28bc0ddb
AK
230 "MetricName": "C7_Pkg_Residency"
231 }
232]