197dca671SAndi Kleen[
297dca671SAndi Kleen    {
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",
761ec07f5SHaiyan Song        "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."
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.",
1161ec07f5SHaiyan Song        "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",
1461ec07f5SHaiyan Song        "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."
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.",
2561ec07f5SHaiyan Song        "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",
3261ec07f5SHaiyan 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)) )",
33fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
3461ec07f5SHaiyan Song        "MetricName": "Backend_Bound",
3561ec07f5SHaiyan 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."
36fd550098SAndi Kleen    },
37fd550098SAndi Kleen    {
38fd550098SAndi 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.",
3961ec07f5SHaiyan Song        "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 ) )))) )",
40fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
4161ec07f5SHaiyan Song        "MetricName": "Backend_Bound_SMT",
4261ec07f5SHaiyan 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."
43fd550098SAndi Kleen    },
44fd550098SAndi Kleen    {
45fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
4661ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)",
47fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
4861ec07f5SHaiyan Song        "MetricName": "Retiring",
4961ec07f5SHaiyan 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. "
50fd550098SAndi Kleen    },
51fd550098SAndi Kleen    {
52fd550098SAndi 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.",
5361ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
54fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
5561ec07f5SHaiyan Song        "MetricName": "Retiring_SMT",
5661ec07f5SHaiyan 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."
57fd550098SAndi Kleen    },
58fd550098SAndi Kleen    {
5961ec07f5SHaiyan Song        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
6097dca671SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
6197dca671SAndi Kleen        "MetricGroup": "TopDownL1",
6297dca671SAndi Kleen        "MetricName": "IPC"
6397dca671SAndi Kleen    },
6497dca671SAndi Kleen    {
65fd550098SAndi Kleen        "BriefDescription": "Uops Per Instruction",
6661ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
6761ec07f5SHaiyan Song        "MetricGroup": "Pipeline;Retire",
6897dca671SAndi Kleen        "MetricName": "UPI"
6997dca671SAndi Kleen    },
7097dca671SAndi Kleen    {
71fd550098SAndi Kleen        "BriefDescription": "Rough Estimation of fraction of fetched lines bytes that were likely (includes speculatively fetches) consumed by program instructions",
7261ec07f5SHaiyan Song        "MetricExpr": "min( 1 , UOPS_ISSUED.ANY / ( (UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY) * 32 * ( ICACHE.HIT + ICACHE.MISSES ) / 4 ) )",
7361ec07f5SHaiyan Song        "MetricGroup": "PGO;IcMiss",
7497dca671SAndi Kleen        "MetricName": "IFetch_Line_Utilization"
7597dca671SAndi Kleen    },
7697dca671SAndi Kleen    {
77fd550098SAndi Kleen        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
7861ec07f5SHaiyan Song        "MetricExpr": "IDQ.DSB_UOPS / (( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) )",
7961ec07f5SHaiyan Song        "MetricGroup": "DSB;Fetch_BW",
8097dca671SAndi Kleen        "MetricName": "DSB_Coverage"
8197dca671SAndi Kleen    },
8297dca671SAndi Kleen    {
8361ec07f5SHaiyan Song        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
8441a13b74SAndi Kleen        "MetricExpr": "1 / (INST_RETIRED.ANY / cycles)",
8597dca671SAndi Kleen        "MetricGroup": "Pipeline;Summary",
8697dca671SAndi Kleen        "MetricName": "CPI"
8797dca671SAndi Kleen    },
8897dca671SAndi Kleen    {
8961ec07f5SHaiyan Song        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
9097dca671SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
9197dca671SAndi Kleen        "MetricGroup": "Summary",
9297dca671SAndi Kleen        "MetricName": "CLKS"
9397dca671SAndi Kleen    },
9497dca671SAndi Kleen    {
9561ec07f5SHaiyan Song        "BriefDescription": "Total issue-pipeline slots (per-Physical Core)",
96fd550098SAndi Kleen        "MetricExpr": "4 * cycles",
9797dca671SAndi Kleen        "MetricGroup": "TopDownL1",
9897dca671SAndi Kleen        "MetricName": "SLOTS"
9997dca671SAndi Kleen    },
10097dca671SAndi Kleen    {
10161ec07f5SHaiyan Song        "BriefDescription": "Total issue-pipeline slots (per-Physical Core)",
102fd550098SAndi Kleen        "MetricExpr": "4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
103fd550098SAndi Kleen        "MetricGroup": "TopDownL1_SMT",
104fd550098SAndi Kleen        "MetricName": "SLOTS_SMT"
105fd550098SAndi Kleen    },
106fd550098SAndi Kleen    {
107fd550098SAndi Kleen        "BriefDescription": "Total number of retired Instructions",
10861ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY",
10997dca671SAndi Kleen        "MetricGroup": "Summary",
11097dca671SAndi Kleen        "MetricName": "Instructions"
11197dca671SAndi Kleen    },
11297dca671SAndi Kleen    {
11397dca671SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per physical core)",
11461ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / cycles",
11597dca671SAndi Kleen        "MetricGroup": "SMT",
11697dca671SAndi Kleen        "MetricName": "CoreIPC"
11797dca671SAndi Kleen    },
11897dca671SAndi Kleen    {
119fd550098SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per physical core)",
12061ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
121fd550098SAndi Kleen        "MetricGroup": "SMT",
122fd550098SAndi Kleen        "MetricName": "CoreIPC_SMT"
123fd550098SAndi Kleen    },
124fd550098SAndi Kleen    {
125fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
12661ec07f5SHaiyan Song        "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",
127fd550098SAndi Kleen        "MetricGroup": "FLOPS",
128fd550098SAndi Kleen        "MetricName": "FLOPc"
129fd550098SAndi Kleen    },
130fd550098SAndi Kleen    {
131fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
13261ec07f5SHaiyan Song        "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 ) ))",
133fd550098SAndi Kleen        "MetricGroup": "FLOPS_SMT",
134fd550098SAndi Kleen        "MetricName": "FLOPc_SMT"
135fd550098SAndi Kleen    },
136fd550098SAndi Kleen    {
137fd550098SAndi Kleen        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
13861ec07f5SHaiyan Song        "MetricExpr": "UOPS_DISPATCHED.THREAD / (( cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else cpu@UOPS_DISPATCHED.CORE\\,cmask\\=1@)",
13961ec07f5SHaiyan Song        "MetricGroup": "Pipeline",
14097dca671SAndi Kleen        "MetricName": "ILP"
14197dca671SAndi Kleen    },
14297dca671SAndi Kleen    {
14361ec07f5SHaiyan Song        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
144fd550098SAndi Kleen        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
14597dca671SAndi Kleen        "MetricGroup": "SMT",
14697dca671SAndi Kleen        "MetricName": "CORE_CLKS"
14797dca671SAndi Kleen    },
14897dca671SAndi Kleen    {
149fd550098SAndi Kleen        "BriefDescription": "Average CPU Utilization",
15061ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
15197dca671SAndi Kleen        "MetricGroup": "Summary",
15297dca671SAndi Kleen        "MetricName": "CPU_Utilization"
15397dca671SAndi Kleen    },
15497dca671SAndi Kleen    {
15597dca671SAndi Kleen        "BriefDescription": "Giga Floating Point Operations Per Second",
15661ec07f5SHaiyan Song        "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",
15797dca671SAndi Kleen        "MetricGroup": "FLOPS;Summary",
15897dca671SAndi Kleen        "MetricName": "GFLOPs"
15997dca671SAndi Kleen    },
16097dca671SAndi Kleen    {
161fd550098SAndi Kleen        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
16261ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
16397dca671SAndi Kleen        "MetricGroup": "Power",
16497dca671SAndi Kleen        "MetricName": "Turbo_Utilization"
16597dca671SAndi Kleen    },
16697dca671SAndi Kleen    {
16761ec07f5SHaiyan Song        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
16897dca671SAndi Kleen        "MetricExpr": "1 - CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
16997dca671SAndi Kleen        "MetricGroup": "SMT;Summary",
17097dca671SAndi Kleen        "MetricName": "SMT_2T_Utilization"
17197dca671SAndi Kleen    },
17297dca671SAndi Kleen    {
173fd550098SAndi Kleen        "BriefDescription": "Fraction of cycles spent in Kernel mode",
17461ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC:u / CPU_CLK_UNHALTED.REF_TSC",
17597dca671SAndi Kleen        "MetricGroup": "Summary",
17697dca671SAndi Kleen        "MetricName": "Kernel_Utilization"
17797dca671SAndi Kleen    },
17897dca671SAndi Kleen    {
179fd550098SAndi Kleen        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
18061ec07f5SHaiyan Song        "MetricExpr": "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000",
181fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
182fd550098SAndi Kleen        "MetricName": "DRAM_BW_Use"
183fd550098SAndi Kleen    },
184fd550098SAndi Kleen    {
18561ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per core",
18697dca671SAndi Kleen        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
18797dca671SAndi Kleen        "MetricGroup": "Power",
18897dca671SAndi Kleen        "MetricName": "C3_Core_Residency"
18997dca671SAndi Kleen    },
19097dca671SAndi Kleen    {
19161ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per core",
19297dca671SAndi Kleen        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
19397dca671SAndi Kleen        "MetricGroup": "Power",
19497dca671SAndi Kleen        "MetricName": "C6_Core_Residency"
19597dca671SAndi Kleen    },
19697dca671SAndi Kleen    {
19761ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per core",
19897dca671SAndi Kleen        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
19997dca671SAndi Kleen        "MetricGroup": "Power",
20097dca671SAndi Kleen        "MetricName": "C7_Core_Residency"
20197dca671SAndi Kleen    },
20297dca671SAndi Kleen    {
20361ec07f5SHaiyan Song        "BriefDescription": "C2 residency percent per package",
20497dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
20597dca671SAndi Kleen        "MetricGroup": "Power",
20697dca671SAndi Kleen        "MetricName": "C2_Pkg_Residency"
20797dca671SAndi Kleen    },
20897dca671SAndi Kleen    {
20961ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per package",
21097dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
21197dca671SAndi Kleen        "MetricGroup": "Power",
21297dca671SAndi Kleen        "MetricName": "C3_Pkg_Residency"
21397dca671SAndi Kleen    },
21497dca671SAndi Kleen    {
21561ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per package",
21697dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
21797dca671SAndi Kleen        "MetricGroup": "Power",
21897dca671SAndi Kleen        "MetricName": "C6_Pkg_Residency"
21997dca671SAndi Kleen    },
22097dca671SAndi Kleen    {
22161ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per package",
22297dca671SAndi Kleen        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
22397dca671SAndi Kleen        "MetricGroup": "Power",
22497dca671SAndi Kleen        "MetricName": "C7_Pkg_Residency"
22597dca671SAndi Kleen    }
22697dca671SAndi Kleen]
227