1ecd94f1bSKan Liang[
2ecd94f1bSKan Liang    {
3fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
461ec07f5SHaiyan Song        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * cycles)",
5fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
661ec07f5SHaiyan Song        "MetricName": "Frontend_Bound",
7038d3b53SJin Yao        "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.",
11038d3b53SJin Yao        "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",
14038d3b53SJin Yao        "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",
1861ec07f5SHaiyan Song        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles)",
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.",
25038d3b53SJin Yao        "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",
32038d3b53SJin Yao        "MetricConstraint": "NO_NMI_WATCHDOG",
3361ec07f5SHaiyan Song        "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)) )",
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.",
40038d3b53SJin Yao        "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",
4761ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)",
48fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
4961ec07f5SHaiyan Song        "MetricName": "Retiring",
5061ec07f5SHaiyan Song        "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. "
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.",
54038d3b53SJin Yao        "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",
5761ec07f5SHaiyan Song        "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."
58fd550098SAndi Kleen    },
59fd550098SAndi Kleen    {
6061ec07f5SHaiyan Song        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
61ecd94f1bSKan Liang        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
62038d3b53SJin Yao        "MetricGroup": "Summary",
63ecd94f1bSKan Liang        "MetricName": "IPC"
64ecd94f1bSKan Liang    },
65ecd94f1bSKan Liang    {
66fd550098SAndi Kleen        "BriefDescription": "Uops Per Instruction",
6761ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
6861ec07f5SHaiyan Song        "MetricGroup": "Pipeline;Retire",
69ecd94f1bSKan Liang        "MetricName": "UPI"
70ecd94f1bSKan Liang    },
71ecd94f1bSKan Liang    {
72fd550098SAndi Kleen        "BriefDescription": "Instruction per taken branch",
7361ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN",
7461ec07f5SHaiyan Song        "MetricGroup": "Branches;Fetch_BW;PGO",
75fd550098SAndi Kleen        "MetricName": "IpTB"
76fd550098SAndi Kleen    },
77fd550098SAndi Kleen    {
7861ec07f5SHaiyan Song        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
79ecd94f1bSKan Liang        "MetricExpr": "1 / (INST_RETIRED.ANY / cycles)",
80ecd94f1bSKan Liang        "MetricGroup": "Pipeline;Summary",
81ecd94f1bSKan Liang        "MetricName": "CPI"
82ecd94f1bSKan Liang    },
83ecd94f1bSKan Liang    {
8461ec07f5SHaiyan Song        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
85ecd94f1bSKan Liang        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
86ecd94f1bSKan Liang        "MetricGroup": "Summary",
87ecd94f1bSKan Liang        "MetricName": "CLKS"
88ecd94f1bSKan Liang    },
89ecd94f1bSKan Liang    {
90038d3b53SJin Yao        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
91fd550098SAndi Kleen        "MetricExpr": "4 * cycles",
92ecd94f1bSKan Liang        "MetricGroup": "TopDownL1",
93ecd94f1bSKan Liang        "MetricName": "SLOTS"
94ecd94f1bSKan Liang    },
95ecd94f1bSKan Liang    {
96038d3b53SJin Yao        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
97038d3b53SJin Yao        "MetricExpr": "4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
98fd550098SAndi Kleen        "MetricGroup": "TopDownL1_SMT",
99fd550098SAndi Kleen        "MetricName": "SLOTS_SMT"
100fd550098SAndi Kleen    },
101fd550098SAndi Kleen    {
102038d3b53SJin Yao        "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)",
103fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_LOADS",
10461ec07f5SHaiyan Song        "MetricGroup": "Instruction_Type",
105038d3b53SJin Yao        "MetricName": "IpLoad"
106fd550098SAndi Kleen    },
107fd550098SAndi Kleen    {
108038d3b53SJin Yao        "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)",
109fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_STORES",
11061ec07f5SHaiyan Song        "MetricGroup": "Instruction_Type",
111038d3b53SJin Yao        "MetricName": "IpStore"
112fd550098SAndi Kleen    },
113fd550098SAndi Kleen    {
114038d3b53SJin Yao        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
115fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
11661ec07f5SHaiyan Song        "MetricGroup": "Branches;Instruction_Type",
117038d3b53SJin Yao        "MetricName": "IpBranch"
118fd550098SAndi Kleen    },
119fd550098SAndi Kleen    {
120038d3b53SJin Yao        "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)",
121fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL",
122fd550098SAndi Kleen        "MetricGroup": "Branches",
123fd550098SAndi Kleen        "MetricName": "IpCall"
124fd550098SAndi Kleen    },
125fd550098SAndi Kleen    {
126038d3b53SJin Yao        "BriefDescription": "Branch instructions per taken branch. ",
127038d3b53SJin Yao        "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN",
128038d3b53SJin Yao        "MetricGroup": "Branches;PGO",
129038d3b53SJin Yao        "MetricName": "BpTkBranch"
130038d3b53SJin Yao    },
131038d3b53SJin Yao    {
132038d3b53SJin Yao        "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)",
133038d3b53SJin Yao        "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 + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE )",
134038d3b53SJin Yao        "MetricGroup": "FLOPS;FP_Arith;Instruction_Type",
135038d3b53SJin Yao        "MetricName": "IpFLOP"
136038d3b53SJin Yao    },
137038d3b53SJin Yao    {
138fd550098SAndi Kleen        "BriefDescription": "Total number of retired Instructions",
13961ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY",
140038d3b53SJin Yao        "MetricGroup": "Summary;TopDownL1",
141ecd94f1bSKan Liang        "MetricName": "Instructions"
142ecd94f1bSKan Liang    },
143ecd94f1bSKan Liang    {
144038d3b53SJin Yao        "BriefDescription": "Fraction of Uops delivered by the LSD (Loop Stream Detector; aka Loop Cache)",
145038d3b53SJin Yao        "MetricExpr": "LSD.UOPS / (IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS)",
146038d3b53SJin Yao        "MetricGroup": "LSD",
147038d3b53SJin Yao        "MetricName": "LSD_Coverage"
148038d3b53SJin Yao    },
149038d3b53SJin Yao    {
150038d3b53SJin Yao        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
151038d3b53SJin Yao        "MetricExpr": "IDQ.DSB_UOPS / (IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS)",
152038d3b53SJin Yao        "MetricGroup": "DSB;Fetch_BW",
153038d3b53SJin Yao        "MetricName": "DSB_Coverage"
154038d3b53SJin Yao    },
155038d3b53SJin Yao    {
156ecd94f1bSKan Liang        "BriefDescription": "Instructions Per Cycle (per physical core)",
15761ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / cycles",
158038d3b53SJin Yao        "MetricGroup": "SMT;TopDownL1",
159ecd94f1bSKan Liang        "MetricName": "CoreIPC"
160ecd94f1bSKan Liang    },
161ecd94f1bSKan Liang    {
162fd550098SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per physical core)",
163038d3b53SJin Yao        "MetricExpr": "INST_RETIRED.ANY / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
164038d3b53SJin Yao        "MetricGroup": "SMT;TopDownL1",
165fd550098SAndi Kleen        "MetricName": "CoreIPC_SMT"
166fd550098SAndi Kleen    },
167fd550098SAndi Kleen    {
168fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
169038d3b53SJin Yao        "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 + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / cycles",
170fd550098SAndi Kleen        "MetricGroup": "FLOPS",
171fd550098SAndi Kleen        "MetricName": "FLOPc"
172fd550098SAndi Kleen    },
173fd550098SAndi Kleen    {
174fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
175038d3b53SJin Yao        "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 + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
176fd550098SAndi Kleen        "MetricGroup": "FLOPS_SMT",
177fd550098SAndi Kleen        "MetricName": "FLOPc_SMT"
178fd550098SAndi Kleen    },
179fd550098SAndi Kleen    {
180fd550098SAndi Kleen        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
181038d3b53SJin Yao        "MetricExpr": "UOPS_EXECUTED.THREAD / ( UOPS_EXECUTED.CORE_CYCLES_GE_1 / 2 )",
182038d3b53SJin Yao        "MetricGroup": "Pipeline;Ports_Utilization",
183ecd94f1bSKan Liang        "MetricName": "ILP"
184ecd94f1bSKan Liang    },
185ecd94f1bSKan Liang    {
18661ec07f5SHaiyan Song        "BriefDescription": "Branch Misprediction Cost: Fraction of TopDown slots wasted per non-speculative branch misprediction (jeclear)",
187038d3b53SJin Yao        "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 * cycles))) + (4 * ( IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE - ( FRONTEND_RETIRED.LATENCY_GE_1 - FRONTEND_RETIRED.LATENCY_GE_2 ) / (UOPS_RETIRED.RETIRE_SLOTS / UOPS_ISSUED.ANY) ) / (4 * cycles)) * (( INT_MISC.CLEAR_RESTEER_CYCLES + 9 * BACLEARS.ANY ) / cycles) / (4 * ( IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE - ( FRONTEND_RETIRED.LATENCY_GE_1 - FRONTEND_RETIRED.LATENCY_GE_2 ) / (UOPS_RETIRED.RETIRE_SLOTS / UOPS_ISSUED.ANY) ) / (4 * cycles)) ) * (4 * cycles) / BR_MISP_RETIRED.ALL_BRANCHES",
18861ec07f5SHaiyan Song        "MetricGroup": "BrMispredicts",
189fd550098SAndi Kleen        "MetricName": "Branch_Misprediction_Cost"
190ecd94f1bSKan Liang    },
191ecd94f1bSKan Liang    {
19261ec07f5SHaiyan Song        "BriefDescription": "Branch Misprediction Cost: Fraction of TopDown slots wasted per non-speculative branch misprediction (jeclear)",
193038d3b53SJin Yao        "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 - ( FRONTEND_RETIRED.LATENCY_GE_1 - FRONTEND_RETIRED.LATENCY_GE_2 ) / (UOPS_RETIRED.RETIRE_SLOTS / UOPS_ISSUED.ANY) ) / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * (( INT_MISC.CLEAR_RESTEER_CYCLES + 9 * BACLEARS.ANY ) / cycles) / (4 * ( IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE - ( FRONTEND_RETIRED.LATENCY_GE_1 - FRONTEND_RETIRED.LATENCY_GE_2 ) / (UOPS_RETIRED.RETIRE_SLOTS / UOPS_ISSUED.ANY) ) / (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",
19461ec07f5SHaiyan Song        "MetricGroup": "BrMispredicts_SMT",
195fd550098SAndi Kleen        "MetricName": "Branch_Misprediction_Cost_SMT"
196fd550098SAndi Kleen    },
197fd550098SAndi Kleen    {
198fd550098SAndi Kleen        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear)",
19961ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
20061ec07f5SHaiyan Song        "MetricGroup": "BrMispredicts",
201fd550098SAndi Kleen        "MetricName": "IpMispredict"
202fd550098SAndi Kleen    },
203fd550098SAndi Kleen    {
20461ec07f5SHaiyan Song        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
205fd550098SAndi Kleen        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
206ecd94f1bSKan Liang        "MetricGroup": "SMT",
207ecd94f1bSKan Liang        "MetricName": "CORE_CLKS"
208ecd94f1bSKan Liang    },
209ecd94f1bSKan Liang    {
210fd550098SAndi Kleen        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand loads (in core cycles)",
21161ec07f5SHaiyan Song        "MetricExpr": "L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS + MEM_LOAD_RETIRED.FB_HIT )",
212ecd94f1bSKan Liang        "MetricGroup": "Memory_Bound;Memory_Lat",
213ecd94f1bSKan Liang        "MetricName": "Load_Miss_Real_Latency"
214ecd94f1bSKan Liang    },
215ecd94f1bSKan Liang    {
21661ec07f5SHaiyan Song        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)",
217fd550098SAndi Kleen        "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES",
218ecd94f1bSKan Liang        "MetricGroup": "Memory_Bound;Memory_BW",
219ecd94f1bSKan Liang        "MetricName": "MLP"
220ecd94f1bSKan Liang    },
221ecd94f1bSKan Liang    {
222ecd94f1bSKan Liang        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
223038d3b53SJin Yao        "MetricConstraint": "NO_NMI_WATCHDOG",
22461ec07f5SHaiyan Song        "MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * cycles )",
225ecd94f1bSKan Liang        "MetricGroup": "TLB",
226038d3b53SJin Yao        "MetricName": "Page_Walks_Utilization"
227ecd94f1bSKan Liang    },
228ecd94f1bSKan Liang    {
229fd550098SAndi Kleen        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
230038d3b53SJin Yao        "MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ) )",
231fd550098SAndi Kleen        "MetricGroup": "TLB_SMT",
232fd550098SAndi Kleen        "MetricName": "Page_Walks_Utilization_SMT"
233fd550098SAndi Kleen    },
234fd550098SAndi Kleen    {
235fd550098SAndi Kleen        "BriefDescription": "Average data fill bandwidth to the L1 data cache [GB / sec]",
23661ec07f5SHaiyan Song        "MetricExpr": "64 * L1D.REPLACEMENT / 1000000000 / duration_time",
237fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
238fd550098SAndi Kleen        "MetricName": "L1D_Cache_Fill_BW"
239fd550098SAndi Kleen    },
240fd550098SAndi Kleen    {
241fd550098SAndi Kleen        "BriefDescription": "Average data fill bandwidth to the L2 cache [GB / sec]",
24261ec07f5SHaiyan Song        "MetricExpr": "64 * L2_LINES_IN.ALL / 1000000000 / duration_time",
243fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
244fd550098SAndi Kleen        "MetricName": "L2_Cache_Fill_BW"
245fd550098SAndi Kleen    },
246fd550098SAndi Kleen    {
247fd550098SAndi Kleen        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
24861ec07f5SHaiyan Song        "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time",
249fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
250fd550098SAndi Kleen        "MetricName": "L3_Cache_Fill_BW"
251fd550098SAndi Kleen    },
252fd550098SAndi Kleen    {
253fd550098SAndi Kleen        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
25461ec07f5SHaiyan Song        "MetricExpr": "64 * OFFCORE_REQUESTS.ALL_REQUESTS / 1000000000 / duration_time",
255038d3b53SJin Yao        "MetricGroup": "Memory_BW;Offcore",
256fd550098SAndi Kleen        "MetricName": "L3_Cache_Access_BW"
257fd550098SAndi Kleen    },
258fd550098SAndi Kleen    {
259fd550098SAndi Kleen        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
26061ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L1_MISS / INST_RETIRED.ANY",
26161ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
262fd550098SAndi Kleen        "MetricName": "L1MPKI"
263fd550098SAndi Kleen    },
264fd550098SAndi Kleen    {
265fd550098SAndi Kleen        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
26661ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L2_MISS / INST_RETIRED.ANY",
26761ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
268fd550098SAndi Kleen        "MetricName": "L2MPKI"
269fd550098SAndi Kleen    },
270fd550098SAndi Kleen    {
271fd550098SAndi Kleen        "BriefDescription": "L2 cache misses per kilo instruction for all request types (including speculative)",
27261ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_RQSTS.MISS / INST_RETIRED.ANY",
273038d3b53SJin Yao        "MetricGroup": "Cache_Misses;Offcore",
274fd550098SAndi Kleen        "MetricName": "L2MPKI_All"
275fd550098SAndi Kleen    },
276fd550098SAndi Kleen    {
277fd550098SAndi Kleen        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
27861ec07f5SHaiyan Song        "MetricExpr": "1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY",
27961ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
280fd550098SAndi Kleen        "MetricName": "L2HPKI_All"
281fd550098SAndi Kleen    },
282fd550098SAndi Kleen    {
283fd550098SAndi Kleen        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
28461ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L3_MISS / INST_RETIRED.ANY",
28561ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
286fd550098SAndi Kleen        "MetricName": "L3MPKI"
287fd550098SAndi Kleen    },
288fd550098SAndi Kleen    {
28961ec07f5SHaiyan Song        "BriefDescription": "Rate of silent evictions from the L2 cache per Kilo instruction where the evicted lines are dropped (no writeback to L3 or memory)",
29061ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_LINES_OUT.SILENT / INST_RETIRED.ANY",
29161ec07f5SHaiyan Song        "MetricGroup": "",
29261ec07f5SHaiyan Song        "MetricName": "L2_Evictions_Silent_PKI"
29361ec07f5SHaiyan Song    },
29461ec07f5SHaiyan Song    {
29561ec07f5SHaiyan Song        "BriefDescription": "Rate of non silent evictions from the L2 cache per Kilo instruction",
29661ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_LINES_OUT.NON_SILENT / INST_RETIRED.ANY",
29761ec07f5SHaiyan Song        "MetricGroup": "",
29861ec07f5SHaiyan Song        "MetricName": "L2_Evictions_NonSilent_PKI"
29961ec07f5SHaiyan Song    },
30061ec07f5SHaiyan Song    {
301fd550098SAndi Kleen        "BriefDescription": "Average CPU Utilization",
30261ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
303ecd94f1bSKan Liang        "MetricGroup": "Summary",
304ecd94f1bSKan Liang        "MetricName": "CPU_Utilization"
305ecd94f1bSKan Liang    },
306ecd94f1bSKan Liang    {
307ecd94f1bSKan Liang        "BriefDescription": "Giga Floating Point Operations Per Second",
308038d3b53SJin Yao        "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 + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE ) / 1000000000 ) / duration_time",
309ecd94f1bSKan Liang        "MetricGroup": "FLOPS;Summary",
310ecd94f1bSKan Liang        "MetricName": "GFLOPs"
311ecd94f1bSKan Liang    },
312ecd94f1bSKan Liang    {
313fd550098SAndi Kleen        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
31461ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
315ecd94f1bSKan Liang        "MetricGroup": "Power",
316ecd94f1bSKan Liang        "MetricName": "Turbo_Utilization"
317ecd94f1bSKan Liang    },
318ecd94f1bSKan Liang    {
31961ec07f5SHaiyan Song        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
320038d3b53SJin Yao        "MetricExpr": "1 - CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY / 2 )",
321ecd94f1bSKan Liang        "MetricGroup": "SMT;Summary",
322ecd94f1bSKan Liang        "MetricName": "SMT_2T_Utilization"
323ecd94f1bSKan Liang    },
324ecd94f1bSKan Liang    {
325038d3b53SJin Yao        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
3268ed1faf0SJin Yao        "MetricExpr": "CPU_CLK_UNHALTED.THREAD:k / CPU_CLK_UNHALTED.THREAD",
327038d3b53SJin Yao        "MetricGroup": "OS",
328ecd94f1bSKan Liang        "MetricName": "Kernel_Utilization"
329ecd94f1bSKan Liang    },
330ecd94f1bSKan Liang    {
331fd550098SAndi Kleen        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
33261ec07f5SHaiyan Song        "MetricExpr": "( 64 * ( uncore_imc@cas_count_read@ + uncore_imc@cas_count_write@ ) / 1000000000 ) / duration_time",
333038d3b53SJin Yao        "MetricGroup": "Memory_BW;SoC",
334fd550098SAndi Kleen        "MetricName": "DRAM_BW_Use"
335fd550098SAndi Kleen    },
336fd550098SAndi Kleen    {
337fd550098SAndi Kleen        "BriefDescription": "Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches",
338038d3b53SJin Yao        "MetricExpr": "1000000000 * ( cha@event\\=0x36\\,umask\\=0x21\\,config\\=0x40433@ / cha@event\\=0x35\\,umask\\=0x21\\,config\\=0x40433@ ) / ( cha_0@event\\=0x0@ / duration_time )",
339038d3b53SJin Yao        "MetricGroup": "Memory_Lat;SoC",
340038d3b53SJin Yao        "MetricName": "MEM_Read_Latency"
341fd550098SAndi Kleen    },
342fd550098SAndi Kleen    {
343fd550098SAndi Kleen        "BriefDescription": "Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches",
344038d3b53SJin Yao        "MetricExpr": "cha@event\\=0x36\\,umask\\=0x21\\,config\\=0x40433@ / cha@event\\=0x36\\,umask\\=0x21\\,config\\=0x40433\\,thresh\\=1@",
345038d3b53SJin Yao        "MetricGroup": "Memory_BW;SoC",
346038d3b53SJin Yao        "MetricName": "MEM_Parallel_Reads"
347fd550098SAndi Kleen    },
348fd550098SAndi Kleen    {
349fd550098SAndi Kleen        "BriefDescription": "Average latency of data read request to external 3D X-Point memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches",
35092aa1c2bSIan Rogers        "MetricExpr": "( 1000000000 * ( imc@event\\=0xe0\\,umask\\=0x1@ / imc@event\\=0xe3@ ) / imc_0@event\\=0x0@ )",
351038d3b53SJin Yao        "MetricGroup": "Memory_Lat;SoC;Server",
352fd550098SAndi Kleen        "MetricName": "MEM_PMM_Read_Latency"
353fd550098SAndi Kleen    },
354fd550098SAndi Kleen    {
355fd550098SAndi Kleen        "BriefDescription": "Average 3DXP Memory Bandwidth Use for reads [GB / sec]",
35692aa1c2bSIan Rogers        "MetricExpr": "( ( 64 * imc@event\\=0xe3@ / 1000000000 ) / duration_time )",
357038d3b53SJin Yao        "MetricGroup": "Memory_BW;SoC;Server",
358fd550098SAndi Kleen        "MetricName": "PMM_Read_BW"
359fd550098SAndi Kleen    },
360fd550098SAndi Kleen    {
361fd550098SAndi Kleen        "BriefDescription": "Average 3DXP Memory Bandwidth Use for Writes [GB / sec]",
36292aa1c2bSIan Rogers        "MetricExpr": "( ( 64 * imc@event\\=0xe7@ / 1000000000 ) / duration_time )",
363038d3b53SJin Yao        "MetricGroup": "Memory_BW;SoC;Server",
364fd550098SAndi Kleen        "MetricName": "PMM_Write_BW"
365fd550098SAndi Kleen    },
366fd550098SAndi Kleen    {
367038d3b53SJin Yao        "BriefDescription": "Average IO (network or disk) Bandwidth Use for Writes [GB / sec]",
368038d3b53SJin Yao        "MetricExpr": "( UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART0 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART1 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART2 + UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.PART3 ) * 4 / 1000000000 / duration_time",
369038d3b53SJin Yao        "MetricGroup": "IO_BW;SoC;Server",
370038d3b53SJin Yao        "MetricName": "IO_Write_BW"
371038d3b53SJin Yao    },
372038d3b53SJin Yao    {
373038d3b53SJin Yao        "BriefDescription": "Average IO (network or disk) Bandwidth Use for Reads [GB / sec]",
374038d3b53SJin Yao        "MetricExpr": "( UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART0 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART1 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART2 + UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.PART3 ) * 4 / 1000000000 / duration_time",
375038d3b53SJin Yao        "MetricGroup": "IO_BW;SoC;Server",
376038d3b53SJin Yao        "MetricName": "IO_Read_BW"
377038d3b53SJin Yao    },
378038d3b53SJin Yao    {
379fd550098SAndi Kleen        "BriefDescription": "Socket actual clocks when any core is active on that socket",
38061ec07f5SHaiyan Song        "MetricExpr": "cha_0@event\\=0x0@",
381038d3b53SJin Yao        "MetricGroup": "SoC",
382fd550098SAndi Kleen        "MetricName": "Socket_CLKS"
383fd550098SAndi Kleen    },
384fd550098SAndi Kleen    {
385038d3b53SJin Yao        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
38661ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / ( BR_INST_RETIRED.FAR_BRANCH / 2 )",
387038d3b53SJin Yao        "MetricGroup": "Branches;OS",
38861ec07f5SHaiyan Song        "MetricName": "IpFarBranch"
38961ec07f5SHaiyan Song    },
39061ec07f5SHaiyan Song    {
39161ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per core",
392ecd94f1bSKan Liang        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
393ecd94f1bSKan Liang        "MetricGroup": "Power",
394ecd94f1bSKan Liang        "MetricName": "C3_Core_Residency"
395ecd94f1bSKan Liang    },
396ecd94f1bSKan Liang    {
39761ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per core",
398ecd94f1bSKan Liang        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
399ecd94f1bSKan Liang        "MetricGroup": "Power",
400ecd94f1bSKan Liang        "MetricName": "C6_Core_Residency"
401ecd94f1bSKan Liang    },
402ecd94f1bSKan Liang    {
40361ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per core",
404ecd94f1bSKan Liang        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
405ecd94f1bSKan Liang        "MetricGroup": "Power",
406ecd94f1bSKan Liang        "MetricName": "C7_Core_Residency"
407ecd94f1bSKan Liang    },
408ecd94f1bSKan Liang    {
40961ec07f5SHaiyan Song        "BriefDescription": "C2 residency percent per package",
410ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
411ecd94f1bSKan Liang        "MetricGroup": "Power",
412ecd94f1bSKan Liang        "MetricName": "C2_Pkg_Residency"
413ecd94f1bSKan Liang    },
414ecd94f1bSKan Liang    {
41561ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per package",
416ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
417ecd94f1bSKan Liang        "MetricGroup": "Power",
418ecd94f1bSKan Liang        "MetricName": "C3_Pkg_Residency"
419ecd94f1bSKan Liang    },
420ecd94f1bSKan Liang    {
42161ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per package",
422ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
423ecd94f1bSKan Liang        "MetricGroup": "Power",
424ecd94f1bSKan Liang        "MetricName": "C6_Pkg_Residency"
425ecd94f1bSKan Liang    },
426ecd94f1bSKan Liang    {
42761ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per package",
428ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
429ecd94f1bSKan Liang        "MetricGroup": "Power",
430ecd94f1bSKan Liang        "MetricName": "C7_Pkg_Residency"
431ecd94f1bSKan Liang    }
432ecd94f1bSKan Liang]
433