1cf979623SAndi Kleen[
2cf979623SAndi Kleen    {
3fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
410e8d85fSIan Rogers        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)",
5fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
661ec07f5SHaiyan Song        "MetricName": "Frontend_Bound",
710e8d85fSIan Rogers        "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.",
1110e8d85fSIan Rogers        "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",
1410e8d85fSIan Rogers        "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",
1810e8d85fSIan Rogers        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD)",
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.",
2510e8d85fSIan Rogers        "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",
3210e8d85fSIan Rogers        "MetricConstraint": "NO_NMI_WATCHDOG",
3310e8d85fSIan Rogers        "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)) )",
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.",
4010e8d85fSIan Rogers        "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",
4710e8d85fSIan Rogers        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)",
48fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
4961ec07f5SHaiyan Song        "MetricName": "Retiring",
5010e8d85fSIan Rogers        "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. "
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.",
5410e8d85fSIan Rogers        "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",
5710e8d85fSIan Rogers        "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."
58fd550098SAndi Kleen    },
59fd550098SAndi Kleen    {
6061ec07f5SHaiyan Song        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
61cf979623SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
6210e8d85fSIan Rogers        "MetricGroup": "Ret;Summary",
63cf979623SAndi Kleen        "MetricName": "IPC"
64cf979623SAndi Kleen    },
65cf979623SAndi Kleen    {
66fd550098SAndi Kleen        "BriefDescription": "Uops Per Instruction",
6761ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
6810e8d85fSIan Rogers        "MetricGroup": "Pipeline;Ret;Retire",
69cf979623SAndi Kleen        "MetricName": "UPI"
70cf979623SAndi Kleen    },
71cf979623SAndi Kleen    {
72fd550098SAndi Kleen        "BriefDescription": "Instruction per taken branch",
7310e8d85fSIan Rogers        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / BR_INST_RETIRED.NEAR_TAKEN",
7410e8d85fSIan Rogers        "MetricGroup": "Branches;Fed;FetchBW",
7510e8d85fSIan Rogers        "MetricName": "UpTB"
76cf979623SAndi Kleen    },
77cf979623SAndi Kleen    {
7861ec07f5SHaiyan Song        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
7910e8d85fSIan Rogers        "MetricExpr": "1 / (INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD)",
8010e8d85fSIan Rogers        "MetricGroup": "Pipeline;Mem",
81cf979623SAndi Kleen        "MetricName": "CPI"
82cf979623SAndi Kleen    },
83cf979623SAndi Kleen    {
8461ec07f5SHaiyan Song        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
85cf979623SAndi Kleen        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
8610e8d85fSIan Rogers        "MetricGroup": "Pipeline",
87cf979623SAndi Kleen        "MetricName": "CLKS"
88cf979623SAndi Kleen    },
89cf979623SAndi Kleen    {
9010e8d85fSIan Rogers        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
9110e8d85fSIan Rogers        "MetricExpr": "4 * CPU_CLK_UNHALTED.THREAD",
9210e8d85fSIan Rogers        "MetricGroup": "TmaL1",
93cf979623SAndi Kleen        "MetricName": "SLOTS"
94cf979623SAndi Kleen    },
95cf979623SAndi Kleen    {
9610e8d85fSIan Rogers        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
9710e8d85fSIan Rogers        "MetricExpr": "4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
9810e8d85fSIan Rogers        "MetricGroup": "TmaL1_SMT",
99fd550098SAndi Kleen        "MetricName": "SLOTS_SMT"
100fd550098SAndi Kleen    },
101fd550098SAndi Kleen    {
10210e8d85fSIan Rogers        "BriefDescription": "The ratio of Executed- by Issued-Uops",
10310e8d85fSIan Rogers        "MetricExpr": "UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY",
10410e8d85fSIan Rogers        "MetricGroup": "Cor;Pipeline",
10510e8d85fSIan Rogers        "MetricName": "Execute_per_Issue",
10610e8d85fSIan Rogers        "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."
107fd550098SAndi Kleen    },
108fd550098SAndi Kleen    {
10910e8d85fSIan Rogers        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
11010e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
11110e8d85fSIan Rogers        "MetricGroup": "Ret;SMT;TmaL1",
112cf979623SAndi Kleen        "MetricName": "CoreIPC"
113cf979623SAndi Kleen    },
114cf979623SAndi Kleen    {
11510e8d85fSIan Rogers        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
11610e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
11710e8d85fSIan Rogers        "MetricGroup": "Ret;SMT;TmaL1_SMT",
118fd550098SAndi Kleen        "MetricName": "CoreIPC_SMT"
119fd550098SAndi Kleen    },
120fd550098SAndi Kleen    {
121fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
12210e8d85fSIan Rogers        "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",
12310e8d85fSIan Rogers        "MetricGroup": "Ret;Flops",
124fd550098SAndi Kleen        "MetricName": "FLOPc"
125fd550098SAndi Kleen    },
126fd550098SAndi Kleen    {
127fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
12810e8d85fSIan Rogers        "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 ) )",
12910e8d85fSIan Rogers        "MetricGroup": "Ret;Flops_SMT",
130fd550098SAndi Kleen        "MetricName": "FLOPc_SMT"
131fd550098SAndi Kleen    },
132fd550098SAndi Kleen    {
133*1775634eSIan Rogers        "BriefDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width)",
13410e8d85fSIan Rogers        "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 )",
13510e8d85fSIan Rogers        "MetricGroup": "Cor;Flops;HPC",
13610e8d85fSIan Rogers        "MetricName": "FP_Arith_Utilization",
137*1775634eSIan Rogers        "PublicDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width). Values > 1 are possible due to ([BDW+] Fused-Multiply Add (FMA) counting - common; [ADL+] use all of ADD/MUL/FMA in Scalar or 128/256-bit vectors - less common)."
13810e8d85fSIan Rogers    },
13910e8d85fSIan Rogers    {
140*1775634eSIan Rogers        "BriefDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width). SMT version; use when SMT is enabled and measuring per logical CPU.",
14110e8d85fSIan Rogers        "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 ) ) )",
14210e8d85fSIan Rogers        "MetricGroup": "Cor;Flops;HPC_SMT",
14310e8d85fSIan Rogers        "MetricName": "FP_Arith_Utilization_SMT",
144*1775634eSIan Rogers        "PublicDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width). Values > 1 are possible due to ([BDW+] Fused-Multiply Add (FMA) counting - common; [ADL+] use all of ADD/MUL/FMA in Scalar or 128/256-bit vectors - less common). SMT version; use when SMT is enabled and measuring per logical CPU."
14510e8d85fSIan Rogers    },
14610e8d85fSIan Rogers    {
147*1775634eSIan Rogers        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is execution) per-core",
14861ec07f5SHaiyan Song        "MetricExpr": "UOPS_EXECUTED.THREAD / (( cpu@UOPS_EXECUTED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC)",
14910e8d85fSIan Rogers        "MetricGroup": "Backend;Cor;Pipeline;PortsUtil",
150cf979623SAndi Kleen        "MetricName": "ILP"
151cf979623SAndi Kleen    },
152cf979623SAndi Kleen    {
15361ec07f5SHaiyan Song        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
154fd550098SAndi Kleen        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
155cf979623SAndi Kleen        "MetricGroup": "SMT",
156cf979623SAndi Kleen        "MetricName": "CORE_CLKS"
157cf979623SAndi Kleen    },
158cf979623SAndi Kleen    {
15910e8d85fSIan Rogers        "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)",
16010e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS",
16110e8d85fSIan Rogers        "MetricGroup": "InsType",
16210e8d85fSIan Rogers        "MetricName": "IpLoad"
16310e8d85fSIan Rogers    },
16410e8d85fSIan Rogers    {
16510e8d85fSIan Rogers        "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)",
16610e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES",
16710e8d85fSIan Rogers        "MetricGroup": "InsType",
16810e8d85fSIan Rogers        "MetricName": "IpStore"
16910e8d85fSIan Rogers    },
17010e8d85fSIan Rogers    {
17110e8d85fSIan Rogers        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
17210e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
17310e8d85fSIan Rogers        "MetricGroup": "Branches;Fed;InsType",
17410e8d85fSIan Rogers        "MetricName": "IpBranch"
17510e8d85fSIan Rogers    },
17610e8d85fSIan Rogers    {
17710e8d85fSIan Rogers        "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)",
17810e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL",
17910e8d85fSIan Rogers        "MetricGroup": "Branches;Fed;PGO",
18010e8d85fSIan Rogers        "MetricName": "IpCall"
18110e8d85fSIan Rogers    },
18210e8d85fSIan Rogers    {
18310e8d85fSIan Rogers        "BriefDescription": "Instruction per taken branch",
18410e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN",
18510e8d85fSIan Rogers        "MetricGroup": "Branches;Fed;FetchBW;Frontend;PGO",
18610e8d85fSIan Rogers        "MetricName": "IpTB"
18710e8d85fSIan Rogers    },
18810e8d85fSIan Rogers    {
18910e8d85fSIan Rogers        "BriefDescription": "Branch instructions per taken branch. ",
19010e8d85fSIan Rogers        "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN",
19110e8d85fSIan Rogers        "MetricGroup": "Branches;Fed;PGO",
19210e8d85fSIan Rogers        "MetricName": "BpTkBranch"
19310e8d85fSIan Rogers    },
19410e8d85fSIan Rogers    {
19510e8d85fSIan Rogers        "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)",
19610e8d85fSIan Rogers        "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 )",
19710e8d85fSIan Rogers        "MetricGroup": "Flops;InsType",
19810e8d85fSIan Rogers        "MetricName": "IpFLOP"
19910e8d85fSIan Rogers    },
20010e8d85fSIan Rogers    {
20110e8d85fSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate)",
20210e8d85fSIan Rogers        "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) )",
20310e8d85fSIan Rogers        "MetricGroup": "Flops;InsType",
20410e8d85fSIan Rogers        "MetricName": "IpArith",
20510e8d85fSIan Rogers        "PublicDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). May undercount due to FMA double counting. Approximated prior to BDW."
20610e8d85fSIan Rogers    },
20710e8d85fSIan Rogers    {
20810e8d85fSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate)",
20910e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
21010e8d85fSIan Rogers        "MetricGroup": "Flops;FpScalar;InsType",
21110e8d85fSIan Rogers        "MetricName": "IpArith_Scalar_SP",
21210e8d85fSIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
21310e8d85fSIan Rogers    },
21410e8d85fSIan Rogers    {
21510e8d85fSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate)",
21610e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
21710e8d85fSIan Rogers        "MetricGroup": "Flops;FpScalar;InsType",
21810e8d85fSIan Rogers        "MetricName": "IpArith_Scalar_DP",
21910e8d85fSIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
22010e8d85fSIan Rogers    },
22110e8d85fSIan Rogers    {
22210e8d85fSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate)",
22310e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE )",
22410e8d85fSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
22510e8d85fSIan Rogers        "MetricName": "IpArith_AVX128",
22610e8d85fSIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
22710e8d85fSIan Rogers    },
22810e8d85fSIan Rogers    {
22910e8d85fSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate)",
23010e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE )",
23110e8d85fSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
23210e8d85fSIan Rogers        "MetricName": "IpArith_AVX256",
23310e8d85fSIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
23410e8d85fSIan Rogers    },
23510e8d85fSIan Rogers    {
23610e8d85fSIan Rogers        "BriefDescription": "Total number of retired Instructions, Sample with: INST_RETIRED.PREC_DIST",
23710e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY",
23810e8d85fSIan Rogers        "MetricGroup": "Summary;TmaL1",
23910e8d85fSIan Rogers        "MetricName": "Instructions"
24010e8d85fSIan Rogers    },
24110e8d85fSIan Rogers    {
242*1775634eSIan Rogers        "BriefDescription": "Average number of Uops retired in cycles where at least one uop has retired.",
243*1775634eSIan Rogers        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / cpu@UOPS_RETIRED.RETIRE_SLOTS\\,cmask\\=1@",
244*1775634eSIan Rogers        "MetricGroup": "Pipeline;Ret",
245*1775634eSIan Rogers        "MetricName": "Retire"
246*1775634eSIan Rogers    },
247*1775634eSIan Rogers    {
248*1775634eSIan Rogers        "BriefDescription": "",
249*1775634eSIan Rogers        "MetricExpr": "UOPS_EXECUTED.THREAD / cpu@UOPS_EXECUTED.THREAD\\,cmask\\=1@",
250*1775634eSIan Rogers        "MetricGroup": "Cor;Pipeline;PortsUtil;SMT",
251*1775634eSIan Rogers        "MetricName": "Execute"
252*1775634eSIan Rogers    },
253*1775634eSIan Rogers    {
25410e8d85fSIan Rogers        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
25510e8d85fSIan Rogers        "MetricExpr": "IDQ.DSB_UOPS / (( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) )",
25610e8d85fSIan Rogers        "MetricGroup": "DSB;Fed;FetchBW",
25710e8d85fSIan Rogers        "MetricName": "DSB_Coverage"
25810e8d85fSIan Rogers    },
25910e8d85fSIan Rogers    {
260*1775634eSIan Rogers        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear) (lower number means higher occurrence rate)",
261*1775634eSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
262*1775634eSIan Rogers        "MetricGroup": "Bad;BadSpec;BrMispredicts",
263*1775634eSIan Rogers        "MetricName": "IpMispredict"
264*1775634eSIan Rogers    },
265*1775634eSIan Rogers    {
266*1775634eSIan Rogers        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
267*1775634eSIan Rogers        "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",
268*1775634eSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
269*1775634eSIan Rogers        "MetricName": "Branch_Misprediction_Cost"
270*1775634eSIan Rogers    },
271*1775634eSIan Rogers    {
272*1775634eSIan Rogers        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
273*1775634eSIan Rogers        "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",
274*1775634eSIan Rogers        "MetricGroup": "Bad;BrMispredicts_SMT",
275*1775634eSIan Rogers        "MetricName": "Branch_Misprediction_Cost_SMT"
276*1775634eSIan Rogers    },
277*1775634eSIan Rogers    {
278*1775634eSIan Rogers        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand load operations (in core cycles)",
27961ec07f5SHaiyan Song        "MetricExpr": "L1D_PEND_MISS.PENDING / ( MEM_LOAD_UOPS_RETIRED.L1_MISS + mem_load_uops_retired.hit_lfb )",
28010e8d85fSIan Rogers        "MetricGroup": "Mem;MemoryBound;MemoryLat",
281*1775634eSIan Rogers        "MetricName": "Load_Miss_Real_Latency"
282cf979623SAndi Kleen    },
283cf979623SAndi Kleen    {
28461ec07f5SHaiyan Song        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)",
285fd550098SAndi Kleen        "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES",
28610e8d85fSIan Rogers        "MetricGroup": "Mem;MemoryBound;MemoryBW",
287cf979623SAndi Kleen        "MetricName": "MLP"
288cf979623SAndi Kleen    },
289cf979623SAndi Kleen    {
290fd550098SAndi Kleen        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
29161ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L1_MISS / INST_RETIRED.ANY",
29210e8d85fSIan Rogers        "MetricGroup": "Mem;CacheMisses",
293fd550098SAndi Kleen        "MetricName": "L1MPKI"
294fd550098SAndi Kleen    },
295fd550098SAndi Kleen    {
296fd550098SAndi Kleen        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
29761ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L2_MISS / INST_RETIRED.ANY",
29810e8d85fSIan Rogers        "MetricGroup": "Mem;Backend;CacheMisses",
299fd550098SAndi Kleen        "MetricName": "L2MPKI"
300fd550098SAndi Kleen    },
301fd550098SAndi Kleen    {
302*1775634eSIan Rogers        "BriefDescription": "L2 cache ([RKL+] true) misses per kilo instruction for all request types (including speculative)",
30361ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_RQSTS.MISS / INST_RETIRED.ANY",
30410e8d85fSIan Rogers        "MetricGroup": "Mem;CacheMisses;Offcore",
305fd550098SAndi Kleen        "MetricName": "L2MPKI_All"
306fd550098SAndi Kleen    },
307fd550098SAndi Kleen    {
308*1775634eSIan Rogers        "BriefDescription": "L2 cache ([RKL+] true) misses per kilo instruction for all demand loads  (including speculative)",
30910e8d85fSIan Rogers        "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY",
31010e8d85fSIan Rogers        "MetricGroup": "Mem;CacheMisses",
31110e8d85fSIan Rogers        "MetricName": "L2MPKI_Load"
31210e8d85fSIan Rogers    },
31310e8d85fSIan Rogers    {
314fd550098SAndi Kleen        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
31561ec07f5SHaiyan Song        "MetricExpr": "1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY",
31610e8d85fSIan Rogers        "MetricGroup": "Mem;CacheMisses",
317fd550098SAndi Kleen        "MetricName": "L2HPKI_All"
318fd550098SAndi Kleen    },
319fd550098SAndi Kleen    {
32010e8d85fSIan Rogers        "BriefDescription": "L2 cache hits per kilo instruction for all demand loads  (including speculative)",
32110e8d85fSIan Rogers        "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY",
32210e8d85fSIan Rogers        "MetricGroup": "Mem;CacheMisses",
32310e8d85fSIan Rogers        "MetricName": "L2HPKI_Load"
32410e8d85fSIan Rogers    },
32510e8d85fSIan Rogers    {
326fd550098SAndi Kleen        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
32761ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L3_MISS / INST_RETIRED.ANY",
32810e8d85fSIan Rogers        "MetricGroup": "Mem;CacheMisses",
329fd550098SAndi Kleen        "MetricName": "L3MPKI"
330fd550098SAndi Kleen    },
331fd550098SAndi Kleen    {
33210e8d85fSIan Rogers        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
33310e8d85fSIan Rogers        "MetricConstraint": "NO_NMI_WATCHDOG",
33410e8d85fSIan Rogers        "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",
33510e8d85fSIan Rogers        "MetricGroup": "Mem;MemoryTLB",
33610e8d85fSIan Rogers        "MetricName": "Page_Walks_Utilization"
33710e8d85fSIan Rogers    },
33810e8d85fSIan Rogers    {
33910e8d85fSIan Rogers        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
34010e8d85fSIan Rogers        "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 ) )",
34110e8d85fSIan Rogers        "MetricGroup": "Mem;MemoryTLB_SMT",
34210e8d85fSIan Rogers        "MetricName": "Page_Walks_Utilization_SMT"
34310e8d85fSIan Rogers    },
34410e8d85fSIan Rogers    {
345*1775634eSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L1 data cache [GB / sec]",
346*1775634eSIan Rogers        "MetricExpr": "64 * L1D.REPLACEMENT / 1000000000 / duration_time",
347*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW",
348*1775634eSIan Rogers        "MetricName": "L1D_Cache_Fill_BW"
349*1775634eSIan Rogers    },
350*1775634eSIan Rogers    {
351*1775634eSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L2 cache [GB / sec]",
352*1775634eSIan Rogers        "MetricExpr": "64 * L2_LINES_IN.ALL / 1000000000 / duration_time",
353*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW",
354*1775634eSIan Rogers        "MetricName": "L2_Cache_Fill_BW"
355*1775634eSIan Rogers    },
356*1775634eSIan Rogers    {
357*1775634eSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
358*1775634eSIan Rogers        "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time",
359*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW",
360*1775634eSIan Rogers        "MetricName": "L3_Cache_Fill_BW"
361*1775634eSIan Rogers    },
362*1775634eSIan Rogers    {
363*1775634eSIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L1 data cache [GB / sec]",
364*1775634eSIan Rogers        "MetricExpr": "(64 * L1D.REPLACEMENT / 1000000000 / duration_time)",
365*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW",
366*1775634eSIan Rogers        "MetricName": "L1D_Cache_Fill_BW_1T"
367*1775634eSIan Rogers    },
368*1775634eSIan Rogers    {
369*1775634eSIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L2 cache [GB / sec]",
370*1775634eSIan Rogers        "MetricExpr": "(64 * L2_LINES_IN.ALL / 1000000000 / duration_time)",
371*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW",
372*1775634eSIan Rogers        "MetricName": "L2_Cache_Fill_BW_1T"
373*1775634eSIan Rogers    },
374*1775634eSIan Rogers    {
375*1775634eSIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L3 cache [GB / sec]",
376*1775634eSIan Rogers        "MetricExpr": "(64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time)",
377*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW",
378*1775634eSIan Rogers        "MetricName": "L3_Cache_Fill_BW_1T"
379*1775634eSIan Rogers    },
380*1775634eSIan Rogers    {
381*1775634eSIan Rogers        "BriefDescription": "Average per-thread data access bandwidth to the L3 cache [GB / sec]",
382*1775634eSIan Rogers        "MetricExpr": "0",
383*1775634eSIan Rogers        "MetricGroup": "Mem;MemoryBW;Offcore",
384*1775634eSIan Rogers        "MetricName": "L3_Cache_Access_BW_1T"
385*1775634eSIan Rogers    },
386*1775634eSIan Rogers    {
387fd550098SAndi Kleen        "BriefDescription": "Average CPU Utilization",
38861ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
38910e8d85fSIan Rogers        "MetricGroup": "HPC;Summary",
390cf979623SAndi Kleen        "MetricName": "CPU_Utilization"
391cf979623SAndi Kleen    },
392cf979623SAndi Kleen    {
39310e8d85fSIan Rogers        "BriefDescription": "Measured Average Frequency for unhalted processors [GHz]",
39410e8d85fSIan Rogers        "MetricExpr": "(CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time",
39510e8d85fSIan Rogers        "MetricGroup": "Summary;Power",
39610e8d85fSIan Rogers        "MetricName": "Average_Frequency"
39710e8d85fSIan Rogers    },
39810e8d85fSIan Rogers    {
399cf979623SAndi Kleen        "BriefDescription": "Giga Floating Point Operations Per Second",
40010e8d85fSIan Rogers        "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",
40110e8d85fSIan Rogers        "MetricGroup": "Cor;Flops;HPC",
402*1775634eSIan Rogers        "MetricName": "GFLOPs",
403*1775634eSIan Rogers        "PublicDescription": "Giga Floating Point Operations Per Second. Aggregate across all supported options of: FP precisions, scalar and vector instructions, vector-width and AMX engine."
404cf979623SAndi Kleen    },
405cf979623SAndi Kleen    {
406fd550098SAndi Kleen        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
40761ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
408cf979623SAndi Kleen        "MetricGroup": "Power",
409cf979623SAndi Kleen        "MetricName": "Turbo_Utilization"
410cf979623SAndi Kleen    },
411cf979623SAndi Kleen    {
41261ec07f5SHaiyan Song        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
41310e8d85fSIan Rogers        "MetricExpr": "1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
41410e8d85fSIan Rogers        "MetricGroup": "SMT",
415cf979623SAndi Kleen        "MetricName": "SMT_2T_Utilization"
416cf979623SAndi Kleen    },
417cf979623SAndi Kleen    {
41810e8d85fSIan Rogers        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
41910e8d85fSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / CPU_CLK_UNHALTED.THREAD",
42010e8d85fSIan Rogers        "MetricGroup": "OS",
421cf979623SAndi Kleen        "MetricName": "Kernel_Utilization"
422cf979623SAndi Kleen    },
423cf979623SAndi Kleen    {
42410e8d85fSIan Rogers        "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode",
42510e8d85fSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / INST_RETIRED.ANY_P:k",
42610e8d85fSIan Rogers        "MetricGroup": "OS",
42710e8d85fSIan Rogers        "MetricName": "Kernel_CPI"
42810e8d85fSIan Rogers    },
42910e8d85fSIan Rogers    {
430fd550098SAndi Kleen        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
43161ec07f5SHaiyan Song        "MetricExpr": "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000",
43210e8d85fSIan Rogers        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
433fd550098SAndi Kleen        "MetricName": "DRAM_BW_Use"
434fd550098SAndi Kleen    },
435fd550098SAndi Kleen    {
43610e8d85fSIan Rogers        "BriefDescription": "Average latency of all requests to external memory (in Uncore cycles)",
43710e8d85fSIan Rogers        "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@",
43810e8d85fSIan Rogers        "MetricGroup": "Mem;SoC",
43910e8d85fSIan Rogers        "MetricName": "MEM_Request_Latency"
44010e8d85fSIan Rogers    },
44110e8d85fSIan Rogers    {
44210e8d85fSIan Rogers        "BriefDescription": "Average number of parallel requests to external memory. Accounts for all requests",
44310e8d85fSIan Rogers        "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@",
44410e8d85fSIan Rogers        "MetricGroup": "Mem;SoC",
44510e8d85fSIan Rogers        "MetricName": "MEM_Parallel_Requests"
44610e8d85fSIan Rogers    },
44710e8d85fSIan Rogers    {
44810e8d85fSIan Rogers        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
44910e8d85fSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH:u",
45010e8d85fSIan Rogers        "MetricGroup": "Branches;OS",
45110e8d85fSIan Rogers        "MetricName": "IpFarBranch"
45210e8d85fSIan Rogers    },
45310e8d85fSIan Rogers    {
45461ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per core",
455cf979623SAndi Kleen        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
456cf979623SAndi Kleen        "MetricGroup": "Power",
457cf979623SAndi Kleen        "MetricName": "C3_Core_Residency"
458cf979623SAndi Kleen    },
459cf979623SAndi Kleen    {
46061ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per core",
461cf979623SAndi Kleen        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
462cf979623SAndi Kleen        "MetricGroup": "Power",
463cf979623SAndi Kleen        "MetricName": "C6_Core_Residency"
464cf979623SAndi Kleen    },
465cf979623SAndi Kleen    {
46661ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per core",
467cf979623SAndi Kleen        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
468cf979623SAndi Kleen        "MetricGroup": "Power",
469cf979623SAndi Kleen        "MetricName": "C7_Core_Residency"
470cf979623SAndi Kleen    },
471cf979623SAndi Kleen    {
47261ec07f5SHaiyan Song        "BriefDescription": "C2 residency percent per package",
473cf979623SAndi Kleen        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
474cf979623SAndi Kleen        "MetricGroup": "Power",
475cf979623SAndi Kleen        "MetricName": "C2_Pkg_Residency"
476cf979623SAndi Kleen    },
477cf979623SAndi Kleen    {
47861ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per package",
479cf979623SAndi Kleen        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
480cf979623SAndi Kleen        "MetricGroup": "Power",
481cf979623SAndi Kleen        "MetricName": "C3_Pkg_Residency"
482cf979623SAndi Kleen    },
483cf979623SAndi Kleen    {
48461ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per package",
485cf979623SAndi Kleen        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
486cf979623SAndi Kleen        "MetricGroup": "Power",
487cf979623SAndi Kleen        "MetricName": "C6_Pkg_Residency"
488cf979623SAndi Kleen    },
489cf979623SAndi Kleen    {
49061ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per package",
491cf979623SAndi Kleen        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
492cf979623SAndi Kleen        "MetricGroup": "Power",
493cf979623SAndi Kleen        "MetricName": "C7_Pkg_Residency"
494cf979623SAndi Kleen    }
495cf979623SAndi Kleen]
496