xref: /freebsd/lib/libpmc/pmu-events/arch/x86/broadwellde/bdwde-metrics.json (revision 18054d0220cfc8df9c9568c437bd6fbb59d53c3c)
1959826caSMatt Macy[
2959826caSMatt Macy    {
3*18054d02SAlexander Motin        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
4*18054d02SAlexander Motin        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)",
5*18054d02SAlexander Motin        "MetricGroup": "TopdownL1",
6*18054d02SAlexander Motin        "MetricName": "Frontend_Bound",
7*18054d02SAlexander Motin        "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."
8*18054d02SAlexander Motin    },
9*18054d02SAlexander Motin    {
10*18054d02SAlexander Motin        "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*18054d02SAlexander Motin        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
12*18054d02SAlexander Motin        "MetricGroup": "TopdownL1_SMT",
13*18054d02SAlexander Motin        "MetricName": "Frontend_Bound_SMT",
14*18054d02SAlexander Motin        "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."
15*18054d02SAlexander Motin    },
16*18054d02SAlexander Motin    {
17*18054d02SAlexander Motin        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
18*18054d02SAlexander Motin        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD)",
19*18054d02SAlexander Motin        "MetricGroup": "TopdownL1",
20*18054d02SAlexander Motin        "MetricName": "Bad_Speculation",
21*18054d02SAlexander Motin        "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."
22*18054d02SAlexander Motin    },
23*18054d02SAlexander Motin    {
24*18054d02SAlexander Motin        "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*18054d02SAlexander Motin        "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 ) ))",
26*18054d02SAlexander Motin        "MetricGroup": "TopdownL1_SMT",
27*18054d02SAlexander Motin        "MetricName": "Bad_Speculation_SMT",
28*18054d02SAlexander Motin        "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."
29*18054d02SAlexander Motin    },
30*18054d02SAlexander Motin    {
31*18054d02SAlexander Motin        "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*18054d02SAlexander Motin        "MetricConstraint": "NO_NMI_WATCHDOG",
33*18054d02SAlexander Motin        "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)) )",
34*18054d02SAlexander Motin        "MetricGroup": "TopdownL1",
35*18054d02SAlexander Motin        "MetricName": "Backend_Bound",
36*18054d02SAlexander Motin        "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."
37*18054d02SAlexander Motin    },
38*18054d02SAlexander Motin    {
39*18054d02SAlexander Motin        "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*18054d02SAlexander Motin        "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 ) ))) )",
41*18054d02SAlexander Motin        "MetricGroup": "TopdownL1_SMT",
42*18054d02SAlexander Motin        "MetricName": "Backend_Bound_SMT",
43*18054d02SAlexander Motin        "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."
44*18054d02SAlexander Motin    },
45*18054d02SAlexander Motin    {
46*18054d02SAlexander Motin        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
47*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)",
48*18054d02SAlexander Motin        "MetricGroup": "TopdownL1",
49*18054d02SAlexander Motin        "MetricName": "Retiring",
50*18054d02SAlexander Motin        "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."
51*18054d02SAlexander Motin    },
52*18054d02SAlexander Motin    {
53*18054d02SAlexander Motin        "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*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
55*18054d02SAlexander Motin        "MetricGroup": "TopdownL1_SMT",
56*18054d02SAlexander Motin        "MetricName": "Retiring_SMT",
57*18054d02SAlexander Motin        "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."
58*18054d02SAlexander Motin    },
59*18054d02SAlexander Motin    {
60*18054d02SAlexander Motin        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
61959826caSMatt Macy        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
62*18054d02SAlexander Motin        "MetricGroup": "Ret;Summary",
63959826caSMatt Macy        "MetricName": "IPC"
64959826caSMatt Macy    },
65959826caSMatt Macy    {
66959826caSMatt Macy        "BriefDescription": "Uops Per Instruction",
67959826caSMatt Macy        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
68*18054d02SAlexander Motin        "MetricGroup": "Pipeline;Ret;Retire",
69959826caSMatt Macy        "MetricName": "UPI"
70959826caSMatt Macy    },
71959826caSMatt Macy    {
72*18054d02SAlexander Motin        "BriefDescription": "Instruction per taken branch",
73*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / BR_INST_RETIRED.NEAR_TAKEN",
74*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;FetchBW",
75*18054d02SAlexander Motin        "MetricName": "UpTB"
76959826caSMatt Macy    },
77959826caSMatt Macy    {
78*18054d02SAlexander Motin        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
79*18054d02SAlexander Motin        "MetricExpr": "1 / (INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD)",
80*18054d02SAlexander Motin        "MetricGroup": "Pipeline;Mem",
81959826caSMatt Macy        "MetricName": "CPI"
82959826caSMatt Macy    },
83959826caSMatt Macy    {
84*18054d02SAlexander Motin        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
85959826caSMatt Macy        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
86*18054d02SAlexander Motin        "MetricGroup": "Pipeline",
87959826caSMatt Macy        "MetricName": "CLKS"
88959826caSMatt Macy    },
89959826caSMatt Macy    {
90*18054d02SAlexander Motin        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
91*18054d02SAlexander Motin        "MetricExpr": "4 * CPU_CLK_UNHALTED.THREAD",
92*18054d02SAlexander Motin        "MetricGroup": "TmaL1",
93959826caSMatt Macy        "MetricName": "SLOTS"
94959826caSMatt Macy    },
95959826caSMatt Macy    {
96*18054d02SAlexander Motin        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
97*18054d02SAlexander Motin        "MetricExpr": "4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
98*18054d02SAlexander Motin        "MetricGroup": "TmaL1_SMT",
99*18054d02SAlexander Motin        "MetricName": "SLOTS_SMT"
100959826caSMatt Macy    },
101959826caSMatt Macy    {
102*18054d02SAlexander Motin        "BriefDescription": "The ratio of Executed- by Issued-Uops",
103*18054d02SAlexander Motin        "MetricExpr": "UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY",
104*18054d02SAlexander Motin        "MetricGroup": "Cor;Pipeline",
105*18054d02SAlexander Motin        "MetricName": "Execute_per_Issue",
106*18054d02SAlexander Motin        "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."
107*18054d02SAlexander Motin    },
108*18054d02SAlexander Motin    {
109*18054d02SAlexander Motin        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
110*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
111*18054d02SAlexander Motin        "MetricGroup": "Ret;SMT;TmaL1",
112959826caSMatt Macy        "MetricName": "CoreIPC"
113959826caSMatt Macy    },
114959826caSMatt Macy    {
115*18054d02SAlexander Motin        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
116*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
117*18054d02SAlexander Motin        "MetricGroup": "Ret;SMT;TmaL1_SMT",
118*18054d02SAlexander Motin        "MetricName": "CoreIPC_SMT"
119*18054d02SAlexander Motin    },
120*18054d02SAlexander Motin    {
121*18054d02SAlexander Motin        "BriefDescription": "Floating Point Operations Per Cycle",
122*18054d02SAlexander Motin        "MetricExpr": "( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / CPU_CLK_UNHALTED.THREAD",
123*18054d02SAlexander Motin        "MetricGroup": "Ret;Flops",
124*18054d02SAlexander Motin        "MetricName": "FLOPc"
125*18054d02SAlexander Motin    },
126*18054d02SAlexander Motin    {
127*18054d02SAlexander Motin        "BriefDescription": "Floating Point Operations Per Cycle",
128*18054d02SAlexander Motin        "MetricExpr": "( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
129*18054d02SAlexander Motin        "MetricGroup": "Ret;Flops_SMT",
130*18054d02SAlexander Motin        "MetricName": "FLOPc_SMT"
131*18054d02SAlexander Motin    },
132*18054d02SAlexander Motin    {
133*18054d02SAlexander Motin        "BriefDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width)",
134*18054d02SAlexander Motin        "MetricExpr": "( (FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE) + (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE) ) / ( 2 * CPU_CLK_UNHALTED.THREAD )",
135*18054d02SAlexander Motin        "MetricGroup": "Cor;Flops;HPC",
136*18054d02SAlexander Motin        "MetricName": "FP_Arith_Utilization",
137*18054d02SAlexander Motin        "PublicDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). Values > 1 are possible due to Fused-Multiply Add (FMA) counting."
138*18054d02SAlexander Motin    },
139*18054d02SAlexander Motin    {
140*18054d02SAlexander Motin        "BriefDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). SMT version; use when SMT is enabled and measuring per logical CPU.",
141*18054d02SAlexander Motin        "MetricExpr": "( (FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE) + (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE) ) / ( 2 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ) )",
142*18054d02SAlexander Motin        "MetricGroup": "Cor;Flops;HPC_SMT",
143*18054d02SAlexander Motin        "MetricName": "FP_Arith_Utilization_SMT",
144*18054d02SAlexander Motin        "PublicDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). Values > 1 are possible due to Fused-Multiply Add (FMA) counting. SMT version; use when SMT is enabled and measuring per logical CPU."
145*18054d02SAlexander Motin    },
146*18054d02SAlexander Motin    {
147959826caSMatt Macy        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
148*18054d02SAlexander Motin        "MetricExpr": "UOPS_EXECUTED.THREAD / (( cpu@UOPS_EXECUTED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC)",
149*18054d02SAlexander Motin        "MetricGroup": "Backend;Cor;Pipeline;PortsUtil",
150959826caSMatt Macy        "MetricName": "ILP"
151959826caSMatt Macy    },
152959826caSMatt Macy    {
153*18054d02SAlexander Motin        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
154*18054d02SAlexander Motin        "MetricExpr": "( ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) + (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * (BR_MISP_RETIRED.ALL_BRANCHES * (12 * ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ) / CPU_CLK_UNHALTED.THREAD) / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY )) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) ) * (4 * CPU_CLK_UNHALTED.THREAD) / BR_MISP_RETIRED.ALL_BRANCHES",
155*18054d02SAlexander Motin        "MetricGroup": "Bad;BrMispredicts",
156*18054d02SAlexander Motin        "MetricName": "Branch_Misprediction_Cost"
157959826caSMatt Macy    },
158959826caSMatt Macy    {
159*18054d02SAlexander Motin        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
160*18054d02SAlexander Motin        "MetricExpr": "( ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * (( 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 ) )))) + (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * (BR_MISP_RETIRED.ALL_BRANCHES * (12 * ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY ) / CPU_CLK_UNHALTED.THREAD) / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT + BACLEARS.ANY )) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) ) * (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )) / BR_MISP_RETIRED.ALL_BRANCHES",
161*18054d02SAlexander Motin        "MetricGroup": "Bad;BrMispredicts_SMT",
162*18054d02SAlexander Motin        "MetricName": "Branch_Misprediction_Cost_SMT"
163*18054d02SAlexander Motin    },
164*18054d02SAlexander Motin    {
165*18054d02SAlexander Motin        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear)",
166*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
167*18054d02SAlexander Motin        "MetricGroup": "Bad;BadSpec;BrMispredicts",
168*18054d02SAlexander Motin        "MetricName": "IpMispredict"
169*18054d02SAlexander Motin    },
170*18054d02SAlexander Motin    {
171*18054d02SAlexander Motin        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
172*18054d02SAlexander Motin        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
173959826caSMatt Macy        "MetricGroup": "SMT",
174959826caSMatt Macy        "MetricName": "CORE_CLKS"
175959826caSMatt Macy    },
176959826caSMatt Macy    {
177*18054d02SAlexander Motin        "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)",
178*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS",
179*18054d02SAlexander Motin        "MetricGroup": "InsType",
180*18054d02SAlexander Motin        "MetricName": "IpLoad"
181959826caSMatt Macy    },
182959826caSMatt Macy    {
183*18054d02SAlexander Motin        "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)",
184*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES",
185*18054d02SAlexander Motin        "MetricGroup": "InsType",
186*18054d02SAlexander Motin        "MetricName": "IpStore"
187*18054d02SAlexander Motin    },
188*18054d02SAlexander Motin    {
189*18054d02SAlexander Motin        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
190*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
191*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;InsType",
192*18054d02SAlexander Motin        "MetricName": "IpBranch"
193*18054d02SAlexander Motin    },
194*18054d02SAlexander Motin    {
195*18054d02SAlexander Motin        "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)",
196*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL",
197*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;PGO",
198*18054d02SAlexander Motin        "MetricName": "IpCall"
199*18054d02SAlexander Motin    },
200*18054d02SAlexander Motin    {
201*18054d02SAlexander Motin        "BriefDescription": "Instruction per taken branch",
202*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN",
203*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;FetchBW;Frontend;PGO",
204*18054d02SAlexander Motin        "MetricName": "IpTB"
205*18054d02SAlexander Motin    },
206*18054d02SAlexander Motin    {
207*18054d02SAlexander Motin        "BriefDescription": "Branch instructions per taken branch.",
208*18054d02SAlexander Motin        "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN",
209*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;PGO",
210*18054d02SAlexander Motin        "MetricName": "BpTkBranch"
211*18054d02SAlexander Motin    },
212*18054d02SAlexander Motin    {
213*18054d02SAlexander Motin        "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)",
214*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE )",
215*18054d02SAlexander Motin        "MetricGroup": "Flops;InsType",
216*18054d02SAlexander Motin        "MetricName": "IpFLOP"
217*18054d02SAlexander Motin    },
218*18054d02SAlexander Motin    {
219*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate)",
220*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( (FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE) + (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE) )",
221*18054d02SAlexander Motin        "MetricGroup": "Flops;InsType",
222*18054d02SAlexander Motin        "MetricName": "IpArith",
223*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). May undercount due to FMA double counting. Approximated prior to BDW."
224*18054d02SAlexander Motin    },
225*18054d02SAlexander Motin    {
226*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate)",
227*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
228*18054d02SAlexander Motin        "MetricGroup": "Flops;FpScalar;InsType",
229*18054d02SAlexander Motin        "MetricName": "IpArith_Scalar_SP",
230*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
231*18054d02SAlexander Motin    },
232*18054d02SAlexander Motin    {
233*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate)",
234*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
235*18054d02SAlexander Motin        "MetricGroup": "Flops;FpScalar;InsType",
236*18054d02SAlexander Motin        "MetricName": "IpArith_Scalar_DP",
237*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
238*18054d02SAlexander Motin    },
239*18054d02SAlexander Motin    {
240*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate)",
241*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE )",
242*18054d02SAlexander Motin        "MetricGroup": "Flops;FpVector;InsType",
243*18054d02SAlexander Motin        "MetricName": "IpArith_AVX128",
244*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
245*18054d02SAlexander Motin    },
246*18054d02SAlexander Motin    {
247*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate)",
248*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE )",
249*18054d02SAlexander Motin        "MetricGroup": "Flops;FpVector;InsType",
250*18054d02SAlexander Motin        "MetricName": "IpArith_AVX256",
251*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
252*18054d02SAlexander Motin    },
253*18054d02SAlexander Motin    {
254*18054d02SAlexander Motin        "BriefDescription": "Total number of retired Instructions, Sample with: INST_RETIRED.PREC_DIST",
255*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY",
256*18054d02SAlexander Motin        "MetricGroup": "Summary;TmaL1",
257*18054d02SAlexander Motin        "MetricName": "Instructions"
258*18054d02SAlexander Motin    },
259*18054d02SAlexander Motin    {
260*18054d02SAlexander Motin        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
261*18054d02SAlexander Motin        "MetricExpr": "IDQ.DSB_UOPS / ( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS )",
262*18054d02SAlexander Motin        "MetricGroup": "DSB;Fed;FetchBW",
263*18054d02SAlexander Motin        "MetricName": "DSB_Coverage"
264*18054d02SAlexander Motin    },
265*18054d02SAlexander Motin    {
266*18054d02SAlexander Motin        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand load instructions (in core cycles)",
267*18054d02SAlexander Motin        "MetricExpr": "L1D_PEND_MISS.PENDING / ( MEM_LOAD_UOPS_RETIRED.L1_MISS + mem_load_uops_retired.hit_lfb )",
268*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBound;MemoryLat",
269*18054d02SAlexander Motin        "MetricName": "Load_Miss_Real_Latency",
270*18054d02SAlexander Motin        "PublicDescription": "Actual Average Latency for L1 data-cache miss demand load instructions (in core cycles). Latency may be overestimated for multi-load instructions - e.g. repeat strings."
271*18054d02SAlexander Motin    },
272*18054d02SAlexander Motin    {
273*18054d02SAlexander Motin        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)",
274*18054d02SAlexander Motin        "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES",
275*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBound;MemoryBW",
276959826caSMatt Macy        "MetricName": "MLP"
277959826caSMatt Macy    },
278959826caSMatt Macy    {
279*18054d02SAlexander Motin        "BriefDescription": "Average data fill bandwidth to the L1 data cache [GB / sec]",
280*18054d02SAlexander Motin        "MetricExpr": "64 * L1D.REPLACEMENT / 1000000000 / duration_time",
281*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW",
282*18054d02SAlexander Motin        "MetricName": "L1D_Cache_Fill_BW"
283*18054d02SAlexander Motin    },
284*18054d02SAlexander Motin    {
285*18054d02SAlexander Motin        "BriefDescription": "Average data fill bandwidth to the L2 cache [GB / sec]",
286*18054d02SAlexander Motin        "MetricExpr": "64 * L2_LINES_IN.ALL / 1000000000 / duration_time",
287*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW",
288*18054d02SAlexander Motin        "MetricName": "L2_Cache_Fill_BW"
289*18054d02SAlexander Motin    },
290*18054d02SAlexander Motin    {
291*18054d02SAlexander Motin        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
292*18054d02SAlexander Motin        "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time",
293*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW",
294*18054d02SAlexander Motin        "MetricName": "L3_Cache_Fill_BW"
295*18054d02SAlexander Motin    },
296*18054d02SAlexander Motin    {
297*18054d02SAlexander Motin        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
298*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L1_MISS / INST_RETIRED.ANY",
299*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
300*18054d02SAlexander Motin        "MetricName": "L1MPKI"
301*18054d02SAlexander Motin    },
302*18054d02SAlexander Motin    {
303*18054d02SAlexander Motin        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
304*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L2_MISS / INST_RETIRED.ANY",
305*18054d02SAlexander Motin        "MetricGroup": "Mem;Backend;CacheMisses",
306*18054d02SAlexander Motin        "MetricName": "L2MPKI"
307*18054d02SAlexander Motin    },
308*18054d02SAlexander Motin    {
309*18054d02SAlexander Motin        "BriefDescription": "L2 cache misses per kilo instruction for all request types (including speculative)",
310*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.MISS / INST_RETIRED.ANY",
311*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses;Offcore",
312*18054d02SAlexander Motin        "MetricName": "L2MPKI_All"
313*18054d02SAlexander Motin    },
314*18054d02SAlexander Motin    {
315*18054d02SAlexander Motin        "BriefDescription": "L2 cache misses per kilo instruction for all demand loads  (including speculative)",
316*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY",
317*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
318*18054d02SAlexander Motin        "MetricName": "L2MPKI_Load"
319*18054d02SAlexander Motin    },
320*18054d02SAlexander Motin    {
321*18054d02SAlexander Motin        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
322*18054d02SAlexander Motin        "MetricExpr": "1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY",
323*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
324*18054d02SAlexander Motin        "MetricName": "L2HPKI_All"
325*18054d02SAlexander Motin    },
326*18054d02SAlexander Motin    {
327*18054d02SAlexander Motin        "BriefDescription": "L2 cache hits per kilo instruction for all demand loads  (including speculative)",
328*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY",
329*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
330*18054d02SAlexander Motin        "MetricName": "L2HPKI_Load"
331*18054d02SAlexander Motin    },
332*18054d02SAlexander Motin    {
333*18054d02SAlexander Motin        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
334*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L3_MISS / INST_RETIRED.ANY",
335*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
336*18054d02SAlexander Motin        "MetricName": "L3MPKI"
337*18054d02SAlexander Motin    },
338*18054d02SAlexander Motin    {
339959826caSMatt Macy        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
340*18054d02SAlexander Motin        "MetricConstraint": "NO_NMI_WATCHDOG",
341*18054d02SAlexander Motin        "MetricExpr": "( cpu@ITLB_MISSES.WALK_DURATION\\,cmask\\=1@ + cpu@DTLB_LOAD_MISSES.WALK_DURATION\\,cmask\\=1@ + cpu@DTLB_STORE_MISSES.WALK_DURATION\\,cmask\\=1@ + 7 * ( DTLB_STORE_MISSES.WALK_COMPLETED + DTLB_LOAD_MISSES.WALK_COMPLETED + ITLB_MISSES.WALK_COMPLETED ) ) / CPU_CLK_UNHALTED.THREAD",
342*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryTLB",
343959826caSMatt Macy        "MetricName": "Page_Walks_Utilization"
344959826caSMatt Macy    },
345959826caSMatt Macy    {
346*18054d02SAlexander Motin        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
347*18054d02SAlexander Motin        "MetricExpr": "( cpu@ITLB_MISSES.WALK_DURATION\\,cmask\\=1@ + cpu@DTLB_LOAD_MISSES.WALK_DURATION\\,cmask\\=1@ + cpu@DTLB_STORE_MISSES.WALK_DURATION\\,cmask\\=1@ + 7 * ( DTLB_STORE_MISSES.WALK_COMPLETED + DTLB_LOAD_MISSES.WALK_COMPLETED + ITLB_MISSES.WALK_COMPLETED ) ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
348*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryTLB_SMT",
349*18054d02SAlexander Motin        "MetricName": "Page_Walks_Utilization_SMT"
350*18054d02SAlexander Motin    },
351*18054d02SAlexander Motin    {
352959826caSMatt Macy        "BriefDescription": "Average CPU Utilization",
353959826caSMatt Macy        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
354*18054d02SAlexander Motin        "MetricGroup": "HPC;Summary",
355959826caSMatt Macy        "MetricName": "CPU_Utilization"
356959826caSMatt Macy    },
357959826caSMatt Macy    {
358*18054d02SAlexander Motin        "BriefDescription": "Measured Average Frequency for unhalted processors [GHz]",
359*18054d02SAlexander Motin        "MetricExpr": "(CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time",
360*18054d02SAlexander Motin        "MetricGroup": "Summary;Power",
361*18054d02SAlexander Motin        "MetricName": "Average_Frequency"
362*18054d02SAlexander Motin    },
363*18054d02SAlexander Motin    {
364959826caSMatt Macy        "BriefDescription": "Giga Floating Point Operations Per Second",
365*18054d02SAlexander Motin        "MetricExpr": "( ( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE ) / 1000000000 ) / duration_time",
366*18054d02SAlexander Motin        "MetricGroup": "Cor;Flops;HPC",
367959826caSMatt Macy        "MetricName": "GFLOPs"
368959826caSMatt Macy    },
369959826caSMatt Macy    {
370959826caSMatt Macy        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
371959826caSMatt Macy        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
372959826caSMatt Macy        "MetricGroup": "Power",
373959826caSMatt Macy        "MetricName": "Turbo_Utilization"
374959826caSMatt Macy    },
375959826caSMatt Macy    {
376*18054d02SAlexander Motin        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
377*18054d02SAlexander Motin        "MetricExpr": "1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
378*18054d02SAlexander Motin        "MetricGroup": "SMT",
379959826caSMatt Macy        "MetricName": "SMT_2T_Utilization"
380959826caSMatt Macy    },
381959826caSMatt Macy    {
382*18054d02SAlexander Motin        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
383*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / CPU_CLK_UNHALTED.THREAD",
384*18054d02SAlexander Motin        "MetricGroup": "OS",
385959826caSMatt Macy        "MetricName": "Kernel_Utilization"
386959826caSMatt Macy    },
387959826caSMatt Macy    {
388*18054d02SAlexander Motin        "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode",
389*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / INST_RETIRED.ANY_P:k",
390*18054d02SAlexander Motin        "MetricGroup": "OS",
391*18054d02SAlexander Motin        "MetricName": "Kernel_CPI"
392*18054d02SAlexander Motin    },
393*18054d02SAlexander Motin    {
394*18054d02SAlexander Motin        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
395*18054d02SAlexander Motin        "MetricExpr": "( 64 * ( uncore_imc@cas_count_read@ + uncore_imc@cas_count_write@ ) / 1000000000 ) / duration_time",
396*18054d02SAlexander Motin        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
397*18054d02SAlexander Motin        "MetricName": "DRAM_BW_Use"
398*18054d02SAlexander Motin    },
399*18054d02SAlexander Motin    {
400*18054d02SAlexander Motin        "BriefDescription": "Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches",
401*18054d02SAlexander Motin        "MetricExpr": "1000000000 * ( cbox@event\\=0x36\\,umask\\=0x3\\,filter_opc\\=0x182@ / cbox@event\\=0x35\\,umask\\=0x3\\,filter_opc\\=0x182@ ) / ( cbox_0@event\\=0x0@ / duration_time )",
402*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryLat;SoC",
403*18054d02SAlexander Motin        "MetricName": "MEM_Read_Latency"
404*18054d02SAlexander Motin    },
405*18054d02SAlexander Motin    {
406*18054d02SAlexander Motin        "BriefDescription": "Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches",
407*18054d02SAlexander Motin        "MetricExpr": "cbox@event\\=0x36\\,umask\\=0x3\\,filter_opc\\=0x182@ / cbox@event\\=0x36\\,umask\\=0x3\\,filter_opc\\=0x182\\,thresh\\=1@",
408*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW;SoC",
409*18054d02SAlexander Motin        "MetricName": "MEM_Parallel_Reads"
410*18054d02SAlexander Motin    },
411*18054d02SAlexander Motin    {
412*18054d02SAlexander Motin        "BriefDescription": "Socket actual clocks when any core is active on that socket",
413*18054d02SAlexander Motin        "MetricExpr": "cbox_0@event\\=0x0@",
414*18054d02SAlexander Motin        "MetricGroup": "SoC",
415*18054d02SAlexander Motin        "MetricName": "Socket_CLKS"
416*18054d02SAlexander Motin    },
417*18054d02SAlexander Motin    {
418*18054d02SAlexander Motin        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
419*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH:u",
420*18054d02SAlexander Motin        "MetricGroup": "Branches;OS",
421*18054d02SAlexander Motin        "MetricName": "IpFarBranch"
422*18054d02SAlexander Motin    },
423*18054d02SAlexander Motin    {
424959826caSMatt Macy        "BriefDescription": "C3 residency percent per core",
425959826caSMatt Macy        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
426959826caSMatt Macy        "MetricGroup": "Power",
427959826caSMatt Macy        "MetricName": "C3_Core_Residency"
428959826caSMatt Macy    },
429959826caSMatt Macy    {
430959826caSMatt Macy        "BriefDescription": "C6 residency percent per core",
431959826caSMatt Macy        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
432959826caSMatt Macy        "MetricGroup": "Power",
433959826caSMatt Macy        "MetricName": "C6_Core_Residency"
434959826caSMatt Macy    },
435959826caSMatt Macy    {
436959826caSMatt Macy        "BriefDescription": "C7 residency percent per core",
437959826caSMatt Macy        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
438959826caSMatt Macy        "MetricGroup": "Power",
439959826caSMatt Macy        "MetricName": "C7_Core_Residency"
440959826caSMatt Macy    },
441959826caSMatt Macy    {
442959826caSMatt Macy        "BriefDescription": "C2 residency percent per package",
443959826caSMatt Macy        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
444959826caSMatt Macy        "MetricGroup": "Power",
445959826caSMatt Macy        "MetricName": "C2_Pkg_Residency"
446959826caSMatt Macy    },
447959826caSMatt Macy    {
448959826caSMatt Macy        "BriefDescription": "C3 residency percent per package",
449959826caSMatt Macy        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
450959826caSMatt Macy        "MetricGroup": "Power",
451959826caSMatt Macy        "MetricName": "C3_Pkg_Residency"
452959826caSMatt Macy    },
453959826caSMatt Macy    {
454959826caSMatt Macy        "BriefDescription": "C6 residency percent per package",
455959826caSMatt Macy        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
456959826caSMatt Macy        "MetricGroup": "Power",
457959826caSMatt Macy        "MetricName": "C6_Pkg_Residency"
458959826caSMatt Macy    },
459959826caSMatt Macy    {
460959826caSMatt Macy        "BriefDescription": "C7 residency percent per package",
461959826caSMatt Macy        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
462959826caSMatt Macy        "MetricGroup": "Power",
463959826caSMatt Macy        "MetricName": "C7_Pkg_Residency"
464959826caSMatt Macy    }
465959826caSMatt Macy]
466