1cf979623SAndi Kleen[ 2cf979623SAndi Kleen { 3fd550098SAndi Kleen "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend", 4*10e8d85fSIan Rogers "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)", 5fd550098SAndi Kleen "MetricGroup": "TopdownL1", 661ec07f5SHaiyan Song "MetricName": "Frontend_Bound", 7*10e8d85fSIan 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.", 11*10e8d85fSIan 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", 14*10e8d85fSIan 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", 18*10e8d85fSIan 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.", 25*10e8d85fSIan 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", 32*10e8d85fSIan Rogers "MetricConstraint": "NO_NMI_WATCHDOG", 33*10e8d85fSIan 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.", 40*10e8d85fSIan 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", 47*10e8d85fSIan Rogers "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)", 48fd550098SAndi Kleen "MetricGroup": "TopdownL1", 4961ec07f5SHaiyan Song "MetricName": "Retiring", 50*10e8d85fSIan 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.", 54*10e8d85fSIan 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", 57*10e8d85fSIan 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", 62*10e8d85fSIan 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", 68*10e8d85fSIan Rogers "MetricGroup": "Pipeline;Ret;Retire", 69cf979623SAndi Kleen "MetricName": "UPI" 70cf979623SAndi Kleen }, 71cf979623SAndi Kleen { 72fd550098SAndi Kleen "BriefDescription": "Instruction per taken branch", 73*10e8d85fSIan Rogers "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / BR_INST_RETIRED.NEAR_TAKEN", 74*10e8d85fSIan Rogers "MetricGroup": "Branches;Fed;FetchBW", 75*10e8d85fSIan Rogers "MetricName": "UpTB" 76cf979623SAndi Kleen }, 77cf979623SAndi Kleen { 7861ec07f5SHaiyan Song "BriefDescription": "Cycles Per Instruction (per Logical Processor)", 79*10e8d85fSIan Rogers "MetricExpr": "1 / (INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD)", 80*10e8d85fSIan 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", 86*10e8d85fSIan Rogers "MetricGroup": "Pipeline", 87cf979623SAndi Kleen "MetricName": "CLKS" 88cf979623SAndi Kleen }, 89cf979623SAndi Kleen { 90*10e8d85fSIan Rogers "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)", 91*10e8d85fSIan Rogers "MetricExpr": "4 * CPU_CLK_UNHALTED.THREAD", 92*10e8d85fSIan Rogers "MetricGroup": "TmaL1", 93cf979623SAndi Kleen "MetricName": "SLOTS" 94cf979623SAndi Kleen }, 95cf979623SAndi Kleen { 96*10e8d85fSIan Rogers "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)", 97*10e8d85fSIan Rogers "MetricExpr": "4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )", 98*10e8d85fSIan Rogers "MetricGroup": "TmaL1_SMT", 99fd550098SAndi Kleen "MetricName": "SLOTS_SMT" 100fd550098SAndi Kleen }, 101fd550098SAndi Kleen { 102*10e8d85fSIan Rogers "BriefDescription": "The ratio of Executed- by Issued-Uops", 103*10e8d85fSIan Rogers "MetricExpr": "UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY", 104*10e8d85fSIan Rogers "MetricGroup": "Cor;Pipeline", 105*10e8d85fSIan Rogers "MetricName": "Execute_per_Issue", 106*10e8d85fSIan 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 { 109*10e8d85fSIan Rogers "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)", 110*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD", 111*10e8d85fSIan Rogers "MetricGroup": "Ret;SMT;TmaL1", 112cf979623SAndi Kleen "MetricName": "CoreIPC" 113cf979623SAndi Kleen }, 114cf979623SAndi Kleen { 115*10e8d85fSIan Rogers "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)", 116*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )", 117*10e8d85fSIan Rogers "MetricGroup": "Ret;SMT;TmaL1_SMT", 118fd550098SAndi Kleen "MetricName": "CoreIPC_SMT" 119fd550098SAndi Kleen }, 120fd550098SAndi Kleen { 121fd550098SAndi Kleen "BriefDescription": "Floating Point Operations Per Cycle", 122*10e8d85fSIan 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", 123*10e8d85fSIan Rogers "MetricGroup": "Ret;Flops", 124fd550098SAndi Kleen "MetricName": "FLOPc" 125fd550098SAndi Kleen }, 126fd550098SAndi Kleen { 127fd550098SAndi Kleen "BriefDescription": "Floating Point Operations Per Cycle", 128*10e8d85fSIan 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 ) )", 129*10e8d85fSIan Rogers "MetricGroup": "Ret;Flops_SMT", 130fd550098SAndi Kleen "MetricName": "FLOPc_SMT" 131fd550098SAndi Kleen }, 132fd550098SAndi Kleen { 133*10e8d85fSIan Rogers "BriefDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width)", 134*10e8d85fSIan 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 )", 135*10e8d85fSIan Rogers "MetricGroup": "Cor;Flops;HPC", 136*10e8d85fSIan Rogers "MetricName": "FP_Arith_Utilization", 137*10e8d85fSIan Rogers "PublicDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). Values > 1 are possible due to Fused-Multiply Add (FMA) counting." 138*10e8d85fSIan Rogers }, 139*10e8d85fSIan Rogers { 140*10e8d85fSIan Rogers "BriefDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). SMT version; use when SMT is enabled and measuring per logical CPU.", 141*10e8d85fSIan 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 ) ) )", 142*10e8d85fSIan Rogers "MetricGroup": "Cor;Flops;HPC_SMT", 143*10e8d85fSIan Rogers "MetricName": "FP_Arith_Utilization_SMT", 144*10e8d85fSIan Rogers "PublicDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). Values > 1 are possible due to Fused-Multiply Add (FMA) counting. SMT version; use when SMT is enabled and measuring per logical CPU." 145*10e8d85fSIan Rogers }, 146*10e8d85fSIan Rogers { 147fd550098SAndi Kleen "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)", 14861ec07f5SHaiyan Song "MetricExpr": "UOPS_EXECUTED.THREAD / (( cpu@UOPS_EXECUTED.CORE\\,cmask\\=1@ / 2 ) if #SMT_on else UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC)", 149*10e8d85fSIan Rogers "MetricGroup": "Backend;Cor;Pipeline;PortsUtil", 150cf979623SAndi Kleen "MetricName": "ILP" 151cf979623SAndi Kleen }, 152cf979623SAndi Kleen { 153*10e8d85fSIan Rogers "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)", 154*10e8d85fSIan 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", 155*10e8d85fSIan Rogers "MetricGroup": "Bad;BrMispredicts", 156fd550098SAndi Kleen "MetricName": "Branch_Misprediction_Cost" 157cf979623SAndi Kleen }, 158cf979623SAndi Kleen { 159*10e8d85fSIan Rogers "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)", 160*10e8d85fSIan 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", 161*10e8d85fSIan Rogers "MetricGroup": "Bad;BrMispredicts_SMT", 162fd550098SAndi Kleen "MetricName": "Branch_Misprediction_Cost_SMT" 163fd550098SAndi Kleen }, 164fd550098SAndi Kleen { 165fd550098SAndi Kleen "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear)", 16661ec07f5SHaiyan Song "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES", 167*10e8d85fSIan Rogers "MetricGroup": "Bad;BadSpec;BrMispredicts", 168fd550098SAndi Kleen "MetricName": "IpMispredict" 169fd550098SAndi Kleen }, 170fd550098SAndi Kleen { 17161ec07f5SHaiyan Song "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core", 172fd550098SAndi Kleen "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )", 173cf979623SAndi Kleen "MetricGroup": "SMT", 174cf979623SAndi Kleen "MetricName": "CORE_CLKS" 175cf979623SAndi Kleen }, 176cf979623SAndi Kleen { 177*10e8d85fSIan Rogers "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)", 178*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS", 179*10e8d85fSIan Rogers "MetricGroup": "InsType", 180*10e8d85fSIan Rogers "MetricName": "IpLoad" 181*10e8d85fSIan Rogers }, 182*10e8d85fSIan Rogers { 183*10e8d85fSIan Rogers "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)", 184*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES", 185*10e8d85fSIan Rogers "MetricGroup": "InsType", 186*10e8d85fSIan Rogers "MetricName": "IpStore" 187*10e8d85fSIan Rogers }, 188*10e8d85fSIan Rogers { 189*10e8d85fSIan Rogers "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)", 190*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES", 191*10e8d85fSIan Rogers "MetricGroup": "Branches;Fed;InsType", 192*10e8d85fSIan Rogers "MetricName": "IpBranch" 193*10e8d85fSIan Rogers }, 194*10e8d85fSIan Rogers { 195*10e8d85fSIan Rogers "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)", 196*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL", 197*10e8d85fSIan Rogers "MetricGroup": "Branches;Fed;PGO", 198*10e8d85fSIan Rogers "MetricName": "IpCall" 199*10e8d85fSIan Rogers }, 200*10e8d85fSIan Rogers { 201*10e8d85fSIan Rogers "BriefDescription": "Instruction per taken branch", 202*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN", 203*10e8d85fSIan Rogers "MetricGroup": "Branches;Fed;FetchBW;Frontend;PGO", 204*10e8d85fSIan Rogers "MetricName": "IpTB" 205*10e8d85fSIan Rogers }, 206*10e8d85fSIan Rogers { 207*10e8d85fSIan Rogers "BriefDescription": "Branch instructions per taken branch. ", 208*10e8d85fSIan Rogers "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN", 209*10e8d85fSIan Rogers "MetricGroup": "Branches;Fed;PGO", 210*10e8d85fSIan Rogers "MetricName": "BpTkBranch" 211*10e8d85fSIan Rogers }, 212*10e8d85fSIan Rogers { 213*10e8d85fSIan Rogers "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)", 214*10e8d85fSIan 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 )", 215*10e8d85fSIan Rogers "MetricGroup": "Flops;InsType", 216*10e8d85fSIan Rogers "MetricName": "IpFLOP" 217*10e8d85fSIan Rogers }, 218*10e8d85fSIan Rogers { 219*10e8d85fSIan Rogers "BriefDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate)", 220*10e8d85fSIan 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) )", 221*10e8d85fSIan Rogers "MetricGroup": "Flops;InsType", 222*10e8d85fSIan Rogers "MetricName": "IpArith", 223*10e8d85fSIan Rogers "PublicDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). May undercount due to FMA double counting. Approximated prior to BDW." 224*10e8d85fSIan Rogers }, 225*10e8d85fSIan Rogers { 226*10e8d85fSIan Rogers "BriefDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate)", 227*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE", 228*10e8d85fSIan Rogers "MetricGroup": "Flops;FpScalar;InsType", 229*10e8d85fSIan Rogers "MetricName": "IpArith_Scalar_SP", 230*10e8d85fSIan Rogers "PublicDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting." 231*10e8d85fSIan Rogers }, 232*10e8d85fSIan Rogers { 233*10e8d85fSIan Rogers "BriefDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate)", 234*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE", 235*10e8d85fSIan Rogers "MetricGroup": "Flops;FpScalar;InsType", 236*10e8d85fSIan Rogers "MetricName": "IpArith_Scalar_DP", 237*10e8d85fSIan Rogers "PublicDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting." 238*10e8d85fSIan Rogers }, 239*10e8d85fSIan Rogers { 240*10e8d85fSIan Rogers "BriefDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate)", 241*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE )", 242*10e8d85fSIan Rogers "MetricGroup": "Flops;FpVector;InsType", 243*10e8d85fSIan Rogers "MetricName": "IpArith_AVX128", 244*10e8d85fSIan Rogers "PublicDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting." 245*10e8d85fSIan Rogers }, 246*10e8d85fSIan Rogers { 247*10e8d85fSIan Rogers "BriefDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate)", 248*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE )", 249*10e8d85fSIan Rogers "MetricGroup": "Flops;FpVector;InsType", 250*10e8d85fSIan Rogers "MetricName": "IpArith_AVX256", 251*10e8d85fSIan Rogers "PublicDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting." 252*10e8d85fSIan Rogers }, 253*10e8d85fSIan Rogers { 254*10e8d85fSIan Rogers "BriefDescription": "Total number of retired Instructions, Sample with: INST_RETIRED.PREC_DIST", 255*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY", 256*10e8d85fSIan Rogers "MetricGroup": "Summary;TmaL1", 257*10e8d85fSIan Rogers "MetricName": "Instructions" 258*10e8d85fSIan Rogers }, 259*10e8d85fSIan Rogers { 260*10e8d85fSIan Rogers "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)", 261*10e8d85fSIan Rogers "MetricExpr": "IDQ.DSB_UOPS / (( IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS ) )", 262*10e8d85fSIan Rogers "MetricGroup": "DSB;Fed;FetchBW", 263*10e8d85fSIan Rogers "MetricName": "DSB_Coverage" 264*10e8d85fSIan Rogers }, 265*10e8d85fSIan Rogers { 266*10e8d85fSIan Rogers "BriefDescription": "Actual Average Latency for L1 data-cache miss demand load instructions (in core cycles)", 26761ec07f5SHaiyan Song "MetricExpr": "L1D_PEND_MISS.PENDING / ( MEM_LOAD_UOPS_RETIRED.L1_MISS + mem_load_uops_retired.hit_lfb )", 268*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryBound;MemoryLat", 269*10e8d85fSIan Rogers "MetricName": "Load_Miss_Real_Latency", 270*10e8d85fSIan Rogers "PublicDescription": "Actual Average Latency for L1 data-cache miss demand load instructions (in core cycles). Latency may be overestimated for multi-load instructions - e.g. repeat strings." 271cf979623SAndi Kleen }, 272cf979623SAndi Kleen { 27361ec07f5SHaiyan Song "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)", 274fd550098SAndi Kleen "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES", 275*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryBound;MemoryBW", 276cf979623SAndi Kleen "MetricName": "MLP" 277cf979623SAndi Kleen }, 278cf979623SAndi Kleen { 279fd550098SAndi Kleen "BriefDescription": "Average data fill bandwidth to the L1 data cache [GB / sec]", 28061ec07f5SHaiyan Song "MetricExpr": "64 * L1D.REPLACEMENT / 1000000000 / duration_time", 281*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryBW", 282fd550098SAndi Kleen "MetricName": "L1D_Cache_Fill_BW" 283fd550098SAndi Kleen }, 284fd550098SAndi Kleen { 285fd550098SAndi Kleen "BriefDescription": "Average data fill bandwidth to the L2 cache [GB / sec]", 28661ec07f5SHaiyan Song "MetricExpr": "64 * L2_LINES_IN.ALL / 1000000000 / duration_time", 287*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryBW", 288fd550098SAndi Kleen "MetricName": "L2_Cache_Fill_BW" 289fd550098SAndi Kleen }, 290fd550098SAndi Kleen { 291fd550098SAndi Kleen "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]", 29261ec07f5SHaiyan Song "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time", 293*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryBW", 294fd550098SAndi Kleen "MetricName": "L3_Cache_Fill_BW" 295fd550098SAndi Kleen }, 296fd550098SAndi Kleen { 297fd550098SAndi Kleen "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads", 29861ec07f5SHaiyan Song "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L1_MISS / INST_RETIRED.ANY", 299*10e8d85fSIan Rogers "MetricGroup": "Mem;CacheMisses", 300fd550098SAndi Kleen "MetricName": "L1MPKI" 301fd550098SAndi Kleen }, 302fd550098SAndi Kleen { 303fd550098SAndi Kleen "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads", 30461ec07f5SHaiyan Song "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L2_MISS / INST_RETIRED.ANY", 305*10e8d85fSIan Rogers "MetricGroup": "Mem;Backend;CacheMisses", 306fd550098SAndi Kleen "MetricName": "L2MPKI" 307fd550098SAndi Kleen }, 308fd550098SAndi Kleen { 309fd550098SAndi Kleen "BriefDescription": "L2 cache misses per kilo instruction for all request types (including speculative)", 31061ec07f5SHaiyan Song "MetricExpr": "1000 * L2_RQSTS.MISS / INST_RETIRED.ANY", 311*10e8d85fSIan Rogers "MetricGroup": "Mem;CacheMisses;Offcore", 312fd550098SAndi Kleen "MetricName": "L2MPKI_All" 313fd550098SAndi Kleen }, 314fd550098SAndi Kleen { 315*10e8d85fSIan Rogers "BriefDescription": "L2 cache misses per kilo instruction for all demand loads (including speculative)", 316*10e8d85fSIan Rogers "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY", 317*10e8d85fSIan Rogers "MetricGroup": "Mem;CacheMisses", 318*10e8d85fSIan Rogers "MetricName": "L2MPKI_Load" 319*10e8d85fSIan Rogers }, 320*10e8d85fSIan Rogers { 321fd550098SAndi Kleen "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)", 32261ec07f5SHaiyan Song "MetricExpr": "1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY", 323*10e8d85fSIan Rogers "MetricGroup": "Mem;CacheMisses", 324fd550098SAndi Kleen "MetricName": "L2HPKI_All" 325fd550098SAndi Kleen }, 326fd550098SAndi Kleen { 327*10e8d85fSIan Rogers "BriefDescription": "L2 cache hits per kilo instruction for all demand loads (including speculative)", 328*10e8d85fSIan Rogers "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY", 329*10e8d85fSIan Rogers "MetricGroup": "Mem;CacheMisses", 330*10e8d85fSIan Rogers "MetricName": "L2HPKI_Load" 331*10e8d85fSIan Rogers }, 332*10e8d85fSIan Rogers { 333fd550098SAndi Kleen "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads", 33461ec07f5SHaiyan Song "MetricExpr": "1000 * MEM_LOAD_UOPS_RETIRED.L3_MISS / INST_RETIRED.ANY", 335*10e8d85fSIan Rogers "MetricGroup": "Mem;CacheMisses", 336fd550098SAndi Kleen "MetricName": "L3MPKI" 337fd550098SAndi Kleen }, 338fd550098SAndi Kleen { 339*10e8d85fSIan Rogers "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses", 340*10e8d85fSIan Rogers "MetricConstraint": "NO_NMI_WATCHDOG", 341*10e8d85fSIan 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", 342*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryTLB", 343*10e8d85fSIan Rogers "MetricName": "Page_Walks_Utilization" 344*10e8d85fSIan Rogers }, 345*10e8d85fSIan Rogers { 346*10e8d85fSIan Rogers "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses", 347*10e8d85fSIan 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 ) )", 348*10e8d85fSIan Rogers "MetricGroup": "Mem;MemoryTLB_SMT", 349*10e8d85fSIan Rogers "MetricName": "Page_Walks_Utilization_SMT" 350*10e8d85fSIan Rogers }, 351*10e8d85fSIan Rogers { 352fd550098SAndi Kleen "BriefDescription": "Average CPU Utilization", 35361ec07f5SHaiyan Song "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@", 354*10e8d85fSIan Rogers "MetricGroup": "HPC;Summary", 355cf979623SAndi Kleen "MetricName": "CPU_Utilization" 356cf979623SAndi Kleen }, 357cf979623SAndi Kleen { 358*10e8d85fSIan Rogers "BriefDescription": "Measured Average Frequency for unhalted processors [GHz]", 359*10e8d85fSIan Rogers "MetricExpr": "(CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time", 360*10e8d85fSIan Rogers "MetricGroup": "Summary;Power", 361*10e8d85fSIan Rogers "MetricName": "Average_Frequency" 362*10e8d85fSIan Rogers }, 363*10e8d85fSIan Rogers { 364cf979623SAndi Kleen "BriefDescription": "Giga Floating Point Operations Per Second", 365*10e8d85fSIan 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", 366*10e8d85fSIan Rogers "MetricGroup": "Cor;Flops;HPC", 367cf979623SAndi Kleen "MetricName": "GFLOPs" 368cf979623SAndi Kleen }, 369cf979623SAndi Kleen { 370fd550098SAndi Kleen "BriefDescription": "Average Frequency Utilization relative nominal frequency", 37161ec07f5SHaiyan Song "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC", 372cf979623SAndi Kleen "MetricGroup": "Power", 373cf979623SAndi Kleen "MetricName": "Turbo_Utilization" 374cf979623SAndi Kleen }, 375cf979623SAndi Kleen { 37661ec07f5SHaiyan Song "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active", 377*10e8d85fSIan Rogers "MetricExpr": "1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0", 378*10e8d85fSIan Rogers "MetricGroup": "SMT", 379cf979623SAndi Kleen "MetricName": "SMT_2T_Utilization" 380cf979623SAndi Kleen }, 381cf979623SAndi Kleen { 382*10e8d85fSIan Rogers "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode", 383*10e8d85fSIan Rogers "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / CPU_CLK_UNHALTED.THREAD", 384*10e8d85fSIan Rogers "MetricGroup": "OS", 385cf979623SAndi Kleen "MetricName": "Kernel_Utilization" 386cf979623SAndi Kleen }, 387cf979623SAndi Kleen { 388*10e8d85fSIan Rogers "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode", 389*10e8d85fSIan Rogers "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / INST_RETIRED.ANY_P:k", 390*10e8d85fSIan Rogers "MetricGroup": "OS", 391*10e8d85fSIan Rogers "MetricName": "Kernel_CPI" 392*10e8d85fSIan Rogers }, 393*10e8d85fSIan Rogers { 394fd550098SAndi Kleen "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]", 39561ec07f5SHaiyan Song "MetricExpr": "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000", 396*10e8d85fSIan Rogers "MetricGroup": "HPC;Mem;MemoryBW;SoC", 397fd550098SAndi Kleen "MetricName": "DRAM_BW_Use" 398fd550098SAndi Kleen }, 399fd550098SAndi Kleen { 400*10e8d85fSIan Rogers "BriefDescription": "Average latency of all requests to external memory (in Uncore cycles)", 401*10e8d85fSIan Rogers "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@", 402*10e8d85fSIan Rogers "MetricGroup": "Mem;SoC", 403*10e8d85fSIan Rogers "MetricName": "MEM_Request_Latency" 404*10e8d85fSIan Rogers }, 405*10e8d85fSIan Rogers { 406*10e8d85fSIan Rogers "BriefDescription": "Average number of parallel requests to external memory. Accounts for all requests", 407*10e8d85fSIan Rogers "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@", 408*10e8d85fSIan Rogers "MetricGroup": "Mem;SoC", 409*10e8d85fSIan Rogers "MetricName": "MEM_Parallel_Requests" 410*10e8d85fSIan Rogers }, 411*10e8d85fSIan Rogers { 412*10e8d85fSIan 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]", 413*10e8d85fSIan Rogers "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH:u", 414*10e8d85fSIan Rogers "MetricGroup": "Branches;OS", 415*10e8d85fSIan Rogers "MetricName": "IpFarBranch" 416*10e8d85fSIan Rogers }, 417*10e8d85fSIan Rogers { 41861ec07f5SHaiyan Song "BriefDescription": "C3 residency percent per core", 419cf979623SAndi Kleen "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100", 420cf979623SAndi Kleen "MetricGroup": "Power", 421cf979623SAndi Kleen "MetricName": "C3_Core_Residency" 422cf979623SAndi Kleen }, 423cf979623SAndi Kleen { 42461ec07f5SHaiyan Song "BriefDescription": "C6 residency percent per core", 425cf979623SAndi Kleen "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100", 426cf979623SAndi Kleen "MetricGroup": "Power", 427cf979623SAndi Kleen "MetricName": "C6_Core_Residency" 428cf979623SAndi Kleen }, 429cf979623SAndi Kleen { 43061ec07f5SHaiyan Song "BriefDescription": "C7 residency percent per core", 431cf979623SAndi Kleen "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100", 432cf979623SAndi Kleen "MetricGroup": "Power", 433cf979623SAndi Kleen "MetricName": "C7_Core_Residency" 434cf979623SAndi Kleen }, 435cf979623SAndi Kleen { 43661ec07f5SHaiyan Song "BriefDescription": "C2 residency percent per package", 437cf979623SAndi Kleen "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100", 438cf979623SAndi Kleen "MetricGroup": "Power", 439cf979623SAndi Kleen "MetricName": "C2_Pkg_Residency" 440cf979623SAndi Kleen }, 441cf979623SAndi Kleen { 44261ec07f5SHaiyan Song "BriefDescription": "C3 residency percent per package", 443cf979623SAndi Kleen "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100", 444cf979623SAndi Kleen "MetricGroup": "Power", 445cf979623SAndi Kleen "MetricName": "C3_Pkg_Residency" 446cf979623SAndi Kleen }, 447cf979623SAndi Kleen { 44861ec07f5SHaiyan Song "BriefDescription": "C6 residency percent per package", 449cf979623SAndi Kleen "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100", 450cf979623SAndi Kleen "MetricGroup": "Power", 451cf979623SAndi Kleen "MetricName": "C6_Pkg_Residency" 452cf979623SAndi Kleen }, 453cf979623SAndi Kleen { 45461ec07f5SHaiyan Song "BriefDescription": "C7 residency percent per package", 455cf979623SAndi Kleen "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100", 456cf979623SAndi Kleen "MetricGroup": "Power", 457cf979623SAndi Kleen "MetricName": "C7_Pkg_Residency" 458cf979623SAndi Kleen } 459cf979623SAndi Kleen] 460