197dca671SAndi Kleen[
297dca671SAndi Kleen    {
3fd550098SAndi Kleen        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * cycles)",
4fd550098SAndi Kleen        "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.",
5fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
6fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
7fd550098SAndi Kleen        "MetricName": "Frontend_Bound"
8fd550098SAndi Kleen    },
9fd550098SAndi Kleen    {
10fd550098SAndi Kleen        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
11fd550098SAndi Kleen        "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.",
12fd550098SAndi 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.",
13fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
14fd550098SAndi Kleen        "MetricName": "Frontend_Bound_SMT"
15fd550098SAndi Kleen    },
16fd550098SAndi Kleen    {
17fd550098SAndi Kleen        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles)",
18fd550098SAndi Kleen        "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.",
19fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
20fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
21fd550098SAndi Kleen        "MetricName": "Bad_Speculation"
22fd550098SAndi Kleen    },
23fd550098SAndi Kleen    {
24fd550098SAndi Kleen        "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 ) )))",
25fd550098SAndi Kleen        "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.",
26fd550098SAndi 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.",
27fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
28fd550098SAndi Kleen        "MetricName": "Bad_Speculation_SMT"
29fd550098SAndi Kleen    },
30fd550098SAndi Kleen    {
31fd550098SAndi Kleen        "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)) )",
32fd550098SAndi Kleen        "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.",
33fd550098SAndi 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",
34fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
35fd550098SAndi Kleen        "MetricName": "Backend_Bound"
36fd550098SAndi Kleen    },
37fd550098SAndi Kleen    {
38fd550098SAndi Kleen        "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 ) )))) )",
39fd550098SAndi Kleen        "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.",
40fd550098SAndi 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.",
41fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
42fd550098SAndi Kleen        "MetricName": "Backend_Bound_SMT"
43fd550098SAndi Kleen    },
44fd550098SAndi Kleen    {
45fd550098SAndi Kleen        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)",
46fd550098SAndi Kleen        "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. ",
47fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
48fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
49fd550098SAndi Kleen        "MetricName": "Retiring"
50fd550098SAndi Kleen    },
51fd550098SAndi Kleen    {
52fd550098SAndi Kleen        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
53fd550098SAndi Kleen        "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.",
54fd550098SAndi 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.",
55fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
56fd550098SAndi Kleen        "MetricName": "Retiring_SMT"
57fd550098SAndi Kleen    },
58fd550098SAndi Kleen    {
5997dca671SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
60fd550098SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per logical thread)",
6197dca671SAndi Kleen        "MetricGroup": "TopDownL1",
6297dca671SAndi Kleen        "MetricName": "IPC"
6397dca671SAndi Kleen    },
6497dca671SAndi Kleen    {
6597dca671SAndi Kleen        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
66fd550098SAndi Kleen        "BriefDescription": "Uops Per Instruction",
67fd550098SAndi Kleen        "MetricGroup": "Pipeline;Retiring",
6897dca671SAndi Kleen        "MetricName": "UPI"
6997dca671SAndi Kleen    },
7097dca671SAndi Kleen    {
7141a13b74SAndi Kleen        "MetricExpr": "min( 1 , UOPS_ISSUED.ANY / ( (UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY) * 32 * ( ICACHE.HIT + ICACHE.MISSES ) / 4 ) )",
72fd550098SAndi Kleen        "BriefDescription": "Rough Estimation of fraction of fetched lines bytes that were likely (includes speculatively fetches) consumed by program instructions",
73fd550098SAndi Kleen        "MetricGroup": "PGO",
7497dca671SAndi Kleen        "MetricName": "IFetch_Line_Utilization"
7597dca671SAndi Kleen    },
7697dca671SAndi Kleen    {
77fd550098SAndi Kleen        "MetricExpr": "IDQ.DSB_UOPS / (( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) )",
78fd550098SAndi Kleen        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
7997dca671SAndi Kleen        "MetricGroup": "DSB;Frontend_Bandwidth",
8097dca671SAndi Kleen        "MetricName": "DSB_Coverage"
8197dca671SAndi Kleen    },
8297dca671SAndi Kleen    {
8341a13b74SAndi Kleen        "MetricExpr": "1 / (INST_RETIRED.ANY / cycles)",
84fd550098SAndi Kleen        "BriefDescription": "Cycles Per Instruction (threaded)",
8597dca671SAndi Kleen        "MetricGroup": "Pipeline;Summary",
8697dca671SAndi Kleen        "MetricName": "CPI"
8797dca671SAndi Kleen    },
8897dca671SAndi Kleen    {
8997dca671SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
90fd550098SAndi Kleen        "BriefDescription": "Per-thread actual clocks when the logical processor is active.",
9197dca671SAndi Kleen        "MetricGroup": "Summary",
9297dca671SAndi Kleen        "MetricName": "CLKS"
9397dca671SAndi Kleen    },
9497dca671SAndi Kleen    {
95fd550098SAndi Kleen        "MetricExpr": "4 * cycles",
96fd550098SAndi Kleen        "BriefDescription": "Total issue-pipeline slots (per core)",
9797dca671SAndi Kleen        "MetricGroup": "TopDownL1",
9897dca671SAndi Kleen        "MetricName": "SLOTS"
9997dca671SAndi Kleen    },
10097dca671SAndi Kleen    {
101fd550098SAndi Kleen        "MetricExpr": "4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
102fd550098SAndi Kleen        "BriefDescription": "Total issue-pipeline slots (per core)",
103fd550098SAndi Kleen        "MetricGroup": "TopDownL1_SMT",
104fd550098SAndi Kleen        "MetricName": "SLOTS_SMT"
105fd550098SAndi Kleen    },
106fd550098SAndi Kleen    {
10797dca671SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY",
108fd550098SAndi Kleen        "BriefDescription": "Total number of retired Instructions",
10997dca671SAndi Kleen        "MetricGroup": "Summary",
11097dca671SAndi Kleen        "MetricName": "Instructions"
11197dca671SAndi Kleen    },
11297dca671SAndi Kleen    {
113fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / cycles",
11497dca671SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per physical core)",
11597dca671SAndi Kleen        "MetricGroup": "SMT",
11697dca671SAndi Kleen        "MetricName": "CoreIPC"
11797dca671SAndi Kleen    },
11897dca671SAndi Kleen    {
119fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
120fd550098SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per physical core)",
121fd550098SAndi Kleen        "MetricGroup": "SMT",
122fd550098SAndi Kleen        "MetricName": "CoreIPC_SMT"
123fd550098SAndi Kleen    },
124fd550098SAndi Kleen    {
125fd550098SAndi Kleen        "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",
126fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
127fd550098SAndi Kleen        "MetricGroup": "FLOPS",
128fd550098SAndi Kleen        "MetricName": "FLOPc"
129fd550098SAndi Kleen    },
130fd550098SAndi Kleen    {
131fd550098SAndi Kleen        "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 ) ))",
132fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
133fd550098SAndi Kleen        "MetricGroup": "FLOPS_SMT",
134fd550098SAndi Kleen        "MetricName": "FLOPc_SMT"
135fd550098SAndi Kleen    },
136fd550098SAndi Kleen    {
1377958e541SAndi Kleen        "MetricExpr": "UOPS_DISPATCHED.THREAD / (( cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@)",
138fd550098SAndi Kleen        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
13997dca671SAndi Kleen        "MetricGroup": "Pipeline;Ports_Utilization",
14097dca671SAndi Kleen        "MetricName": "ILP"
14197dca671SAndi Kleen    },
14297dca671SAndi Kleen    {
143fd550098SAndi Kleen        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
14497dca671SAndi Kleen        "BriefDescription": "Core actual clocks when any thread is active on the physical core",
14597dca671SAndi Kleen        "MetricGroup": "SMT",
14697dca671SAndi Kleen        "MetricName": "CORE_CLKS"
14797dca671SAndi Kleen    },
14897dca671SAndi Kleen    {
14997dca671SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
150fd550098SAndi Kleen        "BriefDescription": "Average CPU Utilization",
15197dca671SAndi Kleen        "MetricGroup": "Summary",
15297dca671SAndi Kleen        "MetricName": "CPU_Utilization"
15397dca671SAndi Kleen    },
15497dca671SAndi Kleen    {
155fd550098SAndi Kleen        "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",
15697dca671SAndi Kleen        "BriefDescription": "Giga Floating Point Operations Per Second",
15797dca671SAndi Kleen        "MetricGroup": "FLOPS;Summary",
15897dca671SAndi Kleen        "MetricName": "GFLOPs"
15997dca671SAndi Kleen    },
16097dca671SAndi Kleen    {
16197dca671SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
162fd550098SAndi Kleen        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
16397dca671SAndi Kleen        "MetricGroup": "Power",
16497dca671SAndi Kleen        "MetricName": "Turbo_Utilization"
16597dca671SAndi Kleen    },
16697dca671SAndi Kleen    {
16797dca671SAndi Kleen        "MetricExpr": "1 - CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
168fd550098SAndi Kleen        "BriefDescription": "Fraction of cycles where both hardware threads were active",
16997dca671SAndi Kleen        "MetricGroup": "SMT;Summary",
17097dca671SAndi Kleen        "MetricName": "SMT_2T_Utilization"
17197dca671SAndi Kleen    },
17297dca671SAndi Kleen    {
17397dca671SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC:u / CPU_CLK_UNHALTED.REF_TSC",
174fd550098SAndi Kleen        "BriefDescription": "Fraction of cycles spent in Kernel mode",
17597dca671SAndi Kleen        "MetricGroup": "Summary",
17697dca671SAndi Kleen        "MetricName": "Kernel_Utilization"
17797dca671SAndi Kleen    },
17897dca671SAndi Kleen    {
179fd550098SAndi Kleen        "MetricExpr": "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000",
180fd550098SAndi Kleen        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
181fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
182fd550098SAndi Kleen        "MetricName": "DRAM_BW_Use"
183fd550098SAndi Kleen    },
184fd550098SAndi Kleen    {
18597dca671SAndi Kleen        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
18697dca671SAndi Kleen        "MetricGroup": "Power",
187fd550098SAndi Kleen        "BriefDescription": "C3 residency percent per core",
18897dca671SAndi Kleen        "MetricName": "C3_Core_Residency"
18997dca671SAndi Kleen    },
19097dca671SAndi Kleen    {
19197dca671SAndi Kleen        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
19297dca671SAndi Kleen        "MetricGroup": "Power",
193fd550098SAndi Kleen        "BriefDescription": "C6 residency percent per core",
19497dca671SAndi Kleen        "MetricName": "C6_Core_Residency"
19597dca671SAndi Kleen    },
19697dca671SAndi Kleen    {
19797dca671SAndi Kleen        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
19897dca671SAndi Kleen        "MetricGroup": "Power",
199fd550098SAndi Kleen        "BriefDescription": "C7 residency percent per core",
20097dca671SAndi Kleen        "MetricName": "C7_Core_Residency"
20197dca671SAndi Kleen    },
20297dca671SAndi Kleen    {
20397dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
20497dca671SAndi Kleen        "MetricGroup": "Power",
205fd550098SAndi Kleen        "BriefDescription": "C2 residency percent per package",
20697dca671SAndi Kleen        "MetricName": "C2_Pkg_Residency"
20797dca671SAndi Kleen    },
20897dca671SAndi Kleen    {
20997dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
21097dca671SAndi Kleen        "MetricGroup": "Power",
211fd550098SAndi Kleen        "BriefDescription": "C3 residency percent per package",
21297dca671SAndi Kleen        "MetricName": "C3_Pkg_Residency"
21397dca671SAndi Kleen    },
21497dca671SAndi Kleen    {
21597dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
21697dca671SAndi Kleen        "MetricGroup": "Power",
217fd550098SAndi Kleen        "BriefDescription": "C6 residency percent per package",
21897dca671SAndi Kleen        "MetricName": "C6_Pkg_Residency"
21997dca671SAndi Kleen    },
22097dca671SAndi Kleen    {
22197dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
22297dca671SAndi Kleen        "MetricGroup": "Power",
223fd550098SAndi Kleen        "BriefDescription": "C7 residency percent per package",
22497dca671SAndi Kleen        "MetricName": "C7_Pkg_Residency"
22597dca671SAndi Kleen    }
22697dca671SAndi Kleen]
227