xref: /linux/tools/perf/pmu-events/arch/x86/sapphirerapids/spr-metrics.json (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
112265782SZhengjun Xing[
212265782SZhengjun Xing    {
3400dd489SIan Rogers        "BriefDescription": "C1 residency percent per core",
4400dd489SIan Rogers        "MetricExpr": "cstate_core@c1\\-residency@ / TSC",
5400dd489SIan Rogers        "MetricGroup": "Power",
6400dd489SIan Rogers        "MetricName": "C1_Core_Residency",
7400dd489SIan Rogers        "ScaleUnit": "100%"
8400dd489SIan Rogers    },
9400dd489SIan Rogers    {
10400dd489SIan Rogers        "BriefDescription": "C2 residency percent per package",
11400dd489SIan Rogers        "MetricExpr": "cstate_pkg@c2\\-residency@ / TSC",
12400dd489SIan Rogers        "MetricGroup": "Power",
13400dd489SIan Rogers        "MetricName": "C2_Pkg_Residency",
14400dd489SIan Rogers        "ScaleUnit": "100%"
15400dd489SIan Rogers    },
16400dd489SIan Rogers    {
17aa205003SIan Rogers        "BriefDescription": "C6 residency percent per core",
18aa205003SIan Rogers        "MetricExpr": "cstate_core@c6\\-residency@ / TSC",
19aa205003SIan Rogers        "MetricGroup": "Power",
20aa205003SIan Rogers        "MetricName": "C6_Core_Residency",
21aa205003SIan Rogers        "ScaleUnit": "100%"
22aa205003SIan Rogers    },
23aa205003SIan Rogers    {
24400dd489SIan Rogers        "BriefDescription": "C6 residency percent per package",
25400dd489SIan Rogers        "MetricExpr": "cstate_pkg@c6\\-residency@ / TSC",
26400dd489SIan Rogers        "MetricGroup": "Power",
27400dd489SIan Rogers        "MetricName": "C6_Pkg_Residency",
28400dd489SIan Rogers        "ScaleUnit": "100%"
29aa205003SIan Rogers    },
30aa205003SIan Rogers    {
31aa205003SIan Rogers        "BriefDescription": "Uncore frequency per die [GHZ]",
329a5511eaSIan Rogers        "MetricExpr": "tma_info_system_socket_clks / #num_dies / duration_time / 1e9",
33aa205003SIan Rogers        "MetricGroup": "SoC",
34aa205003SIan Rogers        "MetricName": "UNCORE_FREQ"
35aa205003SIan Rogers    },
36aa205003SIan Rogers    {
379a5511eaSIan Rogers        "BriefDescription": "Cycles per instruction retired; indicating how much time each executed instruction took; in units of cycles.",
389a5511eaSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / INST_RETIRED.ANY",
399a5511eaSIan Rogers        "MetricName": "cpi",
409a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
419a5511eaSIan Rogers    },
429a5511eaSIan Rogers    {
439a5511eaSIan Rogers        "BriefDescription": "CPU operating frequency (in GHz)",
449a5511eaSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC * #SYSTEM_TSC_FREQ / 1e9",
459a5511eaSIan Rogers        "MetricName": "cpu_operating_frequency",
469a5511eaSIan Rogers        "ScaleUnit": "1GHz"
479a5511eaSIan Rogers    },
489a5511eaSIan Rogers    {
499a5511eaSIan Rogers        "BriefDescription": "Percentage of time spent in the active CPU power state C0",
50*5ecf682eSIan Rogers        "MetricExpr": "tma_info_system_cpus_utilized",
519a5511eaSIan Rogers        "MetricName": "cpu_utilization",
529a5511eaSIan Rogers        "ScaleUnit": "100%"
539a5511eaSIan Rogers    },
549a5511eaSIan Rogers    {
559a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed page walks (for 2 megabyte page sizes) caused by demand data loads to the total number of completed instructions",
569a5511eaSIan Rogers        "MetricExpr": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M / INST_RETIRED.ANY",
579a5511eaSIan Rogers        "MetricName": "dtlb_2nd_level_2mb_large_page_load_mpi",
589a5511eaSIan Rogers        "PublicDescription": "Ratio of number of completed page walks (for 2 megabyte page sizes) caused by demand data loads to the total number of completed instructions. This implies it missed in the Data Translation Lookaside Buffer (DTLB) and further levels of TLB.",
599a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
609a5511eaSIan Rogers    },
619a5511eaSIan Rogers    {
629a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed page walks (for all page sizes) caused by demand data loads to the total number of completed instructions",
639a5511eaSIan Rogers        "MetricExpr": "DTLB_LOAD_MISSES.WALK_COMPLETED / INST_RETIRED.ANY",
649a5511eaSIan Rogers        "MetricName": "dtlb_2nd_level_load_mpi",
659a5511eaSIan Rogers        "PublicDescription": "Ratio of number of completed page walks (for all page sizes) caused by demand data loads to the total number of completed instructions. This implies it missed in the DTLB and further levels of TLB.",
669a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
679a5511eaSIan Rogers    },
689a5511eaSIan Rogers    {
699a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed page walks (for all page sizes) caused by demand data stores to the total number of completed instructions",
709a5511eaSIan Rogers        "MetricExpr": "DTLB_STORE_MISSES.WALK_COMPLETED / INST_RETIRED.ANY",
719a5511eaSIan Rogers        "MetricName": "dtlb_2nd_level_store_mpi",
729a5511eaSIan Rogers        "PublicDescription": "Ratio of number of completed page walks (for all page sizes) caused by demand data stores to the total number of completed instructions. This implies it missed in the DTLB and further levels of TLB.",
739a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
749a5511eaSIan Rogers    },
759a5511eaSIan Rogers    {
76*5ecf682eSIan Rogers        "BriefDescription": "Bandwidth observed by the integrated I/O traffic controller (IIO) of IO reads that are initiated by end device controllers that are requesting memory from the CPU.",
77*5ecf682eSIan Rogers        "MetricExpr": "UNC_IIO_DATA_REQ_OF_CPU.MEM_READ.ALL_PARTS * 4 / 1e6 / duration_time",
78*5ecf682eSIan Rogers        "MetricName": "iio_bandwidth_read",
79*5ecf682eSIan Rogers        "ScaleUnit": "1MB/s"
80*5ecf682eSIan Rogers    },
81*5ecf682eSIan Rogers    {
82*5ecf682eSIan Rogers        "BriefDescription": "Bandwidth observed by the integrated I/O traffic controller (IIO) of IO writes that are initiated by end device controllers that are writing memory to the CPU.",
83*5ecf682eSIan Rogers        "MetricExpr": "UNC_IIO_DATA_REQ_OF_CPU.MEM_WRITE.ALL_PARTS * 4 / 1e6 / duration_time",
84*5ecf682eSIan Rogers        "MetricName": "iio_bandwidth_write",
85*5ecf682eSIan Rogers        "ScaleUnit": "1MB/s"
86*5ecf682eSIan Rogers    },
87*5ecf682eSIan Rogers    {
889a5511eaSIan Rogers        "BriefDescription": "Bandwidth of IO reads that are initiated by end device controllers that are requesting memory from the CPU.",
899a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IO_PCIRDCUR * 64 / 1e6 / duration_time",
909a5511eaSIan Rogers        "MetricName": "io_bandwidth_read",
919a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
929a5511eaSIan Rogers    },
939a5511eaSIan Rogers    {
94*5ecf682eSIan Rogers        "BriefDescription": "Bandwidth of IO reads that are initiated by end device controllers that are requesting memory from the local CPU socket.",
95*5ecf682eSIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IO_PCIRDCUR_LOCAL * 64 / 1e6 / duration_time",
96*5ecf682eSIan Rogers        "MetricName": "io_bandwidth_read_local",
97*5ecf682eSIan Rogers        "ScaleUnit": "1MB/s"
98*5ecf682eSIan Rogers    },
99*5ecf682eSIan Rogers    {
100*5ecf682eSIan Rogers        "BriefDescription": "Bandwidth of IO reads that are initiated by end device controllers that are requesting memory from a remote CPU socket.",
101*5ecf682eSIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IO_PCIRDCUR_REMOTE * 64 / 1e6 / duration_time",
102*5ecf682eSIan Rogers        "MetricName": "io_bandwidth_read_remote",
103*5ecf682eSIan Rogers        "ScaleUnit": "1MB/s"
104*5ecf682eSIan Rogers    },
105*5ecf682eSIan Rogers    {
1069a5511eaSIan Rogers        "BriefDescription": "Bandwidth of IO writes that are initiated by end device controllers that are writing memory to the CPU.",
1079a5511eaSIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IO_ITOM + UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR) * 64 / 1e6 / duration_time",
1089a5511eaSIan Rogers        "MetricName": "io_bandwidth_write",
1099a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
1109a5511eaSIan Rogers    },
1119a5511eaSIan Rogers    {
112*5ecf682eSIan Rogers        "BriefDescription": "Bandwidth of IO writes that are initiated by end device controllers that are writing memory to the local CPU socket.",
113*5ecf682eSIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IO_ITOM_LOCAL + UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR_LOCAL) * 64 / 1e6 / duration_time",
114*5ecf682eSIan Rogers        "MetricName": "io_bandwidth_write_local",
115*5ecf682eSIan Rogers        "ScaleUnit": "1MB/s"
116*5ecf682eSIan Rogers    },
117*5ecf682eSIan Rogers    {
118*5ecf682eSIan Rogers        "BriefDescription": "Bandwidth of IO writes that are initiated by end device controllers that are writing memory to a remote CPU socket.",
119*5ecf682eSIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IO_ITOM_REMOTE + UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR_REMOTE) * 64 / 1e6 / duration_time",
120*5ecf682eSIan Rogers        "MetricName": "io_bandwidth_write_remote",
121*5ecf682eSIan Rogers        "ScaleUnit": "1MB/s"
122*5ecf682eSIan Rogers    },
123*5ecf682eSIan Rogers    {
12453c83c79SIan Rogers        "BriefDescription": "Percentage of inbound full cacheline writes initiated by end device controllers that miss the L3 cache.",
12553c83c79SIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IO_MISS_ITOM / UNC_CHA_TOR_INSERTS.IO_ITOM",
12653c83c79SIan Rogers        "MetricName": "io_percent_of_inbound_full_writes_that_miss_l3",
12753c83c79SIan Rogers        "ScaleUnit": "100%"
12853c83c79SIan Rogers    },
12953c83c79SIan Rogers    {
13053c83c79SIan Rogers        "BriefDescription": "Percentage of inbound partial cacheline writes initiated by end device controllers that miss the L3 cache.",
13153c83c79SIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IO_MISS_ITOMCACHENEAR + UNC_CHA_TOR_INSERTS.IO_MISS_RFO) / (UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR + UNC_CHA_TOR_INSERTS.IO_RFO)",
13253c83c79SIan Rogers        "MetricName": "io_percent_of_inbound_partial_writes_that_miss_l3",
13353c83c79SIan Rogers        "ScaleUnit": "100%"
13453c83c79SIan Rogers    },
13553c83c79SIan Rogers    {
13653c83c79SIan Rogers        "BriefDescription": "Percentage of inbound reads initiated by end device controllers that miss the L3 cache.",
13753c83c79SIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IO_MISS_PCIRDCUR / UNC_CHA_TOR_INSERTS.IO_PCIRDCUR",
13853c83c79SIan Rogers        "MetricName": "io_percent_of_inbound_reads_that_miss_l3",
13953c83c79SIan Rogers        "ScaleUnit": "100%"
14053c83c79SIan Rogers    },
14153c83c79SIan Rogers    {
1429a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed page walks (for 2 megabyte and 4 megabyte page sizes) caused by a code fetch to the total number of completed instructions",
1439a5511eaSIan Rogers        "MetricExpr": "ITLB_MISSES.WALK_COMPLETED_2M_4M / INST_RETIRED.ANY",
1449a5511eaSIan Rogers        "MetricName": "itlb_2nd_level_large_page_mpi",
1459a5511eaSIan Rogers        "PublicDescription": "Ratio of number of completed page walks (for 2 megabyte and 4 megabyte page sizes) caused by a code fetch to the total number of completed instructions. This implies it missed in the Instruction Translation Lookaside Buffer (ITLB) and further levels of TLB.",
1469a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1479a5511eaSIan Rogers    },
1489a5511eaSIan Rogers    {
1499a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed page walks (for all page sizes) caused by a code fetch to the total number of completed instructions",
1509a5511eaSIan Rogers        "MetricExpr": "ITLB_MISSES.WALK_COMPLETED / INST_RETIRED.ANY",
1519a5511eaSIan Rogers        "MetricName": "itlb_2nd_level_mpi",
1529a5511eaSIan Rogers        "PublicDescription": "Ratio of number of completed page walks (for all page sizes) caused by a code fetch to the total number of completed instructions. This implies it missed in the ITLB (Instruction TLB) and further levels of TLB.",
1539a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1549a5511eaSIan Rogers    },
1559a5511eaSIan Rogers    {
1569a5511eaSIan Rogers        "BriefDescription": "Ratio of number of code read requests missing in L1 instruction cache (includes prefetches) to the total number of completed instructions",
1579a5511eaSIan Rogers        "MetricExpr": "L2_RQSTS.ALL_CODE_RD / INST_RETIRED.ANY",
1589a5511eaSIan Rogers        "MetricName": "l1_i_code_read_misses_with_prefetches_per_instr",
1599a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1609a5511eaSIan Rogers    },
1619a5511eaSIan Rogers    {
1629a5511eaSIan Rogers        "BriefDescription": "Ratio of number of demand load requests hitting in L1 data cache to the total number of completed instructions",
1639a5511eaSIan Rogers        "MetricExpr": "MEM_LOAD_RETIRED.L1_HIT / INST_RETIRED.ANY",
1649a5511eaSIan Rogers        "MetricName": "l1d_demand_data_read_hits_per_instr",
1659a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1669a5511eaSIan Rogers    },
1679a5511eaSIan Rogers    {
1689a5511eaSIan Rogers        "BriefDescription": "Ratio of number of requests missing L1 data cache (includes data+rfo w/ prefetches) to the total number of completed instructions",
1699a5511eaSIan Rogers        "MetricExpr": "L1D.REPLACEMENT / INST_RETIRED.ANY",
1709a5511eaSIan Rogers        "MetricName": "l1d_mpi",
1719a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1729a5511eaSIan Rogers    },
1739a5511eaSIan Rogers    {
1749a5511eaSIan Rogers        "BriefDescription": "Ratio of number of code read request missing L2 cache to the total number of completed instructions",
1759a5511eaSIan Rogers        "MetricExpr": "L2_RQSTS.CODE_RD_MISS / INST_RETIRED.ANY",
1769a5511eaSIan Rogers        "MetricName": "l2_demand_code_mpi",
1779a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1789a5511eaSIan Rogers    },
1799a5511eaSIan Rogers    {
1809a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed demand load requests hitting in L2 cache to the total number of completed instructions",
1819a5511eaSIan Rogers        "MetricExpr": "MEM_LOAD_RETIRED.L2_HIT / INST_RETIRED.ANY",
1829a5511eaSIan Rogers        "MetricName": "l2_demand_data_read_hits_per_instr",
1839a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1849a5511eaSIan Rogers    },
1859a5511eaSIan Rogers    {
1869a5511eaSIan Rogers        "BriefDescription": "Ratio of number of completed data read request missing L2 cache to the total number of completed instructions",
1879a5511eaSIan Rogers        "MetricExpr": "MEM_LOAD_RETIRED.L2_MISS / INST_RETIRED.ANY",
1889a5511eaSIan Rogers        "MetricName": "l2_demand_data_read_mpi",
1899a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1909a5511eaSIan Rogers    },
1919a5511eaSIan Rogers    {
1929a5511eaSIan Rogers        "BriefDescription": "Ratio of number of requests missing L2 cache (includes code+data+rfo w/ prefetches) to the total number of completed instructions",
1939a5511eaSIan Rogers        "MetricExpr": "L2_LINES_IN.ALL / INST_RETIRED.ANY",
1949a5511eaSIan Rogers        "MetricName": "l2_mpi",
1959a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
1969a5511eaSIan Rogers    },
1979a5511eaSIan Rogers    {
1989a5511eaSIan Rogers        "BriefDescription": "Ratio of number of code read requests missing last level core cache (includes demand w/ prefetches) to the total number of completed instructions",
1999a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IA_MISS_CRD / INST_RETIRED.ANY",
2009a5511eaSIan Rogers        "MetricName": "llc_code_read_mpi_demand_plus_prefetch",
2019a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
2029a5511eaSIan Rogers    },
2039a5511eaSIan Rogers    {
2049a5511eaSIan Rogers        "BriefDescription": "Ratio of number of data read requests missing last level core cache (includes demand w/ prefetches) to the total number of completed instructions",
2059a5511eaSIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IA_MISS_LLCPREFDATA + UNC_CHA_TOR_INSERTS.IA_MISS_DRD + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF) / INST_RETIRED.ANY",
2069a5511eaSIan Rogers        "MetricName": "llc_data_read_mpi_demand_plus_prefetch",
2079a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
2089a5511eaSIan Rogers    },
2099a5511eaSIan Rogers    {
2109a5511eaSIan Rogers        "BriefDescription": "Average latency of a last level cache (LLC) demand data read miss (read memory access) in nano seconds",
2119a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD) / (UNC_CHA_CLOCKTICKS / (source_count(UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD) * #num_packages)) * duration_time",
2129a5511eaSIan Rogers        "MetricName": "llc_demand_data_read_miss_latency",
2139a5511eaSIan Rogers        "ScaleUnit": "1ns"
2149a5511eaSIan Rogers    },
2159a5511eaSIan Rogers    {
2169a5511eaSIan Rogers        "BriefDescription": "Average latency of a last level cache (LLC) demand data read miss (read memory access) addressed to local memory in nano seconds",
2179a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_LOCAL / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL) / (UNC_CHA_CLOCKTICKS / (source_count(UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_LOCAL) * #num_packages)) * duration_time",
2189a5511eaSIan Rogers        "MetricName": "llc_demand_data_read_miss_latency_for_local_requests",
2199a5511eaSIan Rogers        "ScaleUnit": "1ns"
2209a5511eaSIan Rogers    },
2219a5511eaSIan Rogers    {
2229a5511eaSIan Rogers        "BriefDescription": "Average latency of a last level cache (LLC) demand data read miss (read memory access) addressed to remote memory in nano seconds",
2239a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE) / (UNC_CHA_CLOCKTICKS / (source_count(UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE) * #num_packages)) * duration_time",
2249a5511eaSIan Rogers        "MetricName": "llc_demand_data_read_miss_latency_for_remote_requests",
2259a5511eaSIan Rogers        "ScaleUnit": "1ns"
2269a5511eaSIan Rogers    },
2279a5511eaSIan Rogers    {
2289a5511eaSIan Rogers        "BriefDescription": "Average latency of a last level cache (LLC) demand data read miss (read memory access) addressed to DRAM in nano seconds",
2299a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_DDR / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_DDR) / (UNC_CHA_CLOCKTICKS / (source_count(UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_DDR) * #num_packages)) * duration_time",
2309a5511eaSIan Rogers        "MetricName": "llc_demand_data_read_miss_to_dram_latency",
2319a5511eaSIan Rogers        "ScaleUnit": "1ns"
2329a5511eaSIan Rogers    },
2339a5511eaSIan Rogers    {
2349a5511eaSIan Rogers        "BriefDescription": "Average latency of a last level cache (LLC) demand data read miss (read memory access) addressed to Intel(R) Optane(TM) Persistent Memory(PMEM) in nano seconds",
2359a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_PMM / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PMM) / (UNC_CHA_CLOCKTICKS / (source_count(UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_PMM) * #num_packages)) * duration_time",
2369a5511eaSIan Rogers        "MetricName": "llc_demand_data_read_miss_to_pmem_latency",
2379a5511eaSIan Rogers        "ScaleUnit": "1ns"
2389a5511eaSIan Rogers    },
2399a5511eaSIan Rogers    {
2409a5511eaSIan Rogers        "BriefDescription": "Bandwidth (MB/sec) of read requests that miss the last level cache (LLC) and go to local memory.",
2419a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_REQUESTS.READS_LOCAL * 64 / 1e6 / duration_time",
2429a5511eaSIan Rogers        "MetricName": "llc_miss_local_memory_bandwidth_read",
2439a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2449a5511eaSIan Rogers    },
2459a5511eaSIan Rogers    {
2469a5511eaSIan Rogers        "BriefDescription": "Bandwidth (MB/sec) of write requests that miss the last level cache (LLC) and go to local memory.",
2479a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_REQUESTS.WRITES_LOCAL * 64 / 1e6 / duration_time",
2489a5511eaSIan Rogers        "MetricName": "llc_miss_local_memory_bandwidth_write",
2499a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2509a5511eaSIan Rogers    },
2519a5511eaSIan Rogers    {
2529a5511eaSIan Rogers        "BriefDescription": "Bandwidth (MB/sec) of read requests that miss the last level cache (LLC) and go to remote memory.",
2539a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_REQUESTS.READS_REMOTE * 64 / 1e6 / duration_time",
2549a5511eaSIan Rogers        "MetricName": "llc_miss_remote_memory_bandwidth_read",
2559a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2569a5511eaSIan Rogers    },
2579a5511eaSIan Rogers    {
2589a5511eaSIan Rogers        "BriefDescription": "Bandwidth (MB/sec) of write requests that miss the last level cache (LLC) and go to remote memory.",
2599a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_REQUESTS.WRITES_REMOTE * 64 / 1e6 / duration_time",
2609a5511eaSIan Rogers        "MetricName": "llc_miss_remote_memory_bandwidth_write",
2619a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2629a5511eaSIan Rogers    },
2639a5511eaSIan Rogers    {
2649a5511eaSIan Rogers        "BriefDescription": "The ratio of number of completed memory load instructions to the total number completed instructions",
2659a5511eaSIan Rogers        "MetricExpr": "MEM_INST_RETIRED.ALL_LOADS / INST_RETIRED.ANY",
2669a5511eaSIan Rogers        "MetricName": "loads_per_instr",
2679a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
2689a5511eaSIan Rogers    },
2699a5511eaSIan Rogers    {
2709a5511eaSIan Rogers        "BriefDescription": "DDR memory read bandwidth (MB/sec)",
2719a5511eaSIan Rogers        "MetricExpr": "UNC_M_CAS_COUNT.RD * 64 / 1e6 / duration_time",
2729a5511eaSIan Rogers        "MetricName": "memory_bandwidth_read",
2739a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2749a5511eaSIan Rogers    },
2759a5511eaSIan Rogers    {
2769a5511eaSIan Rogers        "BriefDescription": "DDR memory bandwidth (MB/sec)",
2779a5511eaSIan Rogers        "MetricExpr": "(UNC_M_CAS_COUNT.RD + UNC_M_CAS_COUNT.WR) * 64 / 1e6 / duration_time",
2789a5511eaSIan Rogers        "MetricName": "memory_bandwidth_total",
2799a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2809a5511eaSIan Rogers    },
2819a5511eaSIan Rogers    {
2829a5511eaSIan Rogers        "BriefDescription": "DDR memory write bandwidth (MB/sec)",
2839a5511eaSIan Rogers        "MetricExpr": "UNC_M_CAS_COUNT.WR * 64 / 1e6 / duration_time",
2849a5511eaSIan Rogers        "MetricName": "memory_bandwidth_write",
2859a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2869a5511eaSIan Rogers    },
2879a5511eaSIan Rogers    {
2889a5511eaSIan Rogers        "BriefDescription": "Memory write bandwidth (MB/sec) caused by directory updates; includes DDR and Intel(R) Optane(TM) Persistent Memory(PMEM).",
2899a5511eaSIan Rogers        "MetricExpr": "(UNC_CHA_DIR_UPDATE.HA + UNC_CHA_DIR_UPDATE.TOR + UNC_M2M_DIRECTORY_UPDATE.ANY) * 64 / 1e6 / duration_time",
2909a5511eaSIan Rogers        "MetricName": "memory_extra_write_bw_due_to_directory_updates",
2919a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
2929a5511eaSIan Rogers    },
2939a5511eaSIan Rogers    {
2949a5511eaSIan Rogers        "BriefDescription": "Memory read that miss the last level cache (LLC) addressed to local DRAM as a percentage of total memory read accesses, does not include LLC prefetches.",
2959a5511eaSIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_LOCAL) / (UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_LOCAL + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_REMOTE)",
2969a5511eaSIan Rogers        "MetricName": "numa_reads_addressed_to_local_dram",
2979a5511eaSIan Rogers        "ScaleUnit": "100%"
2989a5511eaSIan Rogers    },
2999a5511eaSIan Rogers    {
3009a5511eaSIan Rogers        "BriefDescription": "Memory reads that miss the last level cache (LLC) addressed to remote DRAM as a percentage of total memory read accesses, does not include LLC prefetches.",
3019a5511eaSIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_REMOTE) / (UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_LOCAL + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE + UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_REMOTE)",
3029a5511eaSIan Rogers        "MetricName": "numa_reads_addressed_to_remote_dram",
3039a5511eaSIan Rogers        "ScaleUnit": "100%"
3049a5511eaSIan Rogers    },
3059a5511eaSIan Rogers    {
3069a5511eaSIan Rogers        "BriefDescription": "Uops delivered from decoded instruction cache (decoded stream buffer or DSB) as a percent of total uops delivered to Instruction Decode Queue",
3079a5511eaSIan Rogers        "MetricExpr": "IDQ.DSB_UOPS / (IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS + LSD.UOPS)",
3089a5511eaSIan Rogers        "MetricName": "percent_uops_delivered_from_decoded_icache",
3099a5511eaSIan Rogers        "ScaleUnit": "100%"
3109a5511eaSIan Rogers    },
3119a5511eaSIan Rogers    {
3129a5511eaSIan Rogers        "BriefDescription": "Uops delivered from legacy decode pipeline (Micro-instruction Translation Engine or MITE) as a percent of total uops delivered to Instruction Decode Queue",
3139a5511eaSIan Rogers        "MetricExpr": "IDQ.MITE_UOPS / (IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS + LSD.UOPS)",
3149a5511eaSIan Rogers        "MetricName": "percent_uops_delivered_from_legacy_decode_pipeline",
3159a5511eaSIan Rogers        "ScaleUnit": "100%"
3169a5511eaSIan Rogers    },
3179a5511eaSIan Rogers    {
3189a5511eaSIan Rogers        "BriefDescription": "Uops delivered from microcode sequencer (MS) as a percent of total uops delivered to Instruction Decode Queue",
3199a5511eaSIan Rogers        "MetricExpr": "IDQ.MS_UOPS / (IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS + LSD.UOPS)",
3209a5511eaSIan Rogers        "MetricName": "percent_uops_delivered_from_microcode_sequencer",
3219a5511eaSIan Rogers        "ScaleUnit": "100%"
3229a5511eaSIan Rogers    },
3239a5511eaSIan Rogers    {
3249a5511eaSIan Rogers        "BriefDescription": "Intel(R) Optane(TM) Persistent Memory(PMEM) memory read bandwidth (MB/sec)",
3259a5511eaSIan Rogers        "MetricExpr": "UNC_M_PMM_RPQ_INSERTS * 64 / 1e6 / duration_time",
3269a5511eaSIan Rogers        "MetricName": "pmem_memory_bandwidth_read",
3279a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
3289a5511eaSIan Rogers    },
3299a5511eaSIan Rogers    {
3309a5511eaSIan Rogers        "BriefDescription": "Intel(R) Optane(TM) Persistent Memory(PMEM) memory bandwidth (MB/sec)",
3319a5511eaSIan Rogers        "MetricExpr": "(UNC_M_PMM_RPQ_INSERTS + UNC_M_PMM_WPQ_INSERTS) * 64 / 1e6 / duration_time",
3329a5511eaSIan Rogers        "MetricName": "pmem_memory_bandwidth_total",
3339a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
3349a5511eaSIan Rogers    },
3359a5511eaSIan Rogers    {
3369a5511eaSIan Rogers        "BriefDescription": "Intel(R) Optane(TM) Persistent Memory(PMEM) memory write bandwidth (MB/sec)",
3379a5511eaSIan Rogers        "MetricExpr": "UNC_M_PMM_WPQ_INSERTS * 64 / 1e6 / duration_time",
3389a5511eaSIan Rogers        "MetricName": "pmem_memory_bandwidth_write",
3399a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
3409a5511eaSIan Rogers    },
3419a5511eaSIan Rogers    {
342aa205003SIan Rogers        "BriefDescription": "Percentage of cycles spent in System Management Interrupts.",
343aa205003SIan Rogers        "MetricExpr": "((msr@aperf@ - cycles) / msr@aperf@ if msr@smi@ > 0 else 0)",
344aa205003SIan Rogers        "MetricGroup": "smi",
345aa205003SIan Rogers        "MetricName": "smi_cycles",
346aa205003SIan Rogers        "MetricThreshold": "smi_cycles > 0.1",
347aa205003SIan Rogers        "ScaleUnit": "100%"
348aa205003SIan Rogers    },
349aa205003SIan Rogers    {
350aa205003SIan Rogers        "BriefDescription": "Number of SMI interrupts.",
351aa205003SIan Rogers        "MetricExpr": "msr@smi@",
352aa205003SIan Rogers        "MetricGroup": "smi",
353aa205003SIan Rogers        "MetricName": "smi_num",
354aa205003SIan Rogers        "ScaleUnit": "1SMI#"
355aa205003SIan Rogers    },
356aa205003SIan Rogers    {
3579a5511eaSIan Rogers        "BriefDescription": "The ratio of number of completed memory store instructions to the total number completed instructions",
3589a5511eaSIan Rogers        "MetricExpr": "MEM_INST_RETIRED.ALL_STORES / INST_RETIRED.ANY",
3599a5511eaSIan Rogers        "MetricName": "stores_per_instr",
3609a5511eaSIan Rogers        "ScaleUnit": "1per_instr"
3619a5511eaSIan Rogers    },
3629a5511eaSIan Rogers    {
363aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution ports for ALU operations.",
3649a5511eaSIan Rogers        "MetricExpr": "(UOPS_DISPATCHED.PORT_0 + UOPS_DISPATCHED.PORT_1 + UOPS_DISPATCHED.PORT_5_11 + UOPS_DISPATCHED.PORT_6) / (5 * tma_info_core_core_clks)",
365aa205003SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_ports_utilized_3m_group",
366aa205003SIan Rogers        "MetricName": "tma_alu_op_utilization",
36753c83c79SIan Rogers        "MetricThreshold": "tma_alu_op_utilization > 0.4",
368aa205003SIan Rogers        "ScaleUnit": "100%"
369aa205003SIan Rogers    },
370aa205003SIan Rogers    {
37153c83c79SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles where the Advanced Matrix eXtensions (AMX) execution engine was busy with tile (arithmetic) operations",
3729a5511eaSIan Rogers        "MetricExpr": "EXE.AMX_BUSY / tma_info_core_core_clks",
373*5ecf682eSIan Rogers        "MetricGroup": "BvCB;Compute;HPC;Server;TopdownL3;tma_L3_group;tma_core_bound_group",
374aa205003SIan Rogers        "MetricName": "tma_amx_busy",
37553c83c79SIan Rogers        "MetricThreshold": "tma_amx_busy > 0.5 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
376aa205003SIan Rogers        "ScaleUnit": "100%"
377aa205003SIan Rogers    },
378aa205003SIan Rogers    {
379aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of slots the CPU retired uops delivered by the Microcode_Sequencer as a result of Assists",
38053c83c79SIan Rogers        "MetricExpr": "78 * ASSISTS.ANY / tma_info_thread_slots",
381*5ecf682eSIan Rogers        "MetricGroup": "BvIO;TopdownL4;tma_L4_group;tma_microcode_sequencer_group",
382aa205003SIan Rogers        "MetricName": "tma_assists",
383aa205003SIan Rogers        "MetricThreshold": "tma_assists > 0.1 & (tma_microcode_sequencer > 0.05 & tma_heavy_operations > 0.1)",
384aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of slots the CPU retired uops delivered by the Microcode_Sequencer as a result of Assists. Assists are long sequences of uops that are required in certain corner-cases for operations that cannot be handled natively by the execution pipeline. For example; when working with very small floating point values (so-called Denormals); the FP units are not set up to perform these operations natively. Instead; a sequence of instructions to perform the computation on the Denormals is injected into the pipeline. Since these microcode sequences might be dozens of uops long; Assists can be extremely deleterious to performance and they can be avoided in many cases. Sample with: ASSISTS.ANY",
385aa205003SIan Rogers        "ScaleUnit": "100%"
386aa205003SIan Rogers    },
387aa205003SIan Rogers    {
388aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of slots the CPU retired uops as a result of handing SSE to AVX* or AVX* to SSE transition Assists.",
3899a5511eaSIan Rogers        "MetricExpr": "63 * ASSISTS.SSE_AVX_MIX / tma_info_thread_slots",
390aa205003SIan Rogers        "MetricGroup": "HPC;TopdownL5;tma_L5_group;tma_assists_group",
391aa205003SIan Rogers        "MetricName": "tma_avx_assists",
392aa205003SIan Rogers        "MetricThreshold": "tma_avx_assists > 0.1",
393aa205003SIan Rogers        "ScaleUnit": "100%"
394aa205003SIan Rogers    },
395aa205003SIan Rogers    {
396aa205003SIan Rogers        "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",
397969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
3989a5511eaSIan Rogers        "MetricExpr": "topdown\\-be\\-bound / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) + 0 * tma_info_thread_slots",
399*5ecf682eSIan Rogers        "MetricGroup": "BvOB;Default;TmaL1;TopdownL1;tma_L1_group",
400aa205003SIan Rogers        "MetricName": "tma_backend_bound",
401aa205003SIan Rogers        "MetricThreshold": "tma_backend_bound > 0.2",
402969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
403aa205003SIan Rogers        "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. Sample with: TOPDOWN.BACKEND_BOUND_SLOTS",
404aa205003SIan Rogers        "ScaleUnit": "100%"
405aa205003SIan Rogers    },
406aa205003SIan Rogers    {
407aa205003SIan Rogers        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
408969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
409aa205003SIan Rogers        "MetricExpr": "max(1 - (tma_frontend_bound + tma_backend_bound + tma_retiring), 0)",
410969a4661SKan Liang        "MetricGroup": "Default;TmaL1;TopdownL1;tma_L1_group",
411aa205003SIan Rogers        "MetricName": "tma_bad_speculation",
412aa205003SIan Rogers        "MetricThreshold": "tma_bad_speculation > 0.15",
413969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
414aa205003SIan Rogers        "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.",
415aa205003SIan Rogers        "ScaleUnit": "100%"
416aa205003SIan Rogers    },
417aa205003SIan Rogers    {
418aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU has wasted due to Branch Misprediction",
419969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
4209a5511eaSIan Rogers        "MetricExpr": "topdown\\-br\\-mispredict / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) + 0 * tma_info_thread_slots",
421*5ecf682eSIan Rogers        "MetricGroup": "BadSpec;BrMispredicts;BvMP;Default;TmaL2;TopdownL2;tma_L2_group;tma_bad_speculation_group;tma_issueBM",
422aa205003SIan Rogers        "MetricName": "tma_branch_mispredicts",
423aa205003SIan Rogers        "MetricThreshold": "tma_branch_mispredicts > 0.1 & tma_bad_speculation > 0.15",
424969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
4259a5511eaSIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU has wasted due to Branch Misprediction.  These slots are either wasted by uops fetched from an incorrectly speculated program path; or stalls when the out-of-order part of the machine needs to recover its state from a speculative path. Sample with: TOPDOWN.BR_MISPREDICT_SLOTS. Related metrics: tma_info_bad_spec_branch_misprediction_cost, tma_info_bottleneck_mispredictions, tma_mispredicts_resteers",
426aa205003SIan Rogers        "ScaleUnit": "100%"
427aa205003SIan Rogers    },
428aa205003SIan Rogers    {
429aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers",
4309a5511eaSIan Rogers        "MetricExpr": "INT_MISC.CLEAR_RESTEER_CYCLES / tma_info_thread_clks + tma_unknown_branches",
431aa205003SIan Rogers        "MetricGroup": "FetchLat;TopdownL3;tma_L3_group;tma_fetch_latency_group",
432aa205003SIan Rogers        "MetricName": "tma_branch_resteers",
433aa205003SIan Rogers        "MetricThreshold": "tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
434aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers. Branch Resteers estimates the Frontend delay in fetching operations from corrected path; following all sorts of miss-predicted branches. For example; branchy code with lots of miss-predictions might get categorized under Branch Resteers. Note the value of this node may overlap with its siblings. Sample with: BR_MISP_RETIRED.ALL_BRANCHES",
435aa205003SIan Rogers        "ScaleUnit": "100%"
436aa205003SIan Rogers    },
437aa205003SIan Rogers    {
43853c83c79SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due staying in C0.1 power-performance optimized state (Faster wakeup time; Smaller power savings).",
43953c83c79SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.C01 / tma_info_thread_clks",
44053c83c79SIan Rogers        "MetricGroup": "C0Wait;TopdownL4;tma_L4_group;tma_serializing_operation_group",
44153c83c79SIan Rogers        "MetricName": "tma_c01_wait",
44253c83c79SIan Rogers        "MetricThreshold": "tma_c01_wait > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
44353c83c79SIan Rogers        "ScaleUnit": "100%"
44453c83c79SIan Rogers    },
44553c83c79SIan Rogers    {
44653c83c79SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due staying in C0.2 power-performance optimized state (Slower wakeup time; Larger power savings).",
44753c83c79SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.C02 / tma_info_thread_clks",
44853c83c79SIan Rogers        "MetricGroup": "C0Wait;TopdownL4;tma_L4_group;tma_serializing_operation_group",
44953c83c79SIan Rogers        "MetricName": "tma_c02_wait",
45053c83c79SIan Rogers        "MetricThreshold": "tma_c02_wait > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
45153c83c79SIan Rogers        "ScaleUnit": "100%"
45253c83c79SIan Rogers    },
45353c83c79SIan Rogers    {
454aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles the CPU retired uops originated from CISC (complex instruction set computer) instruction",
455aa205003SIan Rogers        "MetricExpr": "max(0, tma_microcode_sequencer - tma_assists)",
456aa205003SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_microcode_sequencer_group",
457aa205003SIan Rogers        "MetricName": "tma_cisc",
458aa205003SIan Rogers        "MetricThreshold": "tma_cisc > 0.1 & (tma_microcode_sequencer > 0.05 & tma_heavy_operations > 0.1)",
459aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles the CPU retired uops originated from CISC (complex instruction set computer) instruction. A CISC instruction has multiple uops that are required to perform the instruction's functionality as in the case of read-modify-write as an example. Since these instructions require multiple uops they may or may not imply sub-optimal use of machine resources. Sample with: FRONTEND_RETIRED.MS_FLOWS",
460aa205003SIan Rogers        "ScaleUnit": "100%"
461aa205003SIan Rogers    },
462aa205003SIan Rogers    {
463aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Machine Clears",
4649a5511eaSIan Rogers        "MetricExpr": "(1 - tma_branch_mispredicts / tma_bad_speculation) * INT_MISC.CLEAR_RESTEER_CYCLES / tma_info_thread_clks",
465aa205003SIan Rogers        "MetricGroup": "BadSpec;MachineClears;TopdownL4;tma_L4_group;tma_branch_resteers_group;tma_issueMC",
466aa205003SIan Rogers        "MetricName": "tma_clears_resteers",
467aa205003SIan Rogers        "MetricThreshold": "tma_clears_resteers > 0.05 & (tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15))",
468aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Machine Clears. Sample with: INT_MISC.CLEAR_RESTEER_CYCLES. Related metrics: tma_l1_bound, tma_machine_clears, tma_microcode_sequencer, tma_ms_switches",
469aa205003SIan Rogers        "ScaleUnit": "100%"
470aa205003SIan Rogers    },
471aa205003SIan Rogers    {
472aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to contested accesses",
473*5ecf682eSIan Rogers        "MetricExpr": "(76.6 * tma_info_system_core_frequency * (MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * (OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM / (OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM + OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD))) + 74.6 * tma_info_system_core_frequency * MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS) * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS / 2) / tma_info_thread_clks",
474*5ecf682eSIan Rogers        "MetricGroup": "BvMS;DataSharing;Offcore;Snoop;TopdownL4;tma_L4_group;tma_issueSyncxn;tma_l3_bound_group",
475aa205003SIan Rogers        "MetricName": "tma_contested_accesses",
476aa205003SIan Rogers        "MetricThreshold": "tma_contested_accesses > 0.05 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
477aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to contested accesses. Contested accesses occur when data written by one Logical Processor are read by another Logical Processor on a different Physical Core. Examples of contested accesses include synchronizations such as locks; true data sharing such as modified locked variables; and false sharing. Sample with: MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD;MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS. Related metrics: tma_data_sharing, tma_false_sharing, tma_machine_clears, tma_remote_cache",
478aa205003SIan Rogers        "ScaleUnit": "100%"
479aa205003SIan Rogers    },
480aa205003SIan Rogers    {
481aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where Core non-memory issues were of a bottleneck",
482969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
483aa205003SIan Rogers        "MetricExpr": "max(0, tma_backend_bound - tma_memory_bound)",
484969a4661SKan Liang        "MetricGroup": "Backend;Compute;Default;TmaL2;TopdownL2;tma_L2_group;tma_backend_bound_group",
485aa205003SIan Rogers        "MetricName": "tma_core_bound",
486aa205003SIan Rogers        "MetricThreshold": "tma_core_bound > 0.1 & tma_backend_bound > 0.2",
487969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
488aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots where Core non-memory issues were of a bottleneck.  Shortage in hardware compute resources; or dependencies in software's instructions are both categorized under Core Bound. Hence it may indicate the machine ran out of an out-of-order resource; certain execution units are overloaded or dependencies in program's data- or instruction-flow are limiting the performance (e.g. FP-chained long-latency arithmetic operations).",
489aa205003SIan Rogers        "ScaleUnit": "100%"
490aa205003SIan Rogers    },
491aa205003SIan Rogers    {
492aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to data-sharing accesses",
493*5ecf682eSIan Rogers        "MetricExpr": "74.6 * tma_info_system_core_frequency * (MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD + MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD * (1 - OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM / (OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM + OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD))) * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS / 2) / tma_info_thread_clks",
494*5ecf682eSIan Rogers        "MetricGroup": "BvMS;Offcore;Snoop;TopdownL4;tma_L4_group;tma_issueSyncxn;tma_l3_bound_group",
495aa205003SIan Rogers        "MetricName": "tma_data_sharing",
496aa205003SIan Rogers        "MetricThreshold": "tma_data_sharing > 0.05 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
497aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to data-sharing accesses. Data shared by multiple Logical Processors (even just read shared) may cause increased access latency due to cache coherency. Excessive data sharing can drastically harm multithreaded performance. Sample with: MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD. Related metrics: tma_contested_accesses, tma_false_sharing, tma_machine_clears, tma_remote_cache",
498aa205003SIan Rogers        "ScaleUnit": "100%"
499aa205003SIan Rogers    },
500aa205003SIan Rogers    {
501aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles where decoder-0 was the only active decoder",
5029a5511eaSIan Rogers        "MetricExpr": "(cpu@INST_DECODED.DECODERS\\,cmask\\=1@ - cpu@INST_DECODED.DECODERS\\,cmask\\=2@) / tma_info_core_core_clks / 2",
503aa205003SIan Rogers        "MetricGroup": "DSBmiss;FetchBW;TopdownL4;tma_L4_group;tma_issueD0;tma_mite_group",
504aa205003SIan Rogers        "MetricName": "tma_decoder0_alone",
50553c83c79SIan Rogers        "MetricThreshold": "tma_decoder0_alone > 0.1 & (tma_mite > 0.1 & tma_fetch_bandwidth > 0.2)",
506aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles where decoder-0 was the only active decoder. Related metrics: tma_few_uops_instructions",
507aa205003SIan Rogers        "ScaleUnit": "100%"
508aa205003SIan Rogers    },
509aa205003SIan Rogers    {
510aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles where the Divider unit was active",
5119a5511eaSIan Rogers        "MetricExpr": "ARITH.DIV_ACTIVE / tma_info_thread_clks",
512*5ecf682eSIan Rogers        "MetricGroup": "BvCB;TopdownL3;tma_L3_group;tma_core_bound_group",
513aa205003SIan Rogers        "MetricName": "tma_divider",
514aa205003SIan Rogers        "MetricThreshold": "tma_divider > 0.2 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
515aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles where the Divider unit was active. Divide and square root instructions are performed by the Divider unit and can take considerably longer latency than integer or Floating Point addition; subtraction; or multiplication. Sample with: ARITH.DIVIDER_ACTIVE",
516aa205003SIan Rogers        "ScaleUnit": "100%"
517aa205003SIan Rogers    },
518aa205003SIan Rogers    {
519aa205003SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled on accesses to external memory (DRAM) by loads",
5209a5511eaSIan Rogers        "MetricExpr": "(MEMORY_ACTIVITY.STALLS_L3_MISS / tma_info_thread_clks - tma_pmm_bound if #has_pmem > 0 else MEMORY_ACTIVITY.STALLS_L3_MISS / tma_info_thread_clks)",
521aa205003SIan Rogers        "MetricGroup": "MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
522aa205003SIan Rogers        "MetricName": "tma_dram_bound",
523aa205003SIan Rogers        "MetricThreshold": "tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
524aa205003SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled on accesses to external memory (DRAM) by loads. Better caching can improve the latency and increase performance. Sample with: MEM_LOAD_RETIRED.L3_MISS_PS",
525aa205003SIan Rogers        "ScaleUnit": "100%"
526aa205003SIan Rogers    },
527aa205003SIan Rogers    {
528aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to DSB (decoded uop cache) fetch pipeline",
5299a5511eaSIan Rogers        "MetricExpr": "(IDQ.DSB_CYCLES_ANY - IDQ.DSB_CYCLES_OK) / tma_info_core_core_clks / 2",
530aa205003SIan Rogers        "MetricGroup": "DSB;FetchBW;TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
531aa205003SIan Rogers        "MetricName": "tma_dsb",
53253c83c79SIan Rogers        "MetricThreshold": "tma_dsb > 0.15 & tma_fetch_bandwidth > 0.2",
533aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to DSB (decoded uop cache) fetch pipeline.  For example; inefficient utilization of the DSB cache structure or bank conflict when reading from it; are categorized here.",
534aa205003SIan Rogers        "ScaleUnit": "100%"
535aa205003SIan Rogers    },
536aa205003SIan Rogers    {
537aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to switches from DSB to MITE pipelines",
5389a5511eaSIan Rogers        "MetricExpr": "DSB2MITE_SWITCHES.PENALTY_CYCLES / tma_info_thread_clks",
539aa205003SIan Rogers        "MetricGroup": "DSBmiss;FetchLat;TopdownL3;tma_L3_group;tma_fetch_latency_group;tma_issueFB",
540aa205003SIan Rogers        "MetricName": "tma_dsb_switches",
541aa205003SIan Rogers        "MetricThreshold": "tma_dsb_switches > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
542*5ecf682eSIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to switches from DSB to MITE pipelines. The DSB (decoded i-cache) is a Uop Cache where the front-end directly delivers Uops (micro operations) avoiding heavy x86 decoding. The DSB pipeline has shorter latency and delivered higher bandwidth than the MITE (legacy instruction decode pipeline). Switching between the two pipelines can cause penalties hence this metric measures the exposed penalty. Sample with: FRONTEND_RETIRED.DSB_MISS_PS. Related metrics: tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp",
543aa205003SIan Rogers        "ScaleUnit": "100%"
544aa205003SIan Rogers    },
545aa205003SIan Rogers    {
546aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles where the Data TLB (DTLB) was missed by load accesses",
5479a5511eaSIan Rogers        "MetricExpr": "min(7 * cpu@DTLB_LOAD_MISSES.STLB_HIT\\,cmask\\=1@ + DTLB_LOAD_MISSES.WALK_ACTIVE, max(CYCLE_ACTIVITY.CYCLES_MEM_ANY - MEMORY_ACTIVITY.CYCLES_L1D_MISS, 0)) / tma_info_thread_clks",
548*5ecf682eSIan Rogers        "MetricGroup": "BvMT;MemoryTLB;TopdownL4;tma_L4_group;tma_issueTLB;tma_l1_bound_group",
549aa205003SIan Rogers        "MetricName": "tma_dtlb_load",
550aa205003SIan Rogers        "MetricThreshold": "tma_dtlb_load > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
55153c83c79SIan Rogers        "PublicDescription": "This metric roughly estimates the fraction of cycles where the Data TLB (DTLB) was missed by load accesses. TLBs (Translation Look-aside Buffers) are processor caches for recently used entries out of the Page Tables that are used to map virtual- to physical-addresses by the operating system. This metric approximates the potential delay of demand loads missing the first-level data TLB (assuming worst case scenario with back to back misses to different pages). This includes hitting in the second-level TLB (STLB) as well as performing a hardware page walk on an STLB miss. Sample with: MEM_INST_RETIRED.STLB_MISS_LOADS_PS. Related metrics: tma_dtlb_store, tma_info_bottleneck_memory_data_tlbs, tma_info_bottleneck_memory_synchronization",
552aa205003SIan Rogers        "ScaleUnit": "100%"
553aa205003SIan Rogers    },
554aa205003SIan Rogers    {
555aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles spent handling first-level data TLB store misses",
5569a5511eaSIan Rogers        "MetricExpr": "(7 * cpu@DTLB_STORE_MISSES.STLB_HIT\\,cmask\\=1@ + DTLB_STORE_MISSES.WALK_ACTIVE) / tma_info_core_core_clks",
557*5ecf682eSIan Rogers        "MetricGroup": "BvMT;MemoryTLB;TopdownL4;tma_L4_group;tma_issueTLB;tma_store_bound_group",
558aa205003SIan Rogers        "MetricName": "tma_dtlb_store",
559aa205003SIan Rogers        "MetricThreshold": "tma_dtlb_store > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
56053c83c79SIan Rogers        "PublicDescription": "This metric roughly estimates the fraction of cycles spent handling first-level data TLB store misses.  As with ordinary data caching; focus on improving data locality and reducing working-set size to reduce DTLB overhead.  Additionally; consider using profile-guided optimization (PGO) to collocate frequently-used data on the same page.  Try using larger page sizes for large amounts of frequently-used data. Sample with: MEM_INST_RETIRED.STLB_MISS_STORES_PS. Related metrics: tma_dtlb_load, tma_info_bottleneck_memory_data_tlbs, tma_info_bottleneck_memory_synchronization",
561aa205003SIan Rogers        "ScaleUnit": "100%"
562aa205003SIan Rogers    },
563aa205003SIan Rogers    {
564aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates how often CPU was handling synchronizations due to False Sharing",
565*5ecf682eSIan Rogers        "MetricExpr": "81 * tma_info_system_core_frequency * OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM / tma_info_thread_clks",
566*5ecf682eSIan Rogers        "MetricGroup": "BvMS;DataSharing;Offcore;Snoop;TopdownL4;tma_L4_group;tma_issueSyncxn;tma_store_bound_group",
567aa205003SIan Rogers        "MetricName": "tma_false_sharing",
568aa205003SIan Rogers        "MetricThreshold": "tma_false_sharing > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
569aa205003SIan Rogers        "PublicDescription": "This metric roughly estimates how often CPU was handling synchronizations due to False Sharing. False Sharing is a multithreading hiccup; where multiple Logical Processors contend on different data-elements mapped into the same cache line. Sample with: OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM. Related metrics: tma_contested_accesses, tma_data_sharing, tma_machine_clears, tma_remote_cache",
570aa205003SIan Rogers        "ScaleUnit": "100%"
571aa205003SIan Rogers    },
572aa205003SIan Rogers    {
573aa205003SIan Rogers        "BriefDescription": "This metric does a *rough estimation* of how often L1D Fill Buffer unavailability limited additional L1D miss memory access requests to proceed",
5749a5511eaSIan Rogers        "MetricExpr": "L1D_PEND_MISS.FB_FULL / tma_info_thread_clks",
575*5ecf682eSIan Rogers        "MetricGroup": "BvMS;MemoryBW;TopdownL4;tma_L4_group;tma_issueBW;tma_issueSL;tma_issueSmSt;tma_l1_bound_group",
576aa205003SIan Rogers        "MetricName": "tma_fb_full",
577aa205003SIan Rogers        "MetricThreshold": "tma_fb_full > 0.3",
57853c83c79SIan Rogers        "PublicDescription": "This metric does a *rough estimation* of how often L1D Fill Buffer unavailability limited additional L1D miss memory access requests to proceed. The higher the metric value; the deeper the memory hierarchy level the misses are satisfied from (metric values >1 are valid). Often it hints on approaching bandwidth limits (to L2 cache; L3 cache or external memory). Related metrics: tma_info_bottleneck_cache_memory_bandwidth, tma_info_system_dram_bw_use, tma_mem_bandwidth, tma_sq_full, tma_store_latency, tma_streaming_stores",
579aa205003SIan Rogers        "ScaleUnit": "100%"
580aa205003SIan Rogers    },
581aa205003SIan Rogers    {
582aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend bandwidth issues",
583969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
584aa205003SIan Rogers        "MetricExpr": "max(0, tma_frontend_bound - tma_fetch_latency)",
585969a4661SKan Liang        "MetricGroup": "Default;FetchBW;Frontend;TmaL2;TopdownL2;tma_L2_group;tma_frontend_bound_group;tma_issueFB",
586aa205003SIan Rogers        "MetricName": "tma_fetch_bandwidth",
58753c83c79SIan Rogers        "MetricThreshold": "tma_fetch_bandwidth > 0.2",
588969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
589*5ecf682eSIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend bandwidth issues.  For example; inefficiencies at the instruction decoders; or restrictions for caching in the DSB (decoded uops cache) are categorized under Fetch Bandwidth. In such cases; the Frontend typically delivers suboptimal amount of uops to the Backend. Sample with: FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_2_PS. Related metrics: tma_dsb_switches, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp",
590aa205003SIan Rogers        "ScaleUnit": "100%"
591aa205003SIan Rogers    },
592aa205003SIan Rogers    {
593aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend latency issues",
594969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
5959a5511eaSIan Rogers        "MetricExpr": "topdown\\-fetch\\-lat / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) - INT_MISC.UOP_DROPPING / tma_info_thread_slots",
596969a4661SKan Liang        "MetricGroup": "Default;Frontend;TmaL2;TopdownL2;tma_L2_group;tma_frontend_bound_group",
597aa205003SIan Rogers        "MetricName": "tma_fetch_latency",
598aa205003SIan Rogers        "MetricThreshold": "tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15",
599969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
600aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend latency issues.  For example; instruction-cache misses; iTLB misses or fetch stalls after a branch misprediction are categorized under Frontend Latency. In such cases; the Frontend eventually delivers no uops for some period. Sample with: FRONTEND_RETIRED.LATENCY_GE_16_PS;FRONTEND_RETIRED.LATENCY_GE_8_PS",
601aa205003SIan Rogers        "ScaleUnit": "100%"
602aa205003SIan Rogers    },
603aa205003SIan Rogers    {
604aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring instructions that that are decoder into two or up to ([SNB+] four; [ADL+] five) uops",
605aa205003SIan Rogers        "MetricExpr": "max(0, tma_heavy_operations - tma_microcode_sequencer)",
606aa205003SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_heavy_operations_group;tma_issueD0",
607aa205003SIan Rogers        "MetricName": "tma_few_uops_instructions",
608aa205003SIan Rogers        "MetricThreshold": "tma_few_uops_instructions > 0.05 & tma_heavy_operations > 0.1",
609aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring instructions that that are decoder into two or up to ([SNB+] four; [ADL+] five) uops. This highly-correlates with the number of uops in such instructions. Related metrics: tma_decoder0_alone",
610aa205003SIan Rogers        "ScaleUnit": "100%"
611aa205003SIan Rogers    },
612aa205003SIan Rogers    {
613aa205003SIan Rogers        "BriefDescription": "This metric represents overall arithmetic floating-point (FP) operations fraction the CPU has executed (retired)",
61453c83c79SIan Rogers        "MetricExpr": "tma_x87_use + tma_fp_scalar + tma_fp_vector",
615aa205003SIan Rogers        "MetricGroup": "HPC;TopdownL3;tma_L3_group;tma_light_operations_group",
616aa205003SIan Rogers        "MetricName": "tma_fp_arith",
617aa205003SIan Rogers        "MetricThreshold": "tma_fp_arith > 0.2 & tma_light_operations > 0.6",
618aa205003SIan Rogers        "PublicDescription": "This metric represents overall arithmetic floating-point (FP) operations fraction the CPU has executed (retired). Note this metric's value may exceed its parent due to use of \"Uops\" CountDomain and FMA double-counting.",
619aa205003SIan Rogers        "ScaleUnit": "100%"
620aa205003SIan Rogers    },
621aa205003SIan Rogers    {
622aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Floating Point (FP) Assists",
6239a5511eaSIan Rogers        "MetricExpr": "30 * ASSISTS.FP / tma_info_thread_slots",
624aa205003SIan Rogers        "MetricGroup": "HPC;TopdownL5;tma_L5_group;tma_assists_group",
625aa205003SIan Rogers        "MetricName": "tma_fp_assists",
626aa205003SIan Rogers        "MetricThreshold": "tma_fp_assists > 0.1",
627aa205003SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Floating Point (FP) Assists. FP Assist may apply when working with very small floating point values (so-called Denormals).",
628aa205003SIan Rogers        "ScaleUnit": "100%"
629aa205003SIan Rogers    },
630aa205003SIan Rogers    {
631aa205003SIan Rogers        "BriefDescription": "This metric approximates arithmetic floating-point (FP) scalar uops fraction the CPU has retired",
63253c83c79SIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.SCALAR + FP_ARITH_INST_RETIRED2.SCALAR) / (tma_retiring * tma_info_thread_slots)",
633aa205003SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL4;tma_L4_group;tma_fp_arith_group;tma_issue2P",
634aa205003SIan Rogers        "MetricName": "tma_fp_scalar",
635aa205003SIan Rogers        "MetricThreshold": "tma_fp_scalar > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6)",
636aa205003SIan Rogers        "PublicDescription": "This metric approximates arithmetic floating-point (FP) scalar uops fraction the CPU has retired. May overcount due to FMA double counting. Related metrics: tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
637aa205003SIan Rogers        "ScaleUnit": "100%"
638aa205003SIan Rogers    },
639aa205003SIan Rogers    {
640aa205003SIan Rogers        "BriefDescription": "This metric approximates arithmetic floating-point (FP) vector uops fraction the CPU has retired aggregated across all vector widths",
641*5ecf682eSIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.VECTOR + FP_ARITH_INST_RETIRED2.VECTOR) / (tma_retiring * tma_info_thread_slots)",
642aa205003SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL4;tma_L4_group;tma_fp_arith_group;tma_issue2P",
643aa205003SIan Rogers        "MetricName": "tma_fp_vector",
644aa205003SIan Rogers        "MetricThreshold": "tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6)",
645aa205003SIan Rogers        "PublicDescription": "This metric approximates arithmetic floating-point (FP) vector uops fraction the CPU has retired aggregated across all vector widths. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
646aa205003SIan Rogers        "ScaleUnit": "100%"
647aa205003SIan Rogers    },
648aa205003SIan Rogers    {
649aa205003SIan Rogers        "BriefDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 128-bit wide vectors",
6509a5511eaSIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128B_PACKED_HALF) / (tma_retiring * tma_info_thread_slots)",
651aa205003SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL5;tma_L5_group;tma_fp_vector_group;tma_issue2P",
652aa205003SIan Rogers        "MetricName": "tma_fp_vector_128b",
653aa205003SIan Rogers        "MetricThreshold": "tma_fp_vector_128b > 0.1 & (tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6))",
654aa205003SIan Rogers        "PublicDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 128-bit wide vectors. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
655aa205003SIan Rogers        "ScaleUnit": "100%"
656aa205003SIan Rogers    },
657aa205003SIan Rogers    {
658aa205003SIan Rogers        "BriefDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 256-bit wide vectors",
6599a5511eaSIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256B_PACKED_HALF) / (tma_retiring * tma_info_thread_slots)",
660aa205003SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL5;tma_L5_group;tma_fp_vector_group;tma_issue2P",
661aa205003SIan Rogers        "MetricName": "tma_fp_vector_256b",
662aa205003SIan Rogers        "MetricThreshold": "tma_fp_vector_256b > 0.1 & (tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6))",
663aa205003SIan Rogers        "PublicDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 256-bit wide vectors. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
664aa205003SIan Rogers        "ScaleUnit": "100%"
665aa205003SIan Rogers    },
666aa205003SIan Rogers    {
667aa205003SIan Rogers        "BriefDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 512-bit wide vectors",
6689a5511eaSIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512B_PACKED_HALF) / (tma_retiring * tma_info_thread_slots)",
669aa205003SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL5;tma_L5_group;tma_fp_vector_group;tma_issue2P",
670aa205003SIan Rogers        "MetricName": "tma_fp_vector_512b",
671aa205003SIan Rogers        "MetricThreshold": "tma_fp_vector_512b > 0.1 & (tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6))",
672aa205003SIan Rogers        "PublicDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 512-bit wide vectors. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
673aa205003SIan Rogers        "ScaleUnit": "100%"
674aa205003SIan Rogers    },
675aa205003SIan Rogers    {
676aa205003SIan Rogers        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
677969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
6789a5511eaSIan Rogers        "MetricExpr": "topdown\\-fe\\-bound / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) - INT_MISC.UOP_DROPPING / tma_info_thread_slots",
679*5ecf682eSIan Rogers        "MetricGroup": "BvFB;BvIO;Default;PGO;TmaL1;TopdownL1;tma_L1_group",
680aa205003SIan Rogers        "MetricName": "tma_frontend_bound",
681aa205003SIan Rogers        "MetricThreshold": "tma_frontend_bound > 0.15",
682969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
683aa205003SIan 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 Pipeline_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. Sample with: FRONTEND_RETIRED.LATENCY_GE_4_PS",
684aa205003SIan Rogers        "ScaleUnit": "100%"
685aa205003SIan Rogers    },
686aa205003SIan Rogers    {
687aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring fused instructions -- where one uop can represent multiple contiguous instructions",
6889a5511eaSIan Rogers        "MetricExpr": "tma_light_operations * INST_RETIRED.MACRO_FUSED / (tma_retiring * tma_info_thread_slots)",
689*5ecf682eSIan Rogers        "MetricGroup": "Branches;BvBO;Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
690aa205003SIan Rogers        "MetricName": "tma_fused_instructions",
691aa205003SIan Rogers        "MetricThreshold": "tma_fused_instructions > 0.1 & tma_light_operations > 0.6",
69253c83c79SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring fused instructions -- where one uop can represent multiple contiguous instructions. CMP+JCC or DEC+JCC are common examples of legacy fusions. {([MTL] Note new MOV+OP and Load+OP fusions appear under Other_Light_Ops in MTL!)}",
693aa205003SIan Rogers        "ScaleUnit": "100%"
694aa205003SIan Rogers    },
695aa205003SIan Rogers    {
696aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring heavy-weight operations -- instructions that require two or more uops or micro-coded sequences",
697969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
6989a5511eaSIan Rogers        "MetricExpr": "topdown\\-heavy\\-ops / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) + 0 * tma_info_thread_slots",
699969a4661SKan Liang        "MetricGroup": "Default;Retire;TmaL2;TopdownL2;tma_L2_group;tma_retiring_group",
700aa205003SIan Rogers        "MetricName": "tma_heavy_operations",
701aa205003SIan Rogers        "MetricThreshold": "tma_heavy_operations > 0.1",
702969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
70353c83c79SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring heavy-weight operations -- instructions that require two or more uops or micro-coded sequences. This highly-correlates with the uop length of these instructions/sequences. ([ICL+] Note this may overcount due to approximation using indirect events; [ADL+] .). Sample with: UOPS_RETIRED.HEAVY",
704aa205003SIan Rogers        "ScaleUnit": "100%"
705aa205003SIan Rogers    },
706aa205003SIan Rogers    {
707aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to instruction cache misses",
7089a5511eaSIan Rogers        "MetricExpr": "ICACHE_DATA.STALLS / tma_info_thread_clks",
709*5ecf682eSIan Rogers        "MetricGroup": "BigFootprint;BvBC;FetchLat;IcMiss;TopdownL3;tma_L3_group;tma_fetch_latency_group",
710aa205003SIan Rogers        "MetricName": "tma_icache_misses",
711aa205003SIan Rogers        "MetricThreshold": "tma_icache_misses > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
712aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to instruction cache misses. Sample with: FRONTEND_RETIRED.L2_MISS_PS;FRONTEND_RETIRED.L1I_MISS_PS",
713aa205003SIan Rogers        "ScaleUnit": "100%"
714aa205003SIan Rogers    },
715aa205003SIan Rogers    {
716aa205003SIan Rogers        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
71753c83c79SIan Rogers        "MetricExpr": "tma_info_bottleneck_mispredictions * tma_info_thread_slots / BR_MISP_RETIRED.ALL_BRANCHES / 100",
718aa205003SIan Rogers        "MetricGroup": "Bad;BrMispredicts;tma_issueBM",
7199a5511eaSIan Rogers        "MetricName": "tma_info_bad_spec_branch_misprediction_cost",
7209a5511eaSIan Rogers        "PublicDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear). Related metrics: tma_branch_mispredicts, tma_info_bottleneck_mispredictions, tma_mispredicts_resteers"
721aa205003SIan Rogers    },
722aa205003SIan Rogers    {
7239a5511eaSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for conditional non-taken branches (lower number means higher occurrence rate).",
7249a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.COND_NTAKEN",
7259a5511eaSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
7269a5511eaSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_cond_ntaken",
7279a5511eaSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_cond_ntaken < 200"
728aa205003SIan Rogers    },
729aa205003SIan Rogers    {
7309a5511eaSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for conditional taken branches (lower number means higher occurrence rate).",
7319a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.COND_TAKEN",
7329a5511eaSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
7339a5511eaSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_cond_taken",
7349a5511eaSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_cond_taken < 200"
735aa205003SIan Rogers    },
736aa205003SIan Rogers    {
7379a5511eaSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for indirect CALL or JMP branches (lower number means higher occurrence rate).",
7389a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.INDIRECT",
7399a5511eaSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
7409a5511eaSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_indirect",
7419a5511eaSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_indirect < 1e3"
742aa205003SIan Rogers    },
743aa205003SIan Rogers    {
7449a5511eaSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for return branches (lower number means higher occurrence rate).",
7459a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.RET",
7469a5511eaSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
7479a5511eaSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_ret",
7489a5511eaSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_ret < 500"
749aa205003SIan Rogers    },
750aa205003SIan Rogers    {
7519a5511eaSIan Rogers        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear) (lower number means higher occurrence rate)",
7529a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
7539a5511eaSIan Rogers        "MetricGroup": "Bad;BadSpec;BrMispredicts",
7549a5511eaSIan Rogers        "MetricName": "tma_info_bad_spec_ipmispredict",
7559a5511eaSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmispredict < 200"
756aa205003SIan Rogers    },
757aa205003SIan Rogers    {
75853c83c79SIan Rogers        "BriefDescription": "Speculative to Retired ratio of all clears (covering mispredicts and nukes)",
75953c83c79SIan Rogers        "MetricExpr": "INT_MISC.CLEARS_COUNT / (BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT)",
76053c83c79SIan Rogers        "MetricGroup": "BrMispredicts",
76153c83c79SIan Rogers        "MetricName": "tma_info_bad_spec_spec_clears_ratio"
76253c83c79SIan Rogers    },
76353c83c79SIan Rogers    {
76453c83c79SIan Rogers        "BriefDescription": "Probability of Core Bound bottleneck hidden by SMT-profiling artifacts",
7659a5511eaSIan Rogers        "MetricExpr": "(100 * (1 - tma_core_bound / tma_ports_utilization if tma_core_bound < tma_ports_utilization else 1) if tma_info_system_smt_2t_utilization > 0.5 else 0)",
766aa205003SIan Rogers        "MetricGroup": "Cor;SMT",
7679a5511eaSIan Rogers        "MetricName": "tma_info_botlnk_l0_core_bound_likely",
7689a5511eaSIan Rogers        "MetricThreshold": "tma_info_botlnk_l0_core_bound_likely > 0.5"
769aa205003SIan Rogers    },
770aa205003SIan Rogers    {
771*5ecf682eSIan Rogers        "BriefDescription": "Total pipeline cost of DSB (uop cache) hits - subset of the Instruction_Fetch_BW Bottleneck",
772*5ecf682eSIan Rogers        "MetricExpr": "100 * (tma_frontend_bound * (tma_fetch_bandwidth / (tma_fetch_bandwidth + tma_fetch_latency)) * (tma_dsb / (tma_dsb + tma_mite)))",
773*5ecf682eSIan Rogers        "MetricGroup": "DSB;FetchBW;tma_issueFB",
774*5ecf682eSIan Rogers        "MetricName": "tma_info_botlnk_l2_dsb_bandwidth",
775*5ecf682eSIan Rogers        "MetricThreshold": "tma_info_botlnk_l2_dsb_bandwidth > 10",
776*5ecf682eSIan Rogers        "PublicDescription": "Total pipeline cost of DSB (uop cache) hits - subset of the Instruction_Fetch_BW Bottleneck. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp"
777*5ecf682eSIan Rogers    },
778*5ecf682eSIan Rogers    {
779aa205003SIan Rogers        "BriefDescription": "Total pipeline cost of DSB (uop cache) misses - subset of the Instruction_Fetch_BW Bottleneck",
780aa205003SIan Rogers        "MetricExpr": "100 * (tma_fetch_latency * tma_dsb_switches / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches) + tma_fetch_bandwidth * tma_mite / (tma_dsb + tma_mite))",
781aa205003SIan Rogers        "MetricGroup": "DSBmiss;Fed;tma_issueFB",
7829a5511eaSIan Rogers        "MetricName": "tma_info_botlnk_l2_dsb_misses",
7839a5511eaSIan Rogers        "MetricThreshold": "tma_info_botlnk_l2_dsb_misses > 10",
784*5ecf682eSIan Rogers        "PublicDescription": "Total pipeline cost of DSB (uop cache) misses - subset of the Instruction_Fetch_BW Bottleneck. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp"
785aa205003SIan Rogers    },
786aa205003SIan Rogers    {
787aa205003SIan Rogers        "BriefDescription": "Total pipeline cost of Instruction Cache misses - subset of the Big_Code Bottleneck",
788aa205003SIan Rogers        "MetricExpr": "100 * (tma_fetch_latency * tma_icache_misses / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches))",
789aa205003SIan Rogers        "MetricGroup": "Fed;FetchLat;IcMiss;tma_issueFL",
7909a5511eaSIan Rogers        "MetricName": "tma_info_botlnk_l2_ic_misses",
7919a5511eaSIan Rogers        "MetricThreshold": "tma_info_botlnk_l2_ic_misses > 5",
792aa205003SIan Rogers        "PublicDescription": "Total pipeline cost of Instruction Cache misses - subset of the Big_Code Bottleneck. Related metrics: "
793aa205003SIan Rogers    },
794aa205003SIan Rogers    {
7959a5511eaSIan Rogers        "BriefDescription": "Total pipeline cost of instruction fetch related bottlenecks by large code footprint programs (i-side cache; TLB and BTB misses)",
7969a5511eaSIan Rogers        "MetricExpr": "100 * tma_fetch_latency * (tma_itlb_misses + tma_icache_misses + tma_unknown_branches) / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches)",
797*5ecf682eSIan Rogers        "MetricGroup": "BigFootprint;BvBC;Fed;Frontend;IcMiss;MemoryTLB",
7989a5511eaSIan Rogers        "MetricName": "tma_info_bottleneck_big_code",
79953c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_big_code > 20"
800aa205003SIan Rogers    },
801aa205003SIan Rogers    {
802*5ecf682eSIan Rogers        "BriefDescription": "Total pipeline cost of instructions used for program control-flow - a subset of the Retiring category in TMA",
803*5ecf682eSIan Rogers        "MetricExpr": "100 * ((BR_INST_RETIRED.ALL_BRANCHES + 2 * BR_INST_RETIRED.NEAR_CALL + INST_RETIRED.NOP) / tma_info_thread_slots)",
804*5ecf682eSIan Rogers        "MetricGroup": "BvBO;Ret",
8059a5511eaSIan Rogers        "MetricName": "tma_info_bottleneck_branching_overhead",
806*5ecf682eSIan Rogers        "MetricThreshold": "tma_info_bottleneck_branching_overhead > 5",
807*5ecf682eSIan Rogers        "PublicDescription": "Total pipeline cost of instructions used for program control-flow - a subset of the Retiring category in TMA. Examples include function calls; loops and alignments. (A lower bound)"
80853c83c79SIan Rogers    },
80953c83c79SIan Rogers    {
81053c83c79SIan Rogers        "BriefDescription": "Total pipeline cost of external Memory- or Cache-Bandwidth related bottlenecks",
811*5ecf682eSIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_dram_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_mem_bandwidth / (tma_mem_bandwidth + tma_mem_latency)) + tma_memory_bound * (tma_l3_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_sq_full / (tma_contested_accesses + tma_data_sharing + tma_l3_hit_latency + tma_sq_full)) + tma_memory_bound * (tma_l1_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_fb_full / (tma_dtlb_load + tma_fb_full + tma_l1_hit_latency + tma_lock_latency + tma_split_loads + tma_store_fwd_blk)))",
812*5ecf682eSIan Rogers        "MetricGroup": "BvMB;Mem;MemoryBW;Offcore;tma_issueBW",
81353c83c79SIan Rogers        "MetricName": "tma_info_bottleneck_cache_memory_bandwidth",
81453c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_cache_memory_bandwidth > 20",
81553c83c79SIan Rogers        "PublicDescription": "Total pipeline cost of external Memory- or Cache-Bandwidth related bottlenecks. Related metrics: tma_fb_full, tma_info_system_dram_bw_use, tma_mem_bandwidth, tma_sq_full"
81653c83c79SIan Rogers    },
81753c83c79SIan Rogers    {
81853c83c79SIan Rogers        "BriefDescription": "Total pipeline cost of external Memory- or Cache-Latency related bottlenecks",
819*5ecf682eSIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_dram_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_mem_latency / (tma_mem_bandwidth + tma_mem_latency)) + tma_memory_bound * (tma_l3_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_l3_hit_latency / (tma_contested_accesses + tma_data_sharing + tma_l3_hit_latency + tma_sq_full)) + tma_memory_bound * tma_l2_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound) + tma_memory_bound * (tma_store_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_store_latency / (tma_dtlb_store + tma_false_sharing + tma_split_stores + tma_store_latency + tma_streaming_stores)) + tma_memory_bound * (tma_l1_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_l1_hit_latency / (tma_dtlb_load + tma_fb_full + tma_l1_hit_latency + tma_lock_latency + tma_split_loads + tma_store_fwd_blk)))",
820*5ecf682eSIan Rogers        "MetricGroup": "BvML;Mem;MemoryLat;Offcore;tma_issueLat",
82153c83c79SIan Rogers        "MetricName": "tma_info_bottleneck_cache_memory_latency",
82253c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_cache_memory_latency > 20",
82353c83c79SIan Rogers        "PublicDescription": "Total pipeline cost of external Memory- or Cache-Latency related bottlenecks. Related metrics: tma_l3_hit_latency, tma_mem_latency"
82453c83c79SIan Rogers    },
82553c83c79SIan Rogers    {
82653c83c79SIan Rogers        "BriefDescription": "Total pipeline cost when the execution is compute-bound - an estimation",
82753c83c79SIan Rogers        "MetricExpr": "100 * (tma_core_bound * tma_divider / (tma_amx_busy + tma_divider + tma_ports_utilization + tma_serializing_operation) + tma_core_bound * tma_amx_busy / (tma_amx_busy + tma_divider + tma_ports_utilization + tma_serializing_operation) + tma_core_bound * (tma_ports_utilization / (tma_amx_busy + tma_divider + tma_ports_utilization + tma_serializing_operation)) * (tma_ports_utilized_3m / (tma_ports_utilized_0 + tma_ports_utilized_1 + tma_ports_utilized_2 + tma_ports_utilized_3m)))",
828*5ecf682eSIan Rogers        "MetricGroup": "BvCB;Cor;tma_issueComp",
82953c83c79SIan Rogers        "MetricName": "tma_info_bottleneck_compute_bound_est",
83053c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_compute_bound_est > 20",
83153c83c79SIan Rogers        "PublicDescription": "Total pipeline cost when the execution is compute-bound - an estimation. Covers Core Bound when High ILP as well as when long-latency execution units are busy. Related metrics: "
832aa205003SIan Rogers    },
833aa205003SIan Rogers    {
834*5ecf682eSIan Rogers        "BriefDescription": "Total pipeline cost of instruction fetch bandwidth related bottlenecks (when the front-end could not sustain operations delivery to the back-end)",
83553c83c79SIan Rogers        "MetricExpr": "100 * (tma_frontend_bound - (1 - 10 * tma_microcode_sequencer * tma_other_mispredicts / tma_branch_mispredicts) * tma_fetch_latency * tma_mispredicts_resteers / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches) - (1 - INST_RETIRED.REP_ITERATION / cpu@UOPS_RETIRED.MS\\,cmask\\=1@) * (tma_fetch_latency * (tma_ms_switches + tma_branch_resteers * (tma_clears_resteers + tma_mispredicts_resteers * tma_other_mispredicts / tma_branch_mispredicts) / (tma_clears_resteers + tma_mispredicts_resteers + tma_unknown_branches)) / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches))) - tma_info_bottleneck_big_code",
836*5ecf682eSIan Rogers        "MetricGroup": "BvFB;Fed;FetchBW;Frontend",
8379a5511eaSIan Rogers        "MetricName": "tma_info_bottleneck_instruction_fetch_bw",
8389a5511eaSIan Rogers        "MetricThreshold": "tma_info_bottleneck_instruction_fetch_bw > 20"
839aa205003SIan Rogers    },
840aa205003SIan Rogers    {
84153c83c79SIan Rogers        "BriefDescription": "Total pipeline cost of irregular execution (e.g",
84253c83c79SIan Rogers        "MetricExpr": "100 * ((1 - INST_RETIRED.REP_ITERATION / cpu@UOPS_RETIRED.MS\\,cmask\\=1@) * (tma_fetch_latency * (tma_ms_switches + tma_branch_resteers * (tma_clears_resteers + tma_mispredicts_resteers * tma_other_mispredicts / tma_branch_mispredicts) / (tma_clears_resteers + tma_mispredicts_resteers + tma_unknown_branches)) / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches)) + 10 * tma_microcode_sequencer * tma_other_mispredicts / tma_branch_mispredicts * tma_branch_mispredicts + tma_machine_clears * tma_other_nukes / tma_other_nukes + tma_core_bound * (tma_serializing_operation + cpu@RS.EMPTY\\,umask\\=1@ / tma_info_thread_clks * tma_ports_utilized_0) / (tma_amx_busy + tma_divider + tma_ports_utilization + tma_serializing_operation) + tma_microcode_sequencer / (tma_few_uops_instructions + tma_microcode_sequencer) * (tma_assists / tma_microcode_sequencer) * tma_heavy_operations)",
843*5ecf682eSIan Rogers        "MetricGroup": "Bad;BvIO;Cor;Ret;tma_issueMS",
84453c83c79SIan Rogers        "MetricName": "tma_info_bottleneck_irregular_overhead",
84553c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_irregular_overhead > 10",
84653c83c79SIan Rogers        "PublicDescription": "Total pipeline cost of irregular execution (e.g. FP-assists in HPC, Wait time with work imbalance multithreaded workloads, overhead in system services or virtualized environments). Related metrics: tma_microcode_sequencer, tma_ms_switches"
847aa205003SIan Rogers    },
848aa205003SIan Rogers    {
849aa205003SIan Rogers        "BriefDescription": "Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs)",
850*5ecf682eSIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_l1_bound / max(tma_memory_bound, tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_dtlb_load / max(tma_l1_bound, tma_dtlb_load + tma_fb_full + tma_l1_hit_latency + tma_lock_latency + tma_split_loads + tma_store_fwd_blk)) + tma_memory_bound * (tma_store_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound)) * (tma_dtlb_store / (tma_dtlb_store + tma_false_sharing + tma_split_stores + tma_store_latency + tma_streaming_stores)))",
851*5ecf682eSIan Rogers        "MetricGroup": "BvMT;Mem;MemoryTLB;Offcore;tma_issueTLB",
8529a5511eaSIan Rogers        "MetricName": "tma_info_bottleneck_memory_data_tlbs",
8539a5511eaSIan Rogers        "MetricThreshold": "tma_info_bottleneck_memory_data_tlbs > 20",
85453c83c79SIan Rogers        "PublicDescription": "Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs). Related metrics: tma_dtlb_load, tma_dtlb_store, tma_info_bottleneck_memory_synchronization"
855aa205003SIan Rogers    },
856aa205003SIan Rogers    {
85753c83c79SIan Rogers        "BriefDescription": "Total pipeline cost of Memory Synchronization related bottlenecks (data transfers and coherency updates across processors)",
85853c83c79SIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_dram_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound) * (tma_mem_latency / (tma_mem_bandwidth + tma_mem_latency)) * tma_remote_cache / (tma_local_mem + tma_remote_cache + tma_remote_mem) + tma_l3_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound) * (tma_contested_accesses + tma_data_sharing) / (tma_contested_accesses + tma_data_sharing + tma_l3_hit_latency + tma_sq_full) + tma_store_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_pmm_bound + tma_store_bound) * tma_false_sharing / (tma_dtlb_store + tma_false_sharing + tma_split_stores + tma_store_latency + tma_streaming_stores - tma_store_latency)) + tma_machine_clears * (1 - tma_other_nukes / tma_other_nukes))",
859*5ecf682eSIan Rogers        "MetricGroup": "BvMS;Mem;Offcore;tma_issueTLB",
86053c83c79SIan Rogers        "MetricName": "tma_info_bottleneck_memory_synchronization",
86153c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_memory_synchronization > 10",
86253c83c79SIan Rogers        "PublicDescription": "Total pipeline cost of Memory Synchronization related bottlenecks (data transfers and coherency updates across processors). Related metrics: tma_dtlb_load, tma_dtlb_store, tma_info_bottleneck_memory_data_tlbs"
863aa205003SIan Rogers    },
864aa205003SIan Rogers    {
865aa205003SIan Rogers        "BriefDescription": "Total pipeline cost of Branch Misprediction related bottlenecks",
86653c83c79SIan Rogers        "MetricExpr": "100 * (1 - 10 * tma_microcode_sequencer * tma_other_mispredicts / tma_branch_mispredicts) * (tma_branch_mispredicts + tma_fetch_latency * tma_mispredicts_resteers / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches))",
867*5ecf682eSIan Rogers        "MetricGroup": "Bad;BadSpec;BrMispredicts;BvMP;tma_issueBM",
8689a5511eaSIan Rogers        "MetricName": "tma_info_bottleneck_mispredictions",
8699a5511eaSIan Rogers        "MetricThreshold": "tma_info_bottleneck_mispredictions > 20",
8709a5511eaSIan Rogers        "PublicDescription": "Total pipeline cost of Branch Misprediction related bottlenecks. Related metrics: tma_branch_mispredicts, tma_info_bad_spec_branch_misprediction_cost, tma_mispredicts_resteers"
8719a5511eaSIan Rogers    },
8729a5511eaSIan Rogers    {
873*5ecf682eSIan Rogers        "BriefDescription": "Total pipeline cost of remaining bottlenecks in the back-end",
874*5ecf682eSIan Rogers        "MetricExpr": "100 - (tma_info_bottleneck_big_code + tma_info_bottleneck_instruction_fetch_bw + tma_info_bottleneck_mispredictions + tma_info_bottleneck_cache_memory_bandwidth + tma_info_bottleneck_cache_memory_latency + tma_info_bottleneck_memory_data_tlbs + tma_info_bottleneck_memory_synchronization + tma_info_bottleneck_compute_bound_est + tma_info_bottleneck_irregular_overhead + tma_info_bottleneck_branching_overhead + tma_info_bottleneck_useful_work)",
875*5ecf682eSIan Rogers        "MetricGroup": "BvOB;Cor;Offcore",
87653c83c79SIan Rogers        "MetricName": "tma_info_bottleneck_other_bottlenecks",
87753c83c79SIan Rogers        "MetricThreshold": "tma_info_bottleneck_other_bottlenecks > 20",
878*5ecf682eSIan Rogers        "PublicDescription": "Total pipeline cost of remaining bottlenecks in the back-end. Examples include data-dependencies (Core Bound when Low ILP) and other unlisted memory-related stalls."
879*5ecf682eSIan Rogers    },
880*5ecf682eSIan Rogers    {
881*5ecf682eSIan Rogers        "BriefDescription": "Total pipeline cost of \"useful operations\" - the portion of Retiring category not covered by Branching_Overhead nor Irregular_Overhead.",
882*5ecf682eSIan Rogers        "MetricExpr": "100 * (tma_retiring - (BR_INST_RETIRED.ALL_BRANCHES + 2 * BR_INST_RETIRED.NEAR_CALL + INST_RETIRED.NOP) / tma_info_thread_slots - tma_microcode_sequencer / (tma_few_uops_instructions + tma_microcode_sequencer) * (tma_assists / tma_microcode_sequencer) * tma_heavy_operations)",
883*5ecf682eSIan Rogers        "MetricGroup": "BvUW;Ret",
884*5ecf682eSIan Rogers        "MetricName": "tma_info_bottleneck_useful_work",
885*5ecf682eSIan Rogers        "MetricThreshold": "tma_info_bottleneck_useful_work > 20"
88653c83c79SIan Rogers    },
88753c83c79SIan Rogers    {
8889a5511eaSIan Rogers        "BriefDescription": "Fraction of branches that are CALL or RET",
8899a5511eaSIan Rogers        "MetricExpr": "(BR_INST_RETIRED.NEAR_CALL + BR_INST_RETIRED.NEAR_RETURN) / BR_INST_RETIRED.ALL_BRANCHES",
8909a5511eaSIan Rogers        "MetricGroup": "Bad;Branches",
8919a5511eaSIan Rogers        "MetricName": "tma_info_branches_callret"
8929a5511eaSIan Rogers    },
8939a5511eaSIan Rogers    {
8949a5511eaSIan Rogers        "BriefDescription": "Fraction of branches that are non-taken conditionals",
8959a5511eaSIan Rogers        "MetricExpr": "BR_INST_RETIRED.COND_NTAKEN / BR_INST_RETIRED.ALL_BRANCHES",
8969a5511eaSIan Rogers        "MetricGroup": "Bad;Branches;CodeGen;PGO",
8979a5511eaSIan Rogers        "MetricName": "tma_info_branches_cond_nt"
8989a5511eaSIan Rogers    },
8999a5511eaSIan Rogers    {
9009a5511eaSIan Rogers        "BriefDescription": "Fraction of branches that are taken conditionals",
9019a5511eaSIan Rogers        "MetricExpr": "BR_INST_RETIRED.COND_TAKEN / BR_INST_RETIRED.ALL_BRANCHES",
9029a5511eaSIan Rogers        "MetricGroup": "Bad;Branches;CodeGen;PGO",
9039a5511eaSIan Rogers        "MetricName": "tma_info_branches_cond_tk"
9049a5511eaSIan Rogers    },
9059a5511eaSIan Rogers    {
9069a5511eaSIan Rogers        "BriefDescription": "Fraction of branches that are unconditional (direct or indirect) jumps",
9079a5511eaSIan Rogers        "MetricExpr": "(BR_INST_RETIRED.NEAR_TAKEN - BR_INST_RETIRED.COND_TAKEN - 2 * BR_INST_RETIRED.NEAR_CALL) / BR_INST_RETIRED.ALL_BRANCHES",
9089a5511eaSIan Rogers        "MetricGroup": "Bad;Branches",
9099a5511eaSIan Rogers        "MetricName": "tma_info_branches_jump"
9109a5511eaSIan Rogers    },
9119a5511eaSIan Rogers    {
9129a5511eaSIan Rogers        "BriefDescription": "Fraction of branches of other types (not individually covered by other metrics in Info.Branches group)",
9139a5511eaSIan Rogers        "MetricExpr": "1 - (tma_info_branches_cond_nt + tma_info_branches_cond_tk + tma_info_branches_callret + tma_info_branches_jump)",
9149a5511eaSIan Rogers        "MetricGroup": "Bad;Branches",
9159a5511eaSIan Rogers        "MetricName": "tma_info_branches_other_branches"
9169a5511eaSIan Rogers    },
9179a5511eaSIan Rogers    {
9189a5511eaSIan Rogers        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
91953c83c79SIan Rogers        "MetricExpr": "(CPU_CLK_UNHALTED.DISTRIBUTED if #SMT_on else tma_info_thread_clks)",
9209a5511eaSIan Rogers        "MetricGroup": "SMT",
9219a5511eaSIan Rogers        "MetricName": "tma_info_core_core_clks"
9229a5511eaSIan Rogers    },
9239a5511eaSIan Rogers    {
9249a5511eaSIan Rogers        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
9259a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / tma_info_core_core_clks",
9269a5511eaSIan Rogers        "MetricGroup": "Ret;SMT;TmaL1;tma_L1_group",
9279a5511eaSIan Rogers        "MetricName": "tma_info_core_coreipc"
9289a5511eaSIan Rogers    },
9299a5511eaSIan Rogers    {
93053c83c79SIan Rogers        "BriefDescription": "uops Executed per Cycle",
93153c83c79SIan Rogers        "MetricExpr": "UOPS_EXECUTED.THREAD / tma_info_thread_clks",
93253c83c79SIan Rogers        "MetricGroup": "Power",
93353c83c79SIan Rogers        "MetricName": "tma_info_core_epc"
93453c83c79SIan Rogers    },
93553c83c79SIan Rogers    {
9369a5511eaSIan Rogers        "BriefDescription": "Floating Point Operations Per Cycle",
937*5ecf682eSIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.SCALAR + FP_ARITH_INST_RETIRED2.SCALAR_HALF + 2 * (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED2.COMPLEX_SCALAR_HALF) + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * (FP_ARITH_INST_RETIRED2.128B_PACKED_HALF + FP_ARITH_INST_RETIRED.8_FLOPS) + 16 * (FP_ARITH_INST_RETIRED2.256B_PACKED_HALF + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE) + 32 * FP_ARITH_INST_RETIRED2.512B_PACKED_HALF) / tma_info_core_core_clks",
9389a5511eaSIan Rogers        "MetricGroup": "Flops;Ret",
9399a5511eaSIan Rogers        "MetricName": "tma_info_core_flopc"
9409a5511eaSIan Rogers    },
9419a5511eaSIan Rogers    {
9429a5511eaSIan Rogers        "BriefDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width)",
9439a5511eaSIan Rogers        "MetricExpr": "(FP_ARITH_DISPATCHED.PORT_0 + FP_ARITH_DISPATCHED.PORT_1 + FP_ARITH_DISPATCHED.PORT_5) / (2 * tma_info_core_core_clks)",
9449a5511eaSIan Rogers        "MetricGroup": "Cor;Flops;HPC",
9459a5511eaSIan Rogers        "MetricName": "tma_info_core_fp_arith_utilization",
9469a5511eaSIan 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)."
9479a5511eaSIan Rogers    },
9489a5511eaSIan Rogers    {
94953c83c79SIan Rogers        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is execution) per thread (logical-processor)",
95053c83c79SIan Rogers        "MetricExpr": "UOPS_EXECUTED.THREAD / cpu@UOPS_EXECUTED.THREAD\\,cmask\\=1@",
9519a5511eaSIan Rogers        "MetricGroup": "Backend;Cor;Pipeline;PortsUtil",
9529a5511eaSIan Rogers        "MetricName": "tma_info_core_ilp"
9539a5511eaSIan Rogers    },
9549a5511eaSIan Rogers    {
9559a5511eaSIan Rogers        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
9569a5511eaSIan Rogers        "MetricExpr": "IDQ.DSB_UOPS / UOPS_ISSUED.ANY",
9579a5511eaSIan Rogers        "MetricGroup": "DSB;Fed;FetchBW;tma_issueFB",
9589a5511eaSIan Rogers        "MetricName": "tma_info_frontend_dsb_coverage",
9599a5511eaSIan Rogers        "MetricThreshold": "tma_info_frontend_dsb_coverage < 0.7 & tma_info_thread_ipc / 6 > 0.35",
960*5ecf682eSIan Rogers        "PublicDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache). Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_inst_mix_iptb, tma_lcp"
9619a5511eaSIan Rogers    },
9629a5511eaSIan Rogers    {
9639a5511eaSIan Rogers        "BriefDescription": "Average number of cycles of a switch from the DSB fetch-unit to MITE fetch unit - see DSB_Switches tree node for details.",
9649a5511eaSIan Rogers        "MetricExpr": "DSB2MITE_SWITCHES.PENALTY_CYCLES / cpu@DSB2MITE_SWITCHES.PENALTY_CYCLES\\,cmask\\=1\\,edge@",
9659a5511eaSIan Rogers        "MetricGroup": "DSBmiss",
9669a5511eaSIan Rogers        "MetricName": "tma_info_frontend_dsb_switch_cost"
9679a5511eaSIan Rogers    },
9689a5511eaSIan Rogers    {
9699a5511eaSIan Rogers        "BriefDescription": "Average number of Uops issued by front-end when it issued something",
9709a5511eaSIan Rogers        "MetricExpr": "UOPS_ISSUED.ANY / cpu@UOPS_ISSUED.ANY\\,cmask\\=1@",
9719a5511eaSIan Rogers        "MetricGroup": "Fed;FetchBW",
9729a5511eaSIan Rogers        "MetricName": "tma_info_frontend_fetch_upc"
9739a5511eaSIan Rogers    },
9749a5511eaSIan Rogers    {
9759a5511eaSIan Rogers        "BriefDescription": "Average Latency for L1 instruction cache misses",
9769a5511eaSIan Rogers        "MetricExpr": "ICACHE_DATA.STALLS / cpu@ICACHE_DATA.STALLS\\,cmask\\=1\\,edge@",
9779a5511eaSIan Rogers        "MetricGroup": "Fed;FetchLat;IcMiss",
9789a5511eaSIan Rogers        "MetricName": "tma_info_frontend_icache_miss_latency"
9799a5511eaSIan Rogers    },
9809a5511eaSIan Rogers    {
9819a5511eaSIan Rogers        "BriefDescription": "Instructions per non-speculative DSB miss (lower number means higher occurrence rate)",
9829a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / FRONTEND_RETIRED.ANY_DSB_MISS",
9839a5511eaSIan Rogers        "MetricGroup": "DSBmiss;Fed",
9849a5511eaSIan Rogers        "MetricName": "tma_info_frontend_ipdsb_miss_ret",
9859a5511eaSIan Rogers        "MetricThreshold": "tma_info_frontend_ipdsb_miss_ret < 50"
9869a5511eaSIan Rogers    },
9879a5511eaSIan Rogers    {
9889a5511eaSIan Rogers        "BriefDescription": "Instructions per speculative Unknown Branch Misprediction (BAClear) (lower number means higher occurrence rate)",
9899a5511eaSIan Rogers        "MetricExpr": "tma_info_inst_mix_instructions / BACLEARS.ANY",
9909a5511eaSIan Rogers        "MetricGroup": "Fed",
9919a5511eaSIan Rogers        "MetricName": "tma_info_frontend_ipunknown_branch"
9929a5511eaSIan Rogers    },
9939a5511eaSIan Rogers    {
9949a5511eaSIan Rogers        "BriefDescription": "L2 cache true code cacheline misses per kilo instruction",
9959a5511eaSIan Rogers        "MetricExpr": "1e3 * FRONTEND_RETIRED.L2_MISS / INST_RETIRED.ANY",
9969a5511eaSIan Rogers        "MetricGroup": "IcMiss",
9979a5511eaSIan Rogers        "MetricName": "tma_info_frontend_l2mpki_code"
9989a5511eaSIan Rogers    },
9999a5511eaSIan Rogers    {
10009a5511eaSIan Rogers        "BriefDescription": "L2 cache speculative code cacheline misses per kilo instruction",
10019a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_RQSTS.CODE_RD_MISS / INST_RETIRED.ANY",
10029a5511eaSIan Rogers        "MetricGroup": "IcMiss",
10039a5511eaSIan Rogers        "MetricName": "tma_info_frontend_l2mpki_code_all"
10049a5511eaSIan Rogers    },
10059a5511eaSIan Rogers    {
100653c83c79SIan Rogers        "BriefDescription": "Average number of cycles the front-end was delayed due to an Unknown Branch detection",
100753c83c79SIan Rogers        "MetricExpr": "INT_MISC.UNKNOWN_BRANCH_CYCLES / cpu@INT_MISC.UNKNOWN_BRANCH_CYCLES\\,cmask\\=1\\,edge@",
100853c83c79SIan Rogers        "MetricGroup": "Fed",
100953c83c79SIan Rogers        "MetricName": "tma_info_frontend_unknown_branch_cost",
101053c83c79SIan Rogers        "PublicDescription": "Average number of cycles the front-end was delayed due to an Unknown Branch detection. See Unknown_Branches node."
101153c83c79SIan Rogers    },
101253c83c79SIan Rogers    {
10139a5511eaSIan Rogers        "BriefDescription": "Branch instructions per taken branch.",
10149a5511eaSIan Rogers        "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN",
10159a5511eaSIan Rogers        "MetricGroup": "Branches;Fed;PGO",
10169a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_bptkbranch"
10179a5511eaSIan Rogers    },
10189a5511eaSIan Rogers    {
10199a5511eaSIan Rogers        "BriefDescription": "Total number of retired Instructions",
10209a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY",
10219a5511eaSIan Rogers        "MetricGroup": "Summary;TmaL1;tma_L1_group",
10229a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_instructions",
10239a5511eaSIan Rogers        "PublicDescription": "Total number of retired Instructions. Sample with: INST_RETIRED.PREC_DIST"
10249a5511eaSIan Rogers    },
10259a5511eaSIan Rogers    {
10269a5511eaSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate)",
1027*5ecf682eSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (FP_ARITH_INST_RETIRED.SCALAR + FP_ARITH_INST_RETIRED2.SCALAR + (FP_ARITH_INST_RETIRED.VECTOR + FP_ARITH_INST_RETIRED2.VECTOR))",
10289a5511eaSIan Rogers        "MetricGroup": "Flops;InsType",
10299a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iparith",
10309a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith < 10",
103153c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting. Approximated prior to BDW."
10329a5511eaSIan Rogers    },
10339a5511eaSIan Rogers    {
10349a5511eaSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate)",
10359a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.128B_PACKED_HALF)",
10369a5511eaSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
10379a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_avx128",
10389a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_avx128 < 10",
103953c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting."
10409a5511eaSIan Rogers    },
10419a5511eaSIan Rogers    {
10429a5511eaSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate)",
10439a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.256B_PACKED_HALF)",
10449a5511eaSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
10459a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_avx256",
10469a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_avx256 < 10",
104753c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting."
10489a5511eaSIan Rogers    },
10499a5511eaSIan Rogers    {
10509a5511eaSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX 512-bit instruction (lower number means higher occurrence rate)",
10519a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE + FP_ARITH_INST_RETIRED2.512B_PACKED_HALF)",
10529a5511eaSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
10539a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_avx512",
10549a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_avx512 < 10",
105553c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX 512-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting."
10569a5511eaSIan Rogers    },
10579a5511eaSIan Rogers    {
10589a5511eaSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate)",
10599a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
10609a5511eaSIan Rogers        "MetricGroup": "Flops;FpScalar;InsType",
10619a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_scalar_dp",
10629a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_scalar_dp < 10",
106353c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting."
106453c83c79SIan Rogers    },
106553c83c79SIan Rogers    {
106653c83c79SIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Half-Precision instruction (lower number means higher occurrence rate)",
106753c83c79SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED2.SCALAR",
106853c83c79SIan Rogers        "MetricGroup": "Flops;FpScalar;InsType;Server",
106953c83c79SIan Rogers        "MetricName": "tma_info_inst_mix_iparith_scalar_hp",
107053c83c79SIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_scalar_hp < 10",
107153c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Half-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting."
10729a5511eaSIan Rogers    },
10739a5511eaSIan Rogers    {
10749a5511eaSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate)",
10759a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
10769a5511eaSIan Rogers        "MetricGroup": "Flops;FpScalar;InsType",
10779a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_scalar_sp",
10789a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_scalar_sp < 10",
107953c83c79SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting."
10809a5511eaSIan Rogers    },
10819a5511eaSIan Rogers    {
10829a5511eaSIan Rogers        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
10839a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
10849a5511eaSIan Rogers        "MetricGroup": "Branches;Fed;InsType",
10859a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_ipbranch",
10869a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipbranch < 8"
10879a5511eaSIan Rogers    },
10889a5511eaSIan Rogers    {
10899a5511eaSIan Rogers        "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)",
10909a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL",
10919a5511eaSIan Rogers        "MetricGroup": "Branches;Fed;PGO",
10929a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_ipcall",
10939a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipcall < 200"
10949a5511eaSIan Rogers    },
10959a5511eaSIan Rogers    {
10969a5511eaSIan Rogers        "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)",
1097*5ecf682eSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (FP_ARITH_INST_RETIRED.SCALAR + FP_ARITH_INST_RETIRED2.SCALAR_HALF + 2 * (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED2.COMPLEX_SCALAR_HALF) + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * (FP_ARITH_INST_RETIRED2.128B_PACKED_HALF + FP_ARITH_INST_RETIRED.8_FLOPS) + 16 * (FP_ARITH_INST_RETIRED2.256B_PACKED_HALF + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE) + 32 * FP_ARITH_INST_RETIRED2.512B_PACKED_HALF)",
10989a5511eaSIan Rogers        "MetricGroup": "Flops;InsType",
10999a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_ipflop",
11009a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipflop < 10"
11019a5511eaSIan Rogers    },
11029a5511eaSIan Rogers    {
11039a5511eaSIan Rogers        "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)",
11049a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_LOADS",
11059a5511eaSIan Rogers        "MetricGroup": "InsType",
11069a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_ipload",
11079a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipload < 3"
11089a5511eaSIan Rogers    },
11099a5511eaSIan Rogers    {
111053c83c79SIan Rogers        "BriefDescription": "Instructions per PAUSE (lower number means higher occurrence rate)",
111153c83c79SIan Rogers        "MetricExpr": "tma_info_inst_mix_instructions / CPU_CLK_UNHALTED.PAUSE_INST",
111253c83c79SIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
111353c83c79SIan Rogers        "MetricName": "tma_info_inst_mix_ippause"
111453c83c79SIan Rogers    },
111553c83c79SIan Rogers    {
11169a5511eaSIan Rogers        "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)",
11179a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_STORES",
11189a5511eaSIan Rogers        "MetricGroup": "InsType",
11199a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_ipstore",
11209a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipstore < 8"
11219a5511eaSIan Rogers    },
11229a5511eaSIan Rogers    {
11239a5511eaSIan Rogers        "BriefDescription": "Instructions per Software prefetch instruction (of any type: NTA/T0/T1/T2/Prefetch) (lower number means higher occurrence rate)",
11249a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / cpu@SW_PREFETCH_ACCESS.T0\\,umask\\=0xF@",
11259a5511eaSIan Rogers        "MetricGroup": "Prefetches",
11269a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_ipswpf",
11279a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipswpf < 100"
11289a5511eaSIan Rogers    },
11299a5511eaSIan Rogers    {
1130*5ecf682eSIan Rogers        "BriefDescription": "Instructions per taken branch",
11319a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN",
11329a5511eaSIan Rogers        "MetricGroup": "Branches;Fed;FetchBW;Frontend;PGO;tma_issueFB",
11339a5511eaSIan Rogers        "MetricName": "tma_info_inst_mix_iptb",
11349a5511eaSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iptb < 13",
1135*5ecf682eSIan Rogers        "PublicDescription": "Instructions per taken branch. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_lcp"
113653c83c79SIan Rogers    },
113753c83c79SIan Rogers    {
11389a5511eaSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L1 data cache [GB / sec]",
113953c83c79SIan Rogers        "MetricExpr": "tma_info_memory_l1d_cache_fill_bw",
11409a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryBW",
114153c83c79SIan Rogers        "MetricName": "tma_info_memory_core_l1d_cache_fill_bw_2t"
11429a5511eaSIan Rogers    },
11439a5511eaSIan Rogers    {
11449a5511eaSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L2 cache [GB / sec]",
114553c83c79SIan Rogers        "MetricExpr": "tma_info_memory_l2_cache_fill_bw",
11469a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryBW",
114753c83c79SIan Rogers        "MetricName": "tma_info_memory_core_l2_cache_fill_bw_2t"
11489a5511eaSIan Rogers    },
11499a5511eaSIan Rogers    {
11509a5511eaSIan Rogers        "BriefDescription": "Rate of non silent evictions from the L2 cache per Kilo instruction",
11519a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_LINES_OUT.NON_SILENT / tma_info_inst_mix_instructions",
11529a5511eaSIan Rogers        "MetricGroup": "L2Evicts;Mem;Server",
11539a5511eaSIan Rogers        "MetricName": "tma_info_memory_core_l2_evictions_nonsilent_pki"
11549a5511eaSIan Rogers    },
11559a5511eaSIan Rogers    {
11569a5511eaSIan Rogers        "BriefDescription": "Rate of silent evictions from the L2 cache per Kilo instruction where the evicted lines are dropped (no writeback to L3 or memory)",
11579a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_LINES_OUT.SILENT / tma_info_inst_mix_instructions",
11589a5511eaSIan Rogers        "MetricGroup": "L2Evicts;Mem;Server",
11599a5511eaSIan Rogers        "MetricName": "tma_info_memory_core_l2_evictions_silent_pki"
11609a5511eaSIan Rogers    },
11619a5511eaSIan Rogers    {
11629a5511eaSIan Rogers        "BriefDescription": "Average per-core data access bandwidth to the L3 cache [GB / sec]",
116353c83c79SIan Rogers        "MetricExpr": "tma_info_memory_l3_cache_access_bw",
11649a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryBW;Offcore",
116553c83c79SIan Rogers        "MetricName": "tma_info_memory_core_l3_cache_access_bw_2t"
11669a5511eaSIan Rogers    },
11679a5511eaSIan Rogers    {
11689a5511eaSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
116953c83c79SIan Rogers        "MetricExpr": "tma_info_memory_l3_cache_fill_bw",
11709a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryBW",
117153c83c79SIan Rogers        "MetricName": "tma_info_memory_core_l3_cache_fill_bw_2t"
117253c83c79SIan Rogers    },
117353c83c79SIan Rogers    {
11749a5511eaSIan Rogers        "BriefDescription": "Fill Buffer (FB) hits per kilo instructions for retired demand loads (L1D misses that merge into ongoing miss-handling entries)",
11759a5511eaSIan Rogers        "MetricExpr": "1e3 * MEM_LOAD_RETIRED.FB_HIT / INST_RETIRED.ANY",
117653c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem",
11779a5511eaSIan Rogers        "MetricName": "tma_info_memory_fb_hpki"
11789a5511eaSIan Rogers    },
11799a5511eaSIan Rogers    {
1180*5ecf682eSIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L1 data cache [GB / sec]",
118153c83c79SIan Rogers        "MetricExpr": "64 * L1D.REPLACEMENT / 1e9 / duration_time",
118253c83c79SIan Rogers        "MetricGroup": "Mem;MemoryBW",
118353c83c79SIan Rogers        "MetricName": "tma_info_memory_l1d_cache_fill_bw"
118453c83c79SIan Rogers    },
118553c83c79SIan Rogers    {
11869a5511eaSIan Rogers        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
11879a5511eaSIan Rogers        "MetricExpr": "1e3 * MEM_LOAD_RETIRED.L1_MISS / INST_RETIRED.ANY",
118853c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem",
11899a5511eaSIan Rogers        "MetricName": "tma_info_memory_l1mpki"
11909a5511eaSIan Rogers    },
11919a5511eaSIan Rogers    {
11929a5511eaSIan Rogers        "BriefDescription": "L1 cache true misses per kilo instruction for all demand loads (including speculative)",
11939a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_RQSTS.ALL_DEMAND_DATA_RD / INST_RETIRED.ANY",
119453c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem",
11959a5511eaSIan Rogers        "MetricName": "tma_info_memory_l1mpki_load"
11969a5511eaSIan Rogers    },
11979a5511eaSIan Rogers    {
1198*5ecf682eSIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L2 cache [GB / sec]",
119953c83c79SIan Rogers        "MetricExpr": "64 * L2_LINES_IN.ALL / 1e9 / duration_time",
120053c83c79SIan Rogers        "MetricGroup": "Mem;MemoryBW",
120153c83c79SIan Rogers        "MetricName": "tma_info_memory_l2_cache_fill_bw"
120253c83c79SIan Rogers    },
120353c83c79SIan Rogers    {
12049a5511eaSIan Rogers        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
12059a5511eaSIan Rogers        "MetricExpr": "1e3 * (L2_RQSTS.REFERENCES - L2_RQSTS.MISS) / INST_RETIRED.ANY",
120653c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem",
12079a5511eaSIan Rogers        "MetricName": "tma_info_memory_l2hpki_all"
12089a5511eaSIan Rogers    },
12099a5511eaSIan Rogers    {
12109a5511eaSIan Rogers        "BriefDescription": "L2 cache hits per kilo instruction for all demand loads  (including speculative)",
12119a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY",
121253c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem",
12139a5511eaSIan Rogers        "MetricName": "tma_info_memory_l2hpki_load"
12149a5511eaSIan Rogers    },
12159a5511eaSIan Rogers    {
12169a5511eaSIan Rogers        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
12179a5511eaSIan Rogers        "MetricExpr": "1e3 * MEM_LOAD_RETIRED.L2_MISS / INST_RETIRED.ANY",
121853c83c79SIan Rogers        "MetricGroup": "Backend;CacheHits;Mem",
12199a5511eaSIan Rogers        "MetricName": "tma_info_memory_l2mpki"
12209a5511eaSIan Rogers    },
12219a5511eaSIan Rogers    {
12229a5511eaSIan Rogers        "BriefDescription": "L2 cache ([RKL+] true) misses per kilo instruction for all request types (including speculative)",
12239a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_RQSTS.MISS / INST_RETIRED.ANY",
122453c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem;Offcore",
12259a5511eaSIan Rogers        "MetricName": "tma_info_memory_l2mpki_all"
12269a5511eaSIan Rogers    },
12279a5511eaSIan Rogers    {
12289a5511eaSIan Rogers        "BriefDescription": "L2 cache ([RKL+] true) misses per kilo instruction for all demand loads  (including speculative)",
12299a5511eaSIan Rogers        "MetricExpr": "1e3 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY",
123053c83c79SIan Rogers        "MetricGroup": "CacheHits;Mem",
12319a5511eaSIan Rogers        "MetricName": "tma_info_memory_l2mpki_load"
12329a5511eaSIan Rogers    },
12339a5511eaSIan Rogers    {
1234*5ecf682eSIan Rogers        "BriefDescription": "Offcore requests (L2 cache miss) per kilo instruction for demand RFOs",
1235*5ecf682eSIan Rogers        "MetricExpr": "1e3 * L2_RQSTS.RFO_MISS / INST_RETIRED.ANY",
1236*5ecf682eSIan Rogers        "MetricGroup": "CacheMisses;Offcore",
1237*5ecf682eSIan Rogers        "MetricName": "tma_info_memory_l2mpki_rfo"
1238*5ecf682eSIan Rogers    },
1239*5ecf682eSIan Rogers    {
1240*5ecf682eSIan Rogers        "BriefDescription": "Average per-thread data access bandwidth to the L3 cache [GB / sec]",
124153c83c79SIan Rogers        "MetricExpr": "64 * OFFCORE_REQUESTS.ALL_REQUESTS / 1e9 / duration_time",
124253c83c79SIan Rogers        "MetricGroup": "Mem;MemoryBW;Offcore",
124353c83c79SIan Rogers        "MetricName": "tma_info_memory_l3_cache_access_bw"
124453c83c79SIan Rogers    },
124553c83c79SIan Rogers    {
1246*5ecf682eSIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L3 cache [GB / sec]",
124753c83c79SIan Rogers        "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1e9 / duration_time",
124853c83c79SIan Rogers        "MetricGroup": "Mem;MemoryBW",
124953c83c79SIan Rogers        "MetricName": "tma_info_memory_l3_cache_fill_bw"
125053c83c79SIan Rogers    },
125153c83c79SIan Rogers    {
12529a5511eaSIan Rogers        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
12539a5511eaSIan Rogers        "MetricExpr": "1e3 * MEM_LOAD_RETIRED.L3_MISS / INST_RETIRED.ANY",
125453c83c79SIan Rogers        "MetricGroup": "Mem",
12559a5511eaSIan Rogers        "MetricName": "tma_info_memory_l3mpki"
12569a5511eaSIan Rogers    },
12579a5511eaSIan Rogers    {
125853c83c79SIan Rogers        "BriefDescription": "Average Parallel L2 cache miss data reads",
125953c83c79SIan Rogers        "MetricExpr": "OFFCORE_REQUESTS_OUTSTANDING.DATA_RD / OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
126053c83c79SIan Rogers        "MetricGroup": "Memory_BW;Offcore",
126153c83c79SIan Rogers        "MetricName": "tma_info_memory_latency_data_l2_mlp"
126253c83c79SIan Rogers    },
126353c83c79SIan Rogers    {
126453c83c79SIan Rogers        "BriefDescription": "Average Latency for L2 cache miss demand Loads",
1265*5ecf682eSIan Rogers        "MetricExpr": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / OFFCORE_REQUESTS.DEMAND_DATA_RD",
126653c83c79SIan Rogers        "MetricGroup": "Memory_Lat;Offcore",
126753c83c79SIan Rogers        "MetricName": "tma_info_memory_latency_load_l2_miss_latency"
126853c83c79SIan Rogers    },
126953c83c79SIan Rogers    {
127053c83c79SIan Rogers        "BriefDescription": "Average Parallel L2 cache miss demand Loads",
127153c83c79SIan Rogers        "MetricExpr": "OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD / cpu@OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD\\,cmask\\=1@",
127253c83c79SIan Rogers        "MetricGroup": "Memory_BW;Offcore",
127353c83c79SIan Rogers        "MetricName": "tma_info_memory_latency_load_l2_mlp"
127453c83c79SIan Rogers    },
127553c83c79SIan Rogers    {
127653c83c79SIan Rogers        "BriefDescription": "Average Latency for L3 cache miss demand Loads",
127753c83c79SIan Rogers        "MetricExpr": "OFFCORE_REQUESTS_OUTSTANDING.L3_MISS_DEMAND_DATA_RD / OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD",
1278af34a16dSIan Rogers        "MetricGroup": "Memory_Lat;Offcore",
1279*5ecf682eSIan Rogers        "MetricName": "tma_info_memory_latency_load_l3_miss_latency"
128053c83c79SIan Rogers    },
128153c83c79SIan Rogers    {
12829a5511eaSIan Rogers        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand load operations (in core cycles)",
12839a5511eaSIan Rogers        "MetricExpr": "L1D_PEND_MISS.PENDING / MEM_LOAD_COMPLETED.L1_MISS_ANY",
12849a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryBound;MemoryLat",
12859a5511eaSIan Rogers        "MetricName": "tma_info_memory_load_miss_real_latency"
1286aa205003SIan Rogers    },
1287aa205003SIan Rogers    {
128853c83c79SIan Rogers        "BriefDescription": "\"Bus lock\" per kilo instruction",
128953c83c79SIan Rogers        "MetricExpr": "1e3 * SQ_MISC.BUS_LOCK / INST_RETIRED.ANY",
129053c83c79SIan Rogers        "MetricGroup": "Mem",
129153c83c79SIan Rogers        "MetricName": "tma_info_memory_mix_bus_lock_pki"
129253c83c79SIan Rogers    },
129353c83c79SIan Rogers    {
129453c83c79SIan Rogers        "BriefDescription": "Off-core accesses per kilo instruction for modified write requests",
129553c83c79SIan Rogers        "MetricExpr": "1e3 * OCR.MODIFIED_WRITE.ANY_RESPONSE / tma_info_inst_mix_instructions",
129653c83c79SIan Rogers        "MetricGroup": "Offcore",
129753c83c79SIan Rogers        "MetricName": "tma_info_memory_mix_offcore_mwrite_any_pki"
129853c83c79SIan Rogers    },
129953c83c79SIan Rogers    {
130053c83c79SIan Rogers        "BriefDescription": "Off-core accesses per kilo instruction for reads-to-core requests (speculative; including in-core HW prefetches)",
130153c83c79SIan Rogers        "MetricExpr": "1e3 * OCR.READS_TO_CORE.ANY_RESPONSE / tma_info_inst_mix_instructions",
130253c83c79SIan Rogers        "MetricGroup": "CacheHits;Offcore",
130353c83c79SIan Rogers        "MetricName": "tma_info_memory_mix_offcore_read_any_pki"
130453c83c79SIan Rogers    },
130553c83c79SIan Rogers    {
130653c83c79SIan Rogers        "BriefDescription": "L3 cache misses per kilo instruction for reads-to-core requests (speculative; including in-core HW prefetches)",
130753c83c79SIan Rogers        "MetricExpr": "1e3 * OCR.READS_TO_CORE.L3_MISS / tma_info_inst_mix_instructions",
130853c83c79SIan Rogers        "MetricGroup": "Offcore",
130953c83c79SIan Rogers        "MetricName": "tma_info_memory_mix_offcore_read_l3m_pki"
131053c83c79SIan Rogers    },
131153c83c79SIan Rogers    {
131253c83c79SIan Rogers        "BriefDescription": "Un-cacheable retired load per kilo instruction",
1313*5ecf682eSIan Rogers        "MetricExpr": "1e3 * MEM_LOAD_MISC_RETIRED.UC / INST_RETIRED.ANY",
131453c83c79SIan Rogers        "MetricGroup": "Mem",
131553c83c79SIan Rogers        "MetricName": "tma_info_memory_mix_uc_load_pki"
131653c83c79SIan Rogers    },
131753c83c79SIan Rogers    {
1318aa205003SIan Rogers        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss",
1319aa205003SIan Rogers        "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES",
1320aa205003SIan Rogers        "MetricGroup": "Mem;MemoryBW;MemoryBound",
13219a5511eaSIan Rogers        "MetricName": "tma_info_memory_mlp",
1322aa205003SIan Rogers        "PublicDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)"
1323aa205003SIan Rogers    },
1324aa205003SIan Rogers    {
132553c83c79SIan Rogers        "BriefDescription": "Average DRAM BW for Reads-to-Core (R2C) covering for memory attached to local- and remote-socket",
132653c83c79SIan Rogers        "MetricExpr": "64 * OCR.READS_TO_CORE.DRAM / 1e9 / duration_time",
132753c83c79SIan Rogers        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
132853c83c79SIan Rogers        "MetricName": "tma_info_memory_soc_r2c_dram_bw",
132953c83c79SIan Rogers        "PublicDescription": "Average DRAM BW for Reads-to-Core (R2C) covering for memory attached to local- and remote-socket. See R2C_Offcore_BW."
133053c83c79SIan Rogers    },
133153c83c79SIan Rogers    {
133253c83c79SIan Rogers        "BriefDescription": "Average L3-cache miss BW for Reads-to-Core (R2C)",
133353c83c79SIan Rogers        "MetricExpr": "64 * OCR.READS_TO_CORE.L3_MISS / 1e9 / duration_time",
133453c83c79SIan Rogers        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
133553c83c79SIan Rogers        "MetricName": "tma_info_memory_soc_r2c_l3m_bw",
133653c83c79SIan Rogers        "PublicDescription": "Average L3-cache miss BW for Reads-to-Core (R2C). This covering going to DRAM or other memory off-chip memory tears. See R2C_Offcore_BW."
133753c83c79SIan Rogers    },
133853c83c79SIan Rogers    {
133953c83c79SIan Rogers        "BriefDescription": "Average Off-core access BW for Reads-to-Core (R2C)",
134053c83c79SIan Rogers        "MetricExpr": "64 * OCR.READS_TO_CORE.ANY_RESPONSE / 1e9 / duration_time",
134153c83c79SIan Rogers        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
134253c83c79SIan Rogers        "MetricName": "tma_info_memory_soc_r2c_offcore_bw",
134353c83c79SIan Rogers        "PublicDescription": "Average Off-core access BW for Reads-to-Core (R2C). R2C account for demand or prefetch load/RFO/code access that fill data into the Core caches."
134453c83c79SIan Rogers    },
134553c83c79SIan Rogers    {
13469a5511eaSIan Rogers        "BriefDescription": "STLB (2nd level TLB) code speculative misses per kilo instruction (misses of any page-size that complete the page walk)",
13479a5511eaSIan Rogers        "MetricExpr": "1e3 * ITLB_MISSES.WALK_COMPLETED / INST_RETIRED.ANY",
13489a5511eaSIan Rogers        "MetricGroup": "Fed;MemoryTLB",
13499a5511eaSIan Rogers        "MetricName": "tma_info_memory_tlb_code_stlb_mpki"
13509a5511eaSIan Rogers    },
13519a5511eaSIan Rogers    {
13529a5511eaSIan Rogers        "BriefDescription": "STLB (2nd level TLB) data load speculative misses per kilo instruction (misses of any page-size that complete the page walk)",
13539a5511eaSIan Rogers        "MetricExpr": "1e3 * DTLB_LOAD_MISSES.WALK_COMPLETED / INST_RETIRED.ANY",
13549a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryTLB",
13559a5511eaSIan Rogers        "MetricName": "tma_info_memory_tlb_load_stlb_mpki"
1356aa205003SIan Rogers    },
1357aa205003SIan Rogers    {
1358aa205003SIan Rogers        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
13599a5511eaSIan Rogers        "MetricExpr": "(ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING) / (4 * tma_info_core_core_clks)",
1360aa205003SIan Rogers        "MetricGroup": "Mem;MemoryTLB",
13619a5511eaSIan Rogers        "MetricName": "tma_info_memory_tlb_page_walks_utilization",
13629a5511eaSIan Rogers        "MetricThreshold": "tma_info_memory_tlb_page_walks_utilization > 0.5"
1363aa205003SIan Rogers    },
1364aa205003SIan Rogers    {
1365aa205003SIan Rogers        "BriefDescription": "STLB (2nd level TLB) data store speculative misses per kilo instruction (misses of any page-size that complete the page walk)",
1366aa205003SIan Rogers        "MetricExpr": "1e3 * DTLB_STORE_MISSES.WALK_COMPLETED / INST_RETIRED.ANY",
1367aa205003SIan Rogers        "MetricGroup": "Mem;MemoryTLB",
13689a5511eaSIan Rogers        "MetricName": "tma_info_memory_tlb_store_stlb_mpki"
13699a5511eaSIan Rogers    },
13709a5511eaSIan Rogers    {
1371*5ecf682eSIan Rogers        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is execution) per core",
137253c83c79SIan Rogers        "MetricExpr": "UOPS_EXECUTED.THREAD / (UOPS_EXECUTED.CORE_CYCLES_GE_1 / 2 if #SMT_on else cpu@UOPS_EXECUTED.THREAD\\,cmask\\=1@)",
13739a5511eaSIan Rogers        "MetricGroup": "Cor;Pipeline;PortsUtil;SMT",
13749a5511eaSIan Rogers        "MetricName": "tma_info_pipeline_execute"
13759a5511eaSIan Rogers    },
13769a5511eaSIan Rogers    {
1377*5ecf682eSIan Rogers        "BriefDescription": "Average number of uops fetched from DSB per cycle",
1378*5ecf682eSIan Rogers        "MetricExpr": "IDQ.DSB_UOPS / IDQ.DSB_CYCLES_ANY",
1379*5ecf682eSIan Rogers        "MetricGroup": "Fed;FetchBW",
1380*5ecf682eSIan Rogers        "MetricName": "tma_info_pipeline_fetch_dsb"
1381*5ecf682eSIan Rogers    },
1382*5ecf682eSIan Rogers    {
1383*5ecf682eSIan Rogers        "BriefDescription": "Average number of uops fetched from MITE per cycle",
1384*5ecf682eSIan Rogers        "MetricExpr": "IDQ.MITE_UOPS / IDQ.MITE_CYCLES_ANY",
1385*5ecf682eSIan Rogers        "MetricGroup": "Fed;FetchBW",
1386*5ecf682eSIan Rogers        "MetricName": "tma_info_pipeline_fetch_mite"
1387*5ecf682eSIan Rogers    },
1388*5ecf682eSIan Rogers    {
13899a5511eaSIan Rogers        "BriefDescription": "Instructions per a microcode Assist invocation",
139053c83c79SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / ASSISTS.ANY",
139153c83c79SIan Rogers        "MetricGroup": "MicroSeq;Pipeline;Ret;Retire",
13929a5511eaSIan Rogers        "MetricName": "tma_info_pipeline_ipassist",
13939a5511eaSIan Rogers        "MetricThreshold": "tma_info_pipeline_ipassist < 100e3",
13949a5511eaSIan Rogers        "PublicDescription": "Instructions per a microcode Assist invocation. See Assists tree node for details (lower number means higher occurrence rate)"
13959a5511eaSIan Rogers    },
13969a5511eaSIan Rogers    {
13979a5511eaSIan Rogers        "BriefDescription": "Average number of Uops retired in cycles where at least one uop has retired.",
13989a5511eaSIan Rogers        "MetricExpr": "tma_retiring * tma_info_thread_slots / cpu@UOPS_RETIRED.SLOTS\\,cmask\\=1@",
13999a5511eaSIan Rogers        "MetricGroup": "Pipeline;Ret",
14009a5511eaSIan Rogers        "MetricName": "tma_info_pipeline_retire"
1401aa205003SIan Rogers    },
1402aa205003SIan Rogers    {
1403aa205003SIan Rogers        "BriefDescription": "Estimated fraction of retirement-cycles dealing with repeat instructions",
1404aa205003SIan Rogers        "MetricExpr": "INST_RETIRED.REP_ITERATION / cpu@UOPS_RETIRED.SLOTS\\,cmask\\=1@",
140553c83c79SIan Rogers        "MetricGroup": "MicroSeq;Pipeline;Ret",
14069a5511eaSIan Rogers        "MetricName": "tma_info_pipeline_strings_cycles",
14079a5511eaSIan Rogers        "MetricThreshold": "tma_info_pipeline_strings_cycles > 0.1"
14089a5511eaSIan Rogers    },
14099a5511eaSIan Rogers    {
141053c83c79SIan Rogers        "BriefDescription": "Fraction of cycles the processor is waiting yet unhalted; covering legacy PAUSE instruction, as well as C0.1 / C0.2 power-performance optimized states",
141153c83c79SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.C0_WAIT / tma_info_thread_clks",
141253c83c79SIan Rogers        "MetricGroup": "C0Wait",
141353c83c79SIan Rogers        "MetricName": "tma_info_system_c0_wait",
141453c83c79SIan Rogers        "MetricThreshold": "tma_info_system_c0_wait > 0.05"
14159a5511eaSIan Rogers    },
14169a5511eaSIan Rogers    {
141753c83c79SIan Rogers        "BriefDescription": "Measured Average Core Frequency for unhalted processors [GHz]",
141853c83c79SIan Rogers        "MetricExpr": "tma_info_system_turbo_utilization * TSC / 1e9 / duration_time",
141953c83c79SIan Rogers        "MetricGroup": "Power;Summary",
142053c83c79SIan Rogers        "MetricName": "tma_info_system_core_frequency"
142153c83c79SIan Rogers    },
142253c83c79SIan Rogers    {
142353c83c79SIan Rogers        "BriefDescription": "Average CPU Utilization (percentage)",
1424*5ecf682eSIan Rogers        "MetricExpr": "tma_info_system_cpus_utilized / #num_cpus_online",
14259a5511eaSIan Rogers        "MetricGroup": "HPC;Summary",
14269a5511eaSIan Rogers        "MetricName": "tma_info_system_cpu_utilization"
14279a5511eaSIan Rogers    },
14289a5511eaSIan Rogers    {
142953c83c79SIan Rogers        "BriefDescription": "Average number of utilized CPUs",
1430*5ecf682eSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / TSC",
143153c83c79SIan Rogers        "MetricGroup": "Summary",
143253c83c79SIan Rogers        "MetricName": "tma_info_system_cpus_utilized"
143353c83c79SIan Rogers    },
143453c83c79SIan Rogers    {
14359a5511eaSIan Rogers        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
14369a5511eaSIan Rogers        "MetricExpr": "64 * (UNC_M_CAS_COUNT.RD + UNC_M_CAS_COUNT.WR) / 1e9 / duration_time",
143753c83c79SIan Rogers        "MetricGroup": "HPC;MemOffcore;MemoryBW;SoC;tma_issueBW",
14389a5511eaSIan Rogers        "MetricName": "tma_info_system_dram_bw_use",
143953c83c79SIan Rogers        "PublicDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]. Related metrics: tma_fb_full, tma_info_bottleneck_cache_memory_bandwidth, tma_mem_bandwidth, tma_sq_full"
14409a5511eaSIan Rogers    },
14419a5511eaSIan Rogers    {
14429a5511eaSIan Rogers        "BriefDescription": "Giga Floating Point Operations Per Second",
1443*5ecf682eSIan Rogers        "MetricExpr": "(FP_ARITH_INST_RETIRED.SCALAR + FP_ARITH_INST_RETIRED2.SCALAR_HALF + 2 * (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED2.COMPLEX_SCALAR_HALF) + 4 * FP_ARITH_INST_RETIRED.4_FLOPS + 8 * (FP_ARITH_INST_RETIRED2.128B_PACKED_HALF + FP_ARITH_INST_RETIRED.8_FLOPS) + 16 * (FP_ARITH_INST_RETIRED2.256B_PACKED_HALF + FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE) + 32 * FP_ARITH_INST_RETIRED2.512B_PACKED_HALF) / 1e9 / duration_time",
14449a5511eaSIan Rogers        "MetricGroup": "Cor;Flops;HPC",
14459a5511eaSIan Rogers        "MetricName": "tma_info_system_gflops",
144653c83c79SIan Rogers        "PublicDescription": "Giga Floating Point Operations Per Second. Aggregate across all supported options of: FP precisions, scalar and vector instructions, vector-width"
144753c83c79SIan Rogers    },
144853c83c79SIan Rogers    {
144953c83c79SIan Rogers        "BriefDescription": "Average IO (network or disk) Bandwidth Use for Reads [GB / sec]",
145053c83c79SIan Rogers        "MetricExpr": "UNC_CHA_TOR_INSERTS.IO_PCIRDCUR * 64 / 1e9 / duration_time",
145153c83c79SIan Rogers        "MetricGroup": "IoBW;MemOffcore;Server;SoC",
145253c83c79SIan Rogers        "MetricName": "tma_info_system_io_read_bw",
145353c83c79SIan Rogers        "PublicDescription": "Average IO (network or disk) Bandwidth Use for Reads [GB / sec]. Bandwidth of IO reads that are initiated by end device controllers that are requesting memory from the CPU"
14549a5511eaSIan Rogers    },
14559a5511eaSIan Rogers    {
14569a5511eaSIan Rogers        "BriefDescription": "Average IO (network or disk) Bandwidth Use for Writes [GB / sec]",
145753c83c79SIan Rogers        "MetricExpr": "(UNC_CHA_TOR_INSERTS.IO_ITOM + UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR) * 64 / 1e9 / duration_time",
145853c83c79SIan Rogers        "MetricGroup": "IoBW;MemOffcore;Server;SoC",
145953c83c79SIan Rogers        "MetricName": "tma_info_system_io_write_bw",
146053c83c79SIan Rogers        "PublicDescription": "Average IO (network or disk) Bandwidth Use for Writes [GB / sec]. Bandwidth of IO writes that are initiated by end device controllers that are writing memory to the CPU"
14619a5511eaSIan Rogers    },
14629a5511eaSIan Rogers    {
14639a5511eaSIan 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]",
14649a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH:u",
14659a5511eaSIan Rogers        "MetricGroup": "Branches;OS",
14669a5511eaSIan Rogers        "MetricName": "tma_info_system_ipfarbranch",
14679a5511eaSIan Rogers        "MetricThreshold": "tma_info_system_ipfarbranch < 1e6"
14689a5511eaSIan Rogers    },
14699a5511eaSIan Rogers    {
14709a5511eaSIan Rogers        "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode",
14719a5511eaSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / INST_RETIRED.ANY_P:k",
14729a5511eaSIan Rogers        "MetricGroup": "OS",
14739a5511eaSIan Rogers        "MetricName": "tma_info_system_kernel_cpi"
14749a5511eaSIan Rogers    },
14759a5511eaSIan Rogers    {
14769a5511eaSIan Rogers        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
14779a5511eaSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / CPU_CLK_UNHALTED.THREAD",
14789a5511eaSIan Rogers        "MetricGroup": "OS",
14799a5511eaSIan Rogers        "MetricName": "tma_info_system_kernel_utilization",
14809a5511eaSIan Rogers        "MetricThreshold": "tma_info_system_kernel_utilization > 0.05"
14819a5511eaSIan Rogers    },
14829a5511eaSIan Rogers    {
14839a5511eaSIan Rogers        "BriefDescription": "Average latency of data read request to external DRAM memory [in nanoseconds]",
14849a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_DDR / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_DDR) / uncore_cha_0@event\\=0x1@",
148553c83c79SIan Rogers        "MetricGroup": "MemOffcore;MemoryLat;Server;SoC",
14869a5511eaSIan Rogers        "MetricName": "tma_info_system_mem_dram_read_latency",
14879a5511eaSIan Rogers        "PublicDescription": "Average latency of data read request to external DRAM memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches"
14889a5511eaSIan Rogers    },
14899a5511eaSIan Rogers    {
14909a5511eaSIan Rogers        "BriefDescription": "Average number of parallel data read requests to external memory",
14919a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD@thresh\\=1@",
14929a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryBW;SoC",
14939a5511eaSIan Rogers        "MetricName": "tma_info_system_mem_parallel_reads",
14949a5511eaSIan Rogers        "PublicDescription": "Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches"
14959a5511eaSIan Rogers    },
14969a5511eaSIan Rogers    {
14979a5511eaSIan Rogers        "BriefDescription": "Average latency of data read request to external 3D X-Point memory [in nanoseconds]",
14989a5511eaSIan Rogers        "MetricExpr": "(1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_PMM / UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PMM) / uncore_cha_0@event\\=0x1@ if #has_pmem > 0 else 0)",
149953c83c79SIan Rogers        "MetricGroup": "MemOffcore;MemoryLat;Server;SoC",
15009a5511eaSIan Rogers        "MetricName": "tma_info_system_mem_pmm_read_latency",
15019a5511eaSIan Rogers        "PublicDescription": "Average latency of data read request to external 3D X-Point memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches"
15029a5511eaSIan Rogers    },
15039a5511eaSIan Rogers    {
15049a5511eaSIan Rogers        "BriefDescription": "Average latency of data read request to external memory (in nanoseconds)",
1505becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS",
15069a5511eaSIan Rogers        "MetricExpr": "1e9 * (UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD / UNC_CHA_TOR_INSERTS.IA_MISS_DRD) / (tma_info_system_socket_clks / duration_time)",
15079a5511eaSIan Rogers        "MetricGroup": "Mem;MemoryLat;SoC",
15089a5511eaSIan Rogers        "MetricName": "tma_info_system_mem_read_latency",
15099a5511eaSIan Rogers        "PublicDescription": "Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches. ([RKL+]memory-controller only)"
15109a5511eaSIan Rogers    },
15119a5511eaSIan Rogers    {
15129a5511eaSIan Rogers        "BriefDescription": "Average 3DXP Memory Bandwidth Use for reads [GB / sec]",
15139a5511eaSIan Rogers        "MetricExpr": "(64 * UNC_M_PMM_RPQ_INSERTS / 1e9 / duration_time if #has_pmem > 0 else 0)",
151453c83c79SIan Rogers        "MetricGroup": "MemOffcore;MemoryBW;Server;SoC",
15159a5511eaSIan Rogers        "MetricName": "tma_info_system_pmm_read_bw"
15169a5511eaSIan Rogers    },
15179a5511eaSIan Rogers    {
15189a5511eaSIan Rogers        "BriefDescription": "Average 3DXP Memory Bandwidth Use for Writes [GB / sec]",
15199a5511eaSIan Rogers        "MetricExpr": "(64 * UNC_M_PMM_WPQ_INSERTS / 1e9 / duration_time if #has_pmem > 0 else 0)",
152053c83c79SIan Rogers        "MetricGroup": "MemOffcore;MemoryBW;Server;SoC",
15219a5511eaSIan Rogers        "MetricName": "tma_info_system_pmm_write_bw"
15229a5511eaSIan Rogers    },
15239a5511eaSIan Rogers    {
15249a5511eaSIan Rogers        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
15259a5511eaSIan Rogers        "MetricExpr": "(1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_DISTRIBUTED if #SMT_on else 0)",
15269a5511eaSIan Rogers        "MetricGroup": "SMT",
15279a5511eaSIan Rogers        "MetricName": "tma_info_system_smt_2t_utilization"
15289a5511eaSIan Rogers    },
15299a5511eaSIan Rogers    {
15309a5511eaSIan Rogers        "BriefDescription": "Socket actual clocks when any core is active on that socket",
15319a5511eaSIan Rogers        "MetricExpr": "uncore_cha_0@event\\=0x1@",
15329a5511eaSIan Rogers        "MetricGroup": "SoC",
15339a5511eaSIan Rogers        "MetricName": "tma_info_system_socket_clks"
1534aa205003SIan Rogers    },
1535aa205003SIan Rogers    {
1536aa205003SIan Rogers        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
15379a5511eaSIan Rogers        "MetricExpr": "tma_info_thread_clks / CPU_CLK_UNHALTED.REF_TSC",
1538aa205003SIan Rogers        "MetricGroup": "Power",
15399a5511eaSIan Rogers        "MetricName": "tma_info_system_turbo_utilization"
1540aa205003SIan Rogers    },
1541aa205003SIan Rogers    {
154253c83c79SIan Rogers        "BriefDescription": "Measured Average Uncore Frequency for the SoC [GHz]",
154353c83c79SIan Rogers        "MetricExpr": "tma_info_system_socket_clks / 1e9 / duration_time",
154453c83c79SIan Rogers        "MetricGroup": "SoC",
154553c83c79SIan Rogers        "MetricName": "tma_info_system_uncore_frequency"
154653c83c79SIan Rogers    },
154753c83c79SIan Rogers    {
1548aa205003SIan Rogers        "BriefDescription": "Cross-socket Ultra Path Interconnect (UPI) data transmit bandwidth for data only [MB / sec]",
1549aa205003SIan Rogers        "MetricExpr": "UNC_UPI_TxL_FLITS.ALL_DATA * 64 / 9 / 1e6",
1550aa205003SIan Rogers        "MetricGroup": "Server;SoC",
15519a5511eaSIan Rogers        "MetricName": "tma_info_system_upi_data_transmit_bw"
15529a5511eaSIan Rogers    },
15539a5511eaSIan Rogers    {
15549a5511eaSIan Rogers        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
15559a5511eaSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
15569a5511eaSIan Rogers        "MetricGroup": "Pipeline",
15579a5511eaSIan Rogers        "MetricName": "tma_info_thread_clks"
15589a5511eaSIan Rogers    },
15599a5511eaSIan Rogers    {
15609a5511eaSIan Rogers        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
15619a5511eaSIan Rogers        "MetricExpr": "1 / tma_info_thread_ipc",
15629a5511eaSIan Rogers        "MetricGroup": "Mem;Pipeline",
15639a5511eaSIan Rogers        "MetricName": "tma_info_thread_cpi"
15649a5511eaSIan Rogers    },
15659a5511eaSIan Rogers    {
15669a5511eaSIan Rogers        "BriefDescription": "The ratio of Executed- by Issued-Uops",
15679a5511eaSIan Rogers        "MetricExpr": "UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY",
15689a5511eaSIan Rogers        "MetricGroup": "Cor;Pipeline",
15699a5511eaSIan Rogers        "MetricName": "tma_info_thread_execute_per_issue",
15709a5511eaSIan 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."
15719a5511eaSIan Rogers    },
15729a5511eaSIan Rogers    {
15739a5511eaSIan Rogers        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
15749a5511eaSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / tma_info_thread_clks",
15759a5511eaSIan Rogers        "MetricGroup": "Ret;Summary",
15769a5511eaSIan Rogers        "MetricName": "tma_info_thread_ipc"
15779a5511eaSIan Rogers    },
15789a5511eaSIan Rogers    {
15799a5511eaSIan Rogers        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
15809a5511eaSIan Rogers        "MetricExpr": "TOPDOWN.SLOTS",
15819a5511eaSIan Rogers        "MetricGroup": "TmaL1;tma_L1_group",
15829a5511eaSIan Rogers        "MetricName": "tma_info_thread_slots"
15839a5511eaSIan Rogers    },
15849a5511eaSIan Rogers    {
15859a5511eaSIan Rogers        "BriefDescription": "Fraction of Physical Core issue-slots utilized by this Logical Processor",
15869a5511eaSIan Rogers        "MetricExpr": "(tma_info_thread_slots / (TOPDOWN.SLOTS / 2) if #SMT_on else 1)",
15879a5511eaSIan Rogers        "MetricGroup": "SMT;TmaL1;tma_L1_group",
15889a5511eaSIan Rogers        "MetricName": "tma_info_thread_slots_utilization"
15899a5511eaSIan Rogers    },
15909a5511eaSIan Rogers    {
15919a5511eaSIan Rogers        "BriefDescription": "Uops Per Instruction",
15929a5511eaSIan Rogers        "MetricExpr": "tma_retiring * tma_info_thread_slots / INST_RETIRED.ANY",
15939a5511eaSIan Rogers        "MetricGroup": "Pipeline;Ret;Retire",
15949a5511eaSIan Rogers        "MetricName": "tma_info_thread_uoppi",
15959a5511eaSIan Rogers        "MetricThreshold": "tma_info_thread_uoppi > 1.05"
1596aa205003SIan Rogers    },
1597aa205003SIan Rogers    {
1598*5ecf682eSIan Rogers        "BriefDescription": "Uops per taken branch",
15999a5511eaSIan Rogers        "MetricExpr": "tma_retiring * tma_info_thread_slots / BR_INST_RETIRED.NEAR_TAKEN",
1600aa205003SIan Rogers        "MetricGroup": "Branches;Fed;FetchBW",
16019a5511eaSIan Rogers        "MetricName": "tma_info_thread_uptb",
16029a5511eaSIan Rogers        "MetricThreshold": "tma_info_thread_uptb < 9"
1603aa205003SIan Rogers    },
1604aa205003SIan Rogers    {
1605aa205003SIan Rogers        "BriefDescription": "This metric represents overall Integer (Int) select operations fraction the CPU has executed (retired)",
160653c83c79SIan Rogers        "MetricExpr": "tma_int_vector_128b + tma_int_vector_256b",
1607aa205003SIan Rogers        "MetricGroup": "Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
1608aa205003SIan Rogers        "MetricName": "tma_int_operations",
1609aa205003SIan Rogers        "MetricThreshold": "tma_int_operations > 0.1 & tma_light_operations > 0.6",
1610aa205003SIan Rogers        "PublicDescription": "This metric represents overall Integer (Int) select operations fraction the CPU has executed (retired). Vector/Matrix Int operations and shuffles are counted. Note this metric's value may exceed its parent due to use of \"Uops\" CountDomain.",
1611aa205003SIan Rogers        "ScaleUnit": "100%"
1612aa205003SIan Rogers    },
1613aa205003SIan Rogers    {
1614aa205003SIan Rogers        "BriefDescription": "This metric represents 128-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired",
16159a5511eaSIan Rogers        "MetricExpr": "(INT_VEC_RETIRED.ADD_128 + INT_VEC_RETIRED.VNNI_128) / (tma_retiring * tma_info_thread_slots)",
1616aa205003SIan Rogers        "MetricGroup": "Compute;IntVector;Pipeline;TopdownL4;tma_L4_group;tma_int_operations_group;tma_issue2P",
1617aa205003SIan Rogers        "MetricName": "tma_int_vector_128b",
1618aa205003SIan Rogers        "MetricThreshold": "tma_int_vector_128b > 0.1 & (tma_int_operations > 0.1 & tma_light_operations > 0.6)",
1619aa205003SIan Rogers        "PublicDescription": "This metric represents 128-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1620aa205003SIan Rogers        "ScaleUnit": "100%"
1621aa205003SIan Rogers    },
1622aa205003SIan Rogers    {
162353c83c79SIan Rogers        "BriefDescription": "This metric represents 256-bit vector Integer ADD/SUB/SAD/MUL or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired",
16249a5511eaSIan Rogers        "MetricExpr": "(INT_VEC_RETIRED.ADD_256 + INT_VEC_RETIRED.MUL_256 + INT_VEC_RETIRED.VNNI_256) / (tma_retiring * tma_info_thread_slots)",
1625aa205003SIan Rogers        "MetricGroup": "Compute;IntVector;Pipeline;TopdownL4;tma_L4_group;tma_int_operations_group;tma_issue2P",
1626aa205003SIan Rogers        "MetricName": "tma_int_vector_256b",
1627aa205003SIan Rogers        "MetricThreshold": "tma_int_vector_256b > 0.1 & (tma_int_operations > 0.1 & tma_light_operations > 0.6)",
162853c83c79SIan Rogers        "PublicDescription": "This metric represents 256-bit vector Integer ADD/SUB/SAD/MUL or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1629aa205003SIan Rogers        "ScaleUnit": "100%"
1630aa205003SIan Rogers    },
1631aa205003SIan Rogers    {
1632aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Instruction TLB (ITLB) misses",
16339a5511eaSIan Rogers        "MetricExpr": "ICACHE_TAG.STALLS / tma_info_thread_clks",
1634*5ecf682eSIan Rogers        "MetricGroup": "BigFootprint;BvBC;FetchLat;MemoryTLB;TopdownL3;tma_L3_group;tma_fetch_latency_group",
1635aa205003SIan Rogers        "MetricName": "tma_itlb_misses",
1636aa205003SIan Rogers        "MetricThreshold": "tma_itlb_misses > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
1637aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Instruction TLB (ITLB) misses. Sample with: FRONTEND_RETIRED.STLB_MISS_PS;FRONTEND_RETIRED.ITLB_MISS_PS",
1638aa205003SIan Rogers        "ScaleUnit": "100%"
1639aa205003SIan Rogers    },
1640aa205003SIan Rogers    {
1641aa205003SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled without loads missing the L1 data cache",
16429a5511eaSIan Rogers        "MetricExpr": "max((EXE_ACTIVITY.BOUND_ON_LOADS - MEMORY_ACTIVITY.STALLS_L1D_MISS) / tma_info_thread_clks, 0)",
164353c83c79SIan Rogers        "MetricGroup": "CacheHits;MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_issueL1;tma_issueMC;tma_memory_bound_group",
1644aa205003SIan Rogers        "MetricName": "tma_l1_bound",
1645aa205003SIan Rogers        "MetricThreshold": "tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
1646aa205003SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled without loads missing the L1 data cache.  The L1 data cache typically has the shortest latency.  However; in certain cases like loads blocked on older stores; a load might suffer due to high latency even though it is being satisfied by the L1. Another example is loads who miss in the TLB. These cases are characterized by execution unit stalls; while some non-completed demand load lives in the machine without having that demand load missing the L1 cache. Sample with: MEM_LOAD_RETIRED.L1_HIT_PS;MEM_LOAD_RETIRED.FB_HIT_PS. Related metrics: tma_clears_resteers, tma_machine_clears, tma_microcode_sequencer, tma_ms_switches, tma_ports_utilized_1",
1647aa205003SIan Rogers        "ScaleUnit": "100%"
1648aa205003SIan Rogers    },
1649aa205003SIan Rogers    {
1650*5ecf682eSIan Rogers        "BriefDescription": "This metric roughly estimates fraction of cycles with demand load accesses that hit the L1 cache",
1651*5ecf682eSIan Rogers        "MetricExpr": "min(2 * (MEM_INST_RETIRED.ALL_LOADS - MEM_LOAD_RETIRED.FB_HIT - MEM_LOAD_RETIRED.L1_MISS) * 20 / 100, max(CYCLE_ACTIVITY.CYCLES_MEM_ANY - MEMORY_ACTIVITY.CYCLES_L1D_MISS, 0)) / tma_info_thread_clks",
1652*5ecf682eSIan Rogers        "MetricGroup": "BvML;MemoryLat;TopdownL4;tma_L4_group;tma_l1_bound_group",
1653*5ecf682eSIan Rogers        "MetricName": "tma_l1_hit_latency",
1654*5ecf682eSIan Rogers        "MetricThreshold": "tma_l1_hit_latency > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
1655*5ecf682eSIan Rogers        "PublicDescription": "This metric roughly estimates fraction of cycles with demand load accesses that hit the L1 cache. The short latency of the L1 data cache may be exposed in pointer-chasing memory access patterns as an example. Sample with: MEM_LOAD_RETIRED.L1_HIT",
1656*5ecf682eSIan Rogers        "ScaleUnit": "100%"
1657*5ecf682eSIan Rogers    },
1658*5ecf682eSIan Rogers    {
1659aa205003SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled due to L2 cache accesses by loads",
16609a5511eaSIan Rogers        "MetricExpr": "(MEMORY_ACTIVITY.STALLS_L1D_MISS - MEMORY_ACTIVITY.STALLS_L2_MISS) / tma_info_thread_clks",
1661*5ecf682eSIan Rogers        "MetricGroup": "BvML;CacheHits;MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
1662aa205003SIan Rogers        "MetricName": "tma_l2_bound",
1663aa205003SIan Rogers        "MetricThreshold": "tma_l2_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
1664aa205003SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled due to L2 cache accesses by loads.  Avoiding cache misses (i.e. L1 misses/L2 hits) can improve the latency and increase performance. Sample with: MEM_LOAD_RETIRED.L2_HIT_PS",
1665aa205003SIan Rogers        "ScaleUnit": "100%"
1666aa205003SIan Rogers    },
1667aa205003SIan Rogers    {
1668aa205003SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled due to loads accesses to L3 cache or contended with a sibling Core",
16699a5511eaSIan Rogers        "MetricExpr": "(MEMORY_ACTIVITY.STALLS_L2_MISS - MEMORY_ACTIVITY.STALLS_L3_MISS) / tma_info_thread_clks",
167053c83c79SIan Rogers        "MetricGroup": "CacheHits;MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
1671aa205003SIan Rogers        "MetricName": "tma_l3_bound",
1672aa205003SIan Rogers        "MetricThreshold": "tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
1673aa205003SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled due to loads accesses to L3 cache or contended with a sibling Core.  Avoiding cache misses (i.e. L2 misses/L3 hits) can improve the latency and increase performance. Sample with: MEM_LOAD_RETIRED.L3_HIT_PS",
1674aa205003SIan Rogers        "ScaleUnit": "100%"
1675aa205003SIan Rogers    },
1676aa205003SIan Rogers    {
167753c83c79SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles with demand load accesses that hit the L3 cache under unloaded scenarios (possibly L3 latency limited)",
1678*5ecf682eSIan Rogers        "MetricExpr": "32.6 * tma_info_system_core_frequency * (MEM_LOAD_RETIRED.L3_HIT * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS / 2)) / tma_info_thread_clks",
1679*5ecf682eSIan Rogers        "MetricGroup": "BvML;MemoryLat;TopdownL4;tma_L4_group;tma_issueLat;tma_l3_bound_group",
1680aa205003SIan Rogers        "MetricName": "tma_l3_hit_latency",
1681aa205003SIan Rogers        "MetricThreshold": "tma_l3_hit_latency > 0.1 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
168253c83c79SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles with demand load accesses that hit the L3 cache under unloaded scenarios (possibly L3 latency limited).  Avoiding private cache misses (i.e. L2 misses/L3 hits) will improve the latency; reduce contention with sibling physical cores and increase performance.  Note the value of this node may overlap with its siblings. Sample with: MEM_LOAD_RETIRED.L3_HIT_PS. Related metrics: tma_info_bottleneck_cache_memory_latency, tma_mem_latency",
1683aa205003SIan Rogers        "ScaleUnit": "100%"
1684aa205003SIan Rogers    },
1685aa205003SIan Rogers    {
1686aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU was stalled due to Length Changing Prefixes (LCPs)",
16879a5511eaSIan Rogers        "MetricExpr": "DECODE.LCP / tma_info_thread_clks",
1688aa205003SIan Rogers        "MetricGroup": "FetchLat;TopdownL3;tma_L3_group;tma_fetch_latency_group;tma_issueFB",
1689aa205003SIan Rogers        "MetricName": "tma_lcp",
1690aa205003SIan Rogers        "MetricThreshold": "tma_lcp > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
1691*5ecf682eSIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU was stalled due to Length Changing Prefixes (LCPs). Using proper compiler flags or Intel Compiler by default will certainly avoid this. #Link: Optimization Guide about LCP BKMs. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb",
1692aa205003SIan Rogers        "ScaleUnit": "100%"
1693aa205003SIan Rogers    },
1694aa205003SIan Rogers    {
1695aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring light-weight operations -- instructions that require no more than one uop (micro-operation)",
1696969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
1697aa205003SIan Rogers        "MetricExpr": "max(0, tma_retiring - tma_heavy_operations)",
1698969a4661SKan Liang        "MetricGroup": "Default;Retire;TmaL2;TopdownL2;tma_L2_group;tma_retiring_group",
1699aa205003SIan Rogers        "MetricName": "tma_light_operations",
1700aa205003SIan Rogers        "MetricThreshold": "tma_light_operations > 0.6",
1701969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
170253c83c79SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring light-weight operations -- instructions that require no more than one uop (micro-operation). This correlates with total number of instructions used by the program. A uops-per-instruction (see UopPI metric) ratio of 1 or less should be expected for decently optimized code running on Intel Core/Xeon products. While this often indicates efficient X86 instructions were executed; high value does not necessarily mean better performance cannot be achieved. ([ICL+] Note this may undercount due to approximation using indirect events; [ADL+] .). Sample with: INST_RETIRED.PREC_DIST",
1703aa205003SIan Rogers        "ScaleUnit": "100%"
1704aa205003SIan Rogers    },
1705aa205003SIan Rogers    {
1706aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Load operations",
17079a5511eaSIan Rogers        "MetricExpr": "UOPS_DISPATCHED.PORT_2_3_10 / (3 * tma_info_core_core_clks)",
1708aa205003SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_ports_utilized_3m_group",
1709aa205003SIan Rogers        "MetricName": "tma_load_op_utilization",
1710aa205003SIan Rogers        "MetricThreshold": "tma_load_op_utilization > 0.6",
1711aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Load operations. Sample with: UOPS_DISPATCHED.PORT_2_3_10",
1712aa205003SIan Rogers        "ScaleUnit": "100%"
1713aa205003SIan Rogers    },
1714aa205003SIan Rogers    {
1715aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles where the (first level) DTLB was missed by load accesses, that later on hit in second-level TLB (STLB)",
1716aa205003SIan Rogers        "MetricExpr": "tma_dtlb_load - tma_load_stlb_miss",
1717aa205003SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_load_group",
1718aa205003SIan Rogers        "MetricName": "tma_load_stlb_hit",
1719aa205003SIan Rogers        "MetricThreshold": "tma_load_stlb_hit > 0.05 & (tma_dtlb_load > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
1720aa205003SIan Rogers        "ScaleUnit": "100%"
1721aa205003SIan Rogers    },
1722aa205003SIan Rogers    {
1723aa205003SIan Rogers        "BriefDescription": "This metric estimates the fraction of cycles where the Second-level TLB (STLB) was missed by load accesses, performing a hardware page walk",
17249a5511eaSIan Rogers        "MetricExpr": "DTLB_LOAD_MISSES.WALK_ACTIVE / tma_info_thread_clks",
1725aa205003SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_load_group",
1726aa205003SIan Rogers        "MetricName": "tma_load_stlb_miss",
1727aa205003SIan Rogers        "MetricThreshold": "tma_load_stlb_miss > 0.05 & (tma_dtlb_load > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
1728aa205003SIan Rogers        "ScaleUnit": "100%"
1729aa205003SIan Rogers    },
1730aa205003SIan Rogers    {
1731aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling loads from local memory",
1732*5ecf682eSIan Rogers        "MetricExpr": "72 * tma_info_system_core_frequency * MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS / 2) / tma_info_thread_clks",
1733aa205003SIan Rogers        "MetricGroup": "Server;TopdownL5;tma_L5_group;tma_mem_latency_group",
173453c83c79SIan Rogers        "MetricName": "tma_local_mem",
173553c83c79SIan Rogers        "MetricThreshold": "tma_local_mem > 0.1 & (tma_mem_latency > 0.1 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
1736*5ecf682eSIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling loads from local memory. Caching will improve the latency and increase performance. Sample with: MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM",
1737aa205003SIan Rogers        "ScaleUnit": "100%"
1738aa205003SIan Rogers    },
1739aa205003SIan Rogers    {
1740aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU spent handling cache misses due to lock operations",
17419a5511eaSIan Rogers        "MetricExpr": "(16 * max(0, MEM_INST_RETIRED.LOCK_LOADS - L2_RQSTS.ALL_RFO) + MEM_INST_RETIRED.LOCK_LOADS / MEM_INST_RETIRED.ALL_STORES * (10 * L2_RQSTS.RFO_HIT + min(CPU_CLK_UNHALTED.THREAD, OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO))) / tma_info_thread_clks",
1742aa205003SIan Rogers        "MetricGroup": "Offcore;TopdownL4;tma_L4_group;tma_issueRFO;tma_l1_bound_group",
1743aa205003SIan Rogers        "MetricName": "tma_lock_latency",
1744aa205003SIan Rogers        "MetricThreshold": "tma_lock_latency > 0.2 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
1745*5ecf682eSIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU spent handling cache misses due to lock operations. Due to the microarchitecture handling of locks; they are classified as L1_Bound regardless of what memory source satisfied them. Sample with: MEM_INST_RETIRED.LOCK_LOADS. Related metrics: tma_store_latency",
1746aa205003SIan Rogers        "ScaleUnit": "100%"
1747aa205003SIan Rogers    },
1748aa205003SIan Rogers    {
1749aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU has wasted due to Machine Clears",
1750969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
1751aa205003SIan Rogers        "MetricExpr": "max(0, tma_bad_speculation - tma_branch_mispredicts)",
1752*5ecf682eSIan Rogers        "MetricGroup": "BadSpec;BvMS;Default;MachineClears;TmaL2;TopdownL2;tma_L2_group;tma_bad_speculation_group;tma_issueMC;tma_issueSyncxn",
1753aa205003SIan Rogers        "MetricName": "tma_machine_clears",
1754aa205003SIan Rogers        "MetricThreshold": "tma_machine_clears > 0.1 & tma_bad_speculation > 0.15",
1755969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
1756aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU has wasted due to Machine Clears.  These slots are either wasted by uops fetched prior to the clear; or stalls the out-of-order portion of the machine needs to recover its state after the clear. For example; this can happen due to memory ordering Nukes (e.g. Memory Disambiguation) or Self-Modifying-Code (SMC) nukes. Sample with: MACHINE_CLEARS.COUNT. Related metrics: tma_clears_resteers, tma_contested_accesses, tma_data_sharing, tma_false_sharing, tma_l1_bound, tma_microcode_sequencer, tma_ms_switches, tma_remote_cache",
1757aa205003SIan Rogers        "ScaleUnit": "100%"
1758aa205003SIan Rogers    },
1759aa205003SIan Rogers    {
1760aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles where the core's performance was likely hurt due to memory bandwidth Allocation feature (RDT's memory bandwidth throttling).",
17619a5511eaSIan Rogers        "MetricExpr": "INT_MISC.MBA_STALLS / tma_info_thread_clks",
1762aa205003SIan Rogers        "MetricGroup": "MemoryBW;Offcore;Server;TopdownL5;tma_L5_group;tma_mem_bandwidth_group",
1763aa205003SIan Rogers        "MetricName": "tma_mba_stalls",
1764aa205003SIan Rogers        "MetricThreshold": "tma_mba_stalls > 0.1 & (tma_mem_bandwidth > 0.2 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
1765aa205003SIan Rogers        "ScaleUnit": "100%"
1766aa205003SIan Rogers    },
1767aa205003SIan Rogers    {
176853c83c79SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles where the core's performance was likely hurt due to approaching bandwidth limits of external memory - DRAM ([SPR-HBM] and/or HBM)",
17699a5511eaSIan Rogers        "MetricExpr": "min(CPU_CLK_UNHALTED.THREAD, cpu@OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD\\,cmask\\=4@) / tma_info_thread_clks",
1770*5ecf682eSIan Rogers        "MetricGroup": "BvMS;MemoryBW;Offcore;TopdownL4;tma_L4_group;tma_dram_bound_group;tma_issueBW",
1771aa205003SIan Rogers        "MetricName": "tma_mem_bandwidth",
1772aa205003SIan Rogers        "MetricThreshold": "tma_mem_bandwidth > 0.2 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
177353c83c79SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles where the core's performance was likely hurt due to approaching bandwidth limits of external memory - DRAM ([SPR-HBM] and/or HBM).  The underlying heuristic assumes that a similar off-core traffic is generated by all IA cores. This metric does not aggregate non-data-read requests by this logical processor; requests from other IA Logical Processors/Physical Cores/sockets; or other non-IA devices like GPU; hence the maximum external memory bandwidth limits may or may not be approached when this metric is flagged (see Uncore counters for that). Related metrics: tma_fb_full, tma_info_bottleneck_cache_memory_bandwidth, tma_info_system_dram_bw_use, tma_sq_full",
1774aa205003SIan Rogers        "ScaleUnit": "100%"
1775aa205003SIan Rogers    },
1776aa205003SIan Rogers    {
177753c83c79SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles where the performance was likely hurt due to latency from external memory - DRAM ([SPR-HBM] and/or HBM)",
17789a5511eaSIan Rogers        "MetricExpr": "min(CPU_CLK_UNHALTED.THREAD, OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD) / tma_info_thread_clks - tma_mem_bandwidth",
1779*5ecf682eSIan Rogers        "MetricGroup": "BvML;MemoryLat;Offcore;TopdownL4;tma_L4_group;tma_dram_bound_group;tma_issueLat",
1780aa205003SIan Rogers        "MetricName": "tma_mem_latency",
1781aa205003SIan Rogers        "MetricThreshold": "tma_mem_latency > 0.1 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
178253c83c79SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles where the performance was likely hurt due to latency from external memory - DRAM ([SPR-HBM] and/or HBM).  This metric does not aggregate requests from other Logical Processors/Physical Cores/sockets (see Uncore counters for that). Related metrics: tma_info_bottleneck_cache_memory_latency, tma_l3_hit_latency",
1783aa205003SIan Rogers        "ScaleUnit": "100%"
1784aa205003SIan Rogers    },
1785aa205003SIan Rogers    {
1786aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots the Memory subsystem within the Backend was a bottleneck",
1787969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL2",
17889a5511eaSIan Rogers        "MetricExpr": "topdown\\-mem\\-bound / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) + 0 * tma_info_thread_slots",
1789969a4661SKan Liang        "MetricGroup": "Backend;Default;TmaL2;TopdownL2;tma_L2_group;tma_backend_bound_group",
1790aa205003SIan Rogers        "MetricName": "tma_memory_bound",
1791aa205003SIan Rogers        "MetricThreshold": "tma_memory_bound > 0.2 & tma_backend_bound > 0.2",
1792969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL2;Default",
1793aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots the Memory subsystem within the Backend was a bottleneck.  Memory Bound estimates fraction of slots where pipeline is likely stalled due to demand load or store instructions. This accounts mainly for (1) non-completed in-flight memory demand loads which coincides with execution units starvation; in addition to (2) cases where stores could impose backpressure on the pipeline when many of them get buffered at the same time (less common out of the two).",
1794aa205003SIan Rogers        "ScaleUnit": "100%"
1795aa205003SIan Rogers    },
1796aa205003SIan Rogers    {
1797aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to LFENCE Instructions.",
1798becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
17999a5511eaSIan Rogers        "MetricExpr": "13 * MISC2_RETIRED.LFENCE / tma_info_thread_clks",
180053c83c79SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_serializing_operation_group",
1801aa205003SIan Rogers        "MetricName": "tma_memory_fence",
180253c83c79SIan Rogers        "MetricThreshold": "tma_memory_fence > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
1803aa205003SIan Rogers        "ScaleUnit": "100%"
1804aa205003SIan Rogers    },
1805aa205003SIan Rogers    {
1806aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring memory operations -- uops for memory load or store accesses.",
18079a5511eaSIan Rogers        "MetricExpr": "tma_light_operations * MEM_UOP_RETIRED.ANY / (tma_retiring * tma_info_thread_slots)",
1808aa205003SIan Rogers        "MetricGroup": "Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
1809aa205003SIan Rogers        "MetricName": "tma_memory_operations",
1810aa205003SIan Rogers        "MetricThreshold": "tma_memory_operations > 0.1 & tma_light_operations > 0.6",
1811aa205003SIan Rogers        "ScaleUnit": "100%"
1812aa205003SIan Rogers    },
1813aa205003SIan Rogers    {
1814aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU was retiring uops fetched by the Microcode Sequencer (MS) unit",
18159a5511eaSIan Rogers        "MetricExpr": "UOPS_RETIRED.MS / tma_info_thread_slots",
1816aa205003SIan Rogers        "MetricGroup": "MicroSeq;TopdownL3;tma_L3_group;tma_heavy_operations_group;tma_issueMC;tma_issueMS",
1817aa205003SIan Rogers        "MetricName": "tma_microcode_sequencer",
1818aa205003SIan Rogers        "MetricThreshold": "tma_microcode_sequencer > 0.05 & tma_heavy_operations > 0.1",
181953c83c79SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU was retiring uops fetched by the Microcode Sequencer (MS) unit.  The MS is used for CISC instructions not supported by the default decoders (like repeat move strings; or CPUID); or by microcode assists used to address some operation modes (like in Floating Point assists). These cases can often be avoided. Sample with: UOPS_RETIRED.MS. Related metrics: tma_clears_resteers, tma_info_bottleneck_irregular_overhead, tma_l1_bound, tma_machine_clears, tma_ms_switches",
1820aa205003SIan Rogers        "ScaleUnit": "100%"
1821aa205003SIan Rogers    },
1822aa205003SIan Rogers    {
1823aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Branch Misprediction at execution stage",
18249a5511eaSIan Rogers        "MetricExpr": "tma_branch_mispredicts / tma_bad_speculation * INT_MISC.CLEAR_RESTEER_CYCLES / tma_info_thread_clks",
1825*5ecf682eSIan Rogers        "MetricGroup": "BadSpec;BrMispredicts;BvMP;TopdownL4;tma_L4_group;tma_branch_resteers_group;tma_issueBM",
1826aa205003SIan Rogers        "MetricName": "tma_mispredicts_resteers",
1827aa205003SIan Rogers        "MetricThreshold": "tma_mispredicts_resteers > 0.05 & (tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15))",
18289a5511eaSIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Branch Misprediction at execution stage. Sample with: INT_MISC.CLEAR_RESTEER_CYCLES. Related metrics: tma_branch_mispredicts, tma_info_bad_spec_branch_misprediction_cost, tma_info_bottleneck_mispredictions",
1829aa205003SIan Rogers        "ScaleUnit": "100%"
1830aa205003SIan Rogers    },
1831aa205003SIan Rogers    {
1832aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to the MITE pipeline (the legacy decode pipeline)",
18339a5511eaSIan Rogers        "MetricExpr": "(IDQ.MITE_CYCLES_ANY - IDQ.MITE_CYCLES_OK) / tma_info_core_core_clks / 2",
1834aa205003SIan Rogers        "MetricGroup": "DSBmiss;FetchBW;TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
1835aa205003SIan Rogers        "MetricName": "tma_mite",
183653c83c79SIan Rogers        "MetricThreshold": "tma_mite > 0.1 & tma_fetch_bandwidth > 0.2",
1837aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to the MITE pipeline (the legacy decode pipeline). This pipeline is used for code that was not pre-cached in the DSB or LSD. For example; inefficiencies due to asymmetric decoders; use of long immediate or LCP can manifest as MITE fetch bandwidth bottleneck. Sample with: FRONTEND_RETIRED.ANY_DSB_MISS",
1838aa205003SIan Rogers        "ScaleUnit": "100%"
1839aa205003SIan Rogers    },
1840aa205003SIan Rogers    {
184153c83c79SIan Rogers        "BriefDescription": "This metric estimates penalty in terms of percentage of([SKL+] injected blend uops out of all Uops Issued -- the Count Domain; [ADL+] cycles)",
18429a5511eaSIan Rogers        "MetricExpr": "160 * ASSISTS.SSE_AVX_MIX / tma_info_thread_clks",
1843aa205003SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_issueMV;tma_ports_utilized_0_group",
1844aa205003SIan Rogers        "MetricName": "tma_mixing_vectors",
1845aa205003SIan Rogers        "MetricThreshold": "tma_mixing_vectors > 0.05",
184653c83c79SIan Rogers        "PublicDescription": "This metric estimates penalty in terms of percentage of([SKL+] injected blend uops out of all Uops Issued -- the Count Domain; [ADL+] cycles). Usually a Mixing_Vectors over 5% is worth investigating. Read more in Appendix B1 of the Optimizations Guide for this topic. Related metrics: tma_ms_switches",
1847aa205003SIan Rogers        "ScaleUnit": "100%"
1848aa205003SIan Rogers    },
1849aa205003SIan Rogers    {
1850aa205003SIan Rogers        "BriefDescription": "This metric estimates the fraction of cycles when the CPU was stalled due to switches of uop delivery to the Microcode Sequencer (MS)",
185153c83c79SIan Rogers        "MetricExpr": "3 * cpu@UOPS_RETIRED.MS\\,cmask\\=1\\,edge@ / (UOPS_RETIRED.SLOTS / UOPS_ISSUED.ANY) / tma_info_thread_clks",
1852aa205003SIan Rogers        "MetricGroup": "FetchLat;MicroSeq;TopdownL3;tma_L3_group;tma_fetch_latency_group;tma_issueMC;tma_issueMS;tma_issueMV;tma_issueSO",
1853aa205003SIan Rogers        "MetricName": "tma_ms_switches",
1854aa205003SIan Rogers        "MetricThreshold": "tma_ms_switches > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
185553c83c79SIan Rogers        "PublicDescription": "This metric estimates the fraction of cycles when the CPU was stalled due to switches of uop delivery to the Microcode Sequencer (MS). Commonly used instructions are optimized for delivery by the DSB (decoded i-cache) or MITE (legacy instruction decode) pipelines. Certain operations cannot be handled natively by the execution pipeline; and must be performed by microcode (small programs injected into the execution stream). Switching to the MS too often can negatively impact performance. The MS is designated to deliver long uop flows required by CISC instructions like CPUID; or uncommon conditions like Floating Point Assists when dealing with Denormals. Sample with: FRONTEND_RETIRED.MS_FLOWS. Related metrics: tma_clears_resteers, tma_info_bottleneck_irregular_overhead, tma_l1_bound, tma_machine_clears, tma_microcode_sequencer, tma_mixing_vectors, tma_serializing_operation",
1856aa205003SIan Rogers        "ScaleUnit": "100%"
1857aa205003SIan Rogers    },
1858aa205003SIan Rogers    {
1859aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring branch instructions that were not fused",
18609a5511eaSIan Rogers        "MetricExpr": "tma_light_operations * (BR_INST_RETIRED.ALL_BRANCHES - INST_RETIRED.MACRO_FUSED) / (tma_retiring * tma_info_thread_slots)",
1861*5ecf682eSIan Rogers        "MetricGroup": "Branches;BvBO;Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
1862aa205003SIan Rogers        "MetricName": "tma_non_fused_branches",
1863aa205003SIan Rogers        "MetricThreshold": "tma_non_fused_branches > 0.1 & tma_light_operations > 0.6",
1864aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring branch instructions that were not fused. Non-conditional branches like direct JMP or CALL would count here. Can be used to examine fusible conditional jumps that were not fused.",
1865aa205003SIan Rogers        "ScaleUnit": "100%"
1866aa205003SIan Rogers    },
1867aa205003SIan Rogers    {
1868aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring NOP (no op) instructions",
18699a5511eaSIan Rogers        "MetricExpr": "tma_light_operations * INST_RETIRED.NOP / (tma_retiring * tma_info_thread_slots)",
1870*5ecf682eSIan Rogers        "MetricGroup": "BvBO;Pipeline;TopdownL4;tma_L4_group;tma_other_light_ops_group",
1871aa205003SIan Rogers        "MetricName": "tma_nop_instructions",
187253c83c79SIan Rogers        "MetricThreshold": "tma_nop_instructions > 0.1 & (tma_other_light_ops > 0.3 & tma_light_operations > 0.6)",
1873aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring NOP (no op) instructions. Compilers often use NOPs for certain address alignments - e.g. start address of a function or loop body. Sample with: INST_RETIRED.NOP",
1874aa205003SIan Rogers        "ScaleUnit": "100%"
1875aa205003SIan Rogers    },
1876aa205003SIan Rogers    {
1877aa205003SIan Rogers        "BriefDescription": "This metric represents the remaining light uops fraction the CPU has executed - remaining means not covered by other sibling nodes",
187853c83c79SIan Rogers        "MetricExpr": "max(0, tma_light_operations - (tma_fp_arith + tma_int_operations + tma_memory_operations + tma_fused_instructions + tma_non_fused_branches))",
1879aa205003SIan Rogers        "MetricGroup": "Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
1880aa205003SIan Rogers        "MetricName": "tma_other_light_ops",
1881aa205003SIan Rogers        "MetricThreshold": "tma_other_light_ops > 0.3 & tma_light_operations > 0.6",
1882aa205003SIan Rogers        "PublicDescription": "This metric represents the remaining light uops fraction the CPU has executed - remaining means not covered by other sibling nodes. May undercount due to FMA double counting",
1883aa205003SIan Rogers        "ScaleUnit": "100%"
1884aa205003SIan Rogers    },
1885aa205003SIan Rogers    {
188653c83c79SIan Rogers        "BriefDescription": "This metric estimates fraction of slots the CPU was stalled due to other cases of misprediction (non-retired x86 branches or other types).",
188753c83c79SIan Rogers        "MetricExpr": "max(tma_branch_mispredicts * (1 - BR_MISP_RETIRED.ALL_BRANCHES / (INT_MISC.CLEARS_COUNT - MACHINE_CLEARS.COUNT)), 0.0001)",
1888*5ecf682eSIan Rogers        "MetricGroup": "BrMispredicts;BvIO;TopdownL3;tma_L3_group;tma_branch_mispredicts_group",
188953c83c79SIan Rogers        "MetricName": "tma_other_mispredicts",
189053c83c79SIan Rogers        "MetricThreshold": "tma_other_mispredicts > 0.05 & (tma_branch_mispredicts > 0.1 & tma_bad_speculation > 0.15)",
189153c83c79SIan Rogers        "ScaleUnit": "100%"
189253c83c79SIan Rogers    },
189353c83c79SIan Rogers    {
189453c83c79SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU has wasted due to Nukes (Machine Clears) not related to memory ordering.",
189553c83c79SIan Rogers        "MetricExpr": "max(tma_machine_clears * (1 - MACHINE_CLEARS.MEMORY_ORDERING / MACHINE_CLEARS.COUNT), 0.0001)",
1896*5ecf682eSIan Rogers        "MetricGroup": "BvIO;Machine_Clears;TopdownL3;tma_L3_group;tma_machine_clears_group",
189753c83c79SIan Rogers        "MetricName": "tma_other_nukes",
189853c83c79SIan Rogers        "MetricThreshold": "tma_other_nukes > 0.05 & (tma_machine_clears > 0.1 & tma_bad_speculation > 0.15)",
189953c83c79SIan Rogers        "ScaleUnit": "100%"
190053c83c79SIan Rogers    },
190153c83c79SIan Rogers    {
1902aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Page Faults",
19039a5511eaSIan Rogers        "MetricExpr": "99 * ASSISTS.PAGE_FAULT / tma_info_thread_slots",
1904aa205003SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_assists_group",
1905aa205003SIan Rogers        "MetricName": "tma_page_faults",
1906aa205003SIan Rogers        "MetricThreshold": "tma_page_faults > 0.05",
1907aa205003SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Page Faults. A Page Fault may apply on first application access to a memory page. Note operating system handling of page faults accounts for the majority of its cost.",
1908aa205003SIan Rogers        "ScaleUnit": "100%"
1909aa205003SIan Rogers    },
1910aa205003SIan Rogers    {
1911aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates (based on idle latencies) how often the CPU was stalled on accesses to external 3D-Xpoint (Crystal Ridge, a.k.a",
191253c83c79SIan Rogers        "MetricExpr": "(((1 - (19 * (MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS)) + 10 * (MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) + MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) + MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS))) / (19 * (MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS)) + 10 * (MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) + MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) + MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS)) + (25 * (MEM_LOAD_RETIRED.LOCAL_PMM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS)) + 33 * (MEM_LOAD_L3_MISS_RETIRED.REMOTE_PMM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS))))) * (MEMORY_ACTIVITY.STALLS_L3_MISS / tma_info_thread_clks) if 1e6 * (MEM_LOAD_L3_MISS_RETIRED.REMOTE_PMM + MEM_LOAD_RETIRED.LOCAL_PMM) > MEM_LOAD_RETIRED.L1_MISS else 0) if #has_pmem > 0 else 0)",
1913aa205003SIan Rogers        "MetricGroup": "MemoryBound;Server;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
1914aa205003SIan Rogers        "MetricName": "tma_pmm_bound",
1915aa205003SIan Rogers        "MetricThreshold": "tma_pmm_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
1916aa205003SIan Rogers        "PublicDescription": "This metric roughly estimates (based on idle latencies) how often the CPU was stalled on accesses to external 3D-Xpoint (Crystal Ridge, a.k.a. IXP) memory by loads, PMM stands for Persistent Memory Module.",
1917aa205003SIan Rogers        "ScaleUnit": "100%"
1918aa205003SIan Rogers    },
1919aa205003SIan Rogers    {
1920aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 0 ([SNB+] ALU; [HSW+] ALU and 2nd branch)",
19219a5511eaSIan Rogers        "MetricExpr": "UOPS_DISPATCHED.PORT_0 / tma_info_core_core_clks",
1922aa205003SIan Rogers        "MetricGroup": "Compute;TopdownL6;tma_L6_group;tma_alu_op_utilization_group;tma_issue2P",
1923aa205003SIan Rogers        "MetricName": "tma_port_0",
1924aa205003SIan Rogers        "MetricThreshold": "tma_port_0 > 0.6",
1925aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 0 ([SNB+] ALU; [HSW+] ALU and 2nd branch). Sample with: UOPS_DISPATCHED.PORT_0. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1926aa205003SIan Rogers        "ScaleUnit": "100%"
1927aa205003SIan Rogers    },
1928aa205003SIan Rogers    {
1929aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 1 (ALU)",
19309a5511eaSIan Rogers        "MetricExpr": "UOPS_DISPATCHED.PORT_1 / tma_info_core_core_clks",
1931aa205003SIan Rogers        "MetricGroup": "TopdownL6;tma_L6_group;tma_alu_op_utilization_group;tma_issue2P",
1932aa205003SIan Rogers        "MetricName": "tma_port_1",
1933aa205003SIan Rogers        "MetricThreshold": "tma_port_1 > 0.6",
1934aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 1 (ALU). Sample with: UOPS_DISPATCHED.PORT_1. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_5, tma_port_6, tma_ports_utilized_2",
1935aa205003SIan Rogers        "ScaleUnit": "100%"
1936aa205003SIan Rogers    },
1937aa205003SIan Rogers    {
1938aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 6 ([HSW+] Primary Branch and simple ALU)",
19399a5511eaSIan Rogers        "MetricExpr": "UOPS_DISPATCHED.PORT_6 / tma_info_core_core_clks",
1940aa205003SIan Rogers        "MetricGroup": "TopdownL6;tma_L6_group;tma_alu_op_utilization_group;tma_issue2P",
1941aa205003SIan Rogers        "MetricName": "tma_port_6",
1942aa205003SIan Rogers        "MetricThreshold": "tma_port_6 > 0.6",
1943aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 6 ([HSW+] Primary Branch and simple ALU). Sample with: UOPS_DISPATCHED.PORT_6. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_ports_utilized_2",
1944aa205003SIan Rogers        "ScaleUnit": "100%"
1945aa205003SIan Rogers    },
1946aa205003SIan Rogers    {
1947aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles the CPU performance was potentially limited due to Core computation issues (non divider-related)",
194853c83c79SIan Rogers        "MetricExpr": "((tma_ports_utilized_0 * tma_info_thread_clks + (EXE_ACTIVITY.1_PORTS_UTIL + tma_retiring * cpu@EXE_ACTIVITY.2_PORTS_UTIL\\,umask\\=0xc@)) / tma_info_thread_clks if ARITH.DIV_ACTIVE < CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS else (EXE_ACTIVITY.1_PORTS_UTIL + tma_retiring * cpu@EXE_ACTIVITY.2_PORTS_UTIL\\,umask\\=0xc@) / tma_info_thread_clks)",
1949aa205003SIan Rogers        "MetricGroup": "PortsUtil;TopdownL3;tma_L3_group;tma_core_bound_group",
1950aa205003SIan Rogers        "MetricName": "tma_ports_utilization",
1951aa205003SIan Rogers        "MetricThreshold": "tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
1952aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles the CPU performance was potentially limited due to Core computation issues (non divider-related).  Two distinct categories can be attributed into this metric: (1) heavy data-dependency among contiguous instructions would manifest in this metric - such cases are often referred to as low Instruction Level Parallelism (ILP). (2) Contention on some hardware execution unit other than Divider. For example; when there are too many multiply operations.",
1953aa205003SIan Rogers        "ScaleUnit": "100%"
1954aa205003SIan Rogers    },
1955aa205003SIan Rogers    {
1956aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU executed no uops on any execution port (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
1957*5ecf682eSIan Rogers        "MetricExpr": "(EXE_ACTIVITY.EXE_BOUND_0_PORTS + max(cpu@RS.EMPTY\\,umask\\=1@ - RESOURCE_STALLS.SCOREBOARD, 0)) / tma_info_thread_clks * (CYCLE_ACTIVITY.STALLS_TOTAL - EXE_ACTIVITY.BOUND_ON_LOADS) / tma_info_thread_clks",
1958aa205003SIan Rogers        "MetricGroup": "PortsUtil;TopdownL4;tma_L4_group;tma_ports_utilization_group",
1959aa205003SIan Rogers        "MetricName": "tma_ports_utilized_0",
1960aa205003SIan Rogers        "MetricThreshold": "tma_ports_utilized_0 > 0.2 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
1961aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU executed no uops on any execution port (Logical Processor cycles since ICL, Physical Core cycles otherwise). Long-latency instructions like divides may contribute to this metric.",
1962aa205003SIan Rogers        "ScaleUnit": "100%"
1963aa205003SIan Rogers    },
1964aa205003SIan Rogers    {
1965aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles where the CPU executed total of 1 uop per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
19669a5511eaSIan Rogers        "MetricExpr": "EXE_ACTIVITY.1_PORTS_UTIL / tma_info_thread_clks",
1967aa205003SIan Rogers        "MetricGroup": "PortsUtil;TopdownL4;tma_L4_group;tma_issueL1;tma_ports_utilization_group",
1968aa205003SIan Rogers        "MetricName": "tma_ports_utilized_1",
1969aa205003SIan Rogers        "MetricThreshold": "tma_ports_utilized_1 > 0.2 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
1970aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles where the CPU executed total of 1 uop per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). This can be due to heavy data-dependency among software instructions; or over oversubscribing a particular hardware resource. In some other cases with high 1_Port_Utilized and L1_Bound; this metric can point to L1 data-cache latency bottleneck that may not necessarily manifest with complete execution starvation (due to the short L1 latency e.g. walking a linked list) - looking at the assembly can be helpful. Sample with: EXE_ACTIVITY.1_PORTS_UTIL. Related metrics: tma_l1_bound",
1971aa205003SIan Rogers        "ScaleUnit": "100%"
1972aa205003SIan Rogers    },
1973aa205003SIan Rogers    {
1974aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU executed total of 2 uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
1975becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
19769a5511eaSIan Rogers        "MetricExpr": "EXE_ACTIVITY.2_PORTS_UTIL / tma_info_thread_clks",
1977aa205003SIan Rogers        "MetricGroup": "PortsUtil;TopdownL4;tma_L4_group;tma_issue2P;tma_ports_utilization_group",
1978aa205003SIan Rogers        "MetricName": "tma_ports_utilized_2",
1979aa205003SIan Rogers        "MetricThreshold": "tma_ports_utilized_2 > 0.15 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
1980aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU executed total of 2 uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise).  Loop Vectorization -most compilers feature auto-Vectorization options today- reduces pressure on the execution ports as multiple elements are calculated with same uop. Sample with: EXE_ACTIVITY.2_PORTS_UTIL. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6",
1981aa205003SIan Rogers        "ScaleUnit": "100%"
1982aa205003SIan Rogers    },
1983aa205003SIan Rogers    {
1984aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU executed total of 3 or more uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
1985becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
19869a5511eaSIan Rogers        "MetricExpr": "UOPS_EXECUTED.CYCLES_GE_3 / tma_info_thread_clks",
1987*5ecf682eSIan Rogers        "MetricGroup": "BvCB;PortsUtil;TopdownL4;tma_L4_group;tma_ports_utilization_group",
1988aa205003SIan Rogers        "MetricName": "tma_ports_utilized_3m",
198953c83c79SIan Rogers        "MetricThreshold": "tma_ports_utilized_3m > 0.4 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
1990aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU executed total of 3 or more uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). Sample with: UOPS_EXECUTED.CYCLES_GE_3",
1991aa205003SIan Rogers        "ScaleUnit": "100%"
1992aa205003SIan Rogers    },
1993aa205003SIan Rogers    {
1994aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling loads from remote cache in other sockets including synchronizations issues",
1995*5ecf682eSIan Rogers        "MetricExpr": "(133 * tma_info_system_core_frequency * MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM + 133 * tma_info_system_core_frequency * MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD) * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS / 2) / tma_info_thread_clks",
1996aa205003SIan Rogers        "MetricGroup": "Offcore;Server;Snoop;TopdownL5;tma_L5_group;tma_issueSyncxn;tma_mem_latency_group",
1997aa205003SIan Rogers        "MetricName": "tma_remote_cache",
1998aa205003SIan Rogers        "MetricThreshold": "tma_remote_cache > 0.05 & (tma_mem_latency > 0.1 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
1999aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling loads from remote cache in other sockets including synchronizations issues. This is caused often due to non-optimal NUMA allocations. #link to NUMA article. Sample with: MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM_PS;MEM_LOAD_L3_MISS_RETIRED.REMOTE_FWD_PS. Related metrics: tma_contested_accesses, tma_data_sharing, tma_false_sharing, tma_machine_clears",
2000aa205003SIan Rogers        "ScaleUnit": "100%"
2001aa205003SIan Rogers    },
2002aa205003SIan Rogers    {
2003aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling loads from remote memory",
2004*5ecf682eSIan Rogers        "MetricExpr": "153 * tma_info_system_core_frequency * MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM * (1 + MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS / 2) / tma_info_thread_clks",
2005aa205003SIan Rogers        "MetricGroup": "Server;Snoop;TopdownL5;tma_L5_group;tma_mem_latency_group",
200653c83c79SIan Rogers        "MetricName": "tma_remote_mem",
200753c83c79SIan Rogers        "MetricThreshold": "tma_remote_mem > 0.1 & (tma_mem_latency > 0.1 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2008aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling loads from remote memory. This is caused often due to non-optimal NUMA allocations. #link to NUMA article. Sample with: MEM_LOAD_L3_MISS_RETIRED.REMOTE_DRAM_PS",
2009aa205003SIan Rogers        "ScaleUnit": "100%"
2010aa205003SIan Rogers    },
2011aa205003SIan Rogers    {
2012aa205003SIan Rogers        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
2013969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
20149a5511eaSIan Rogers        "MetricExpr": "topdown\\-retiring / (topdown\\-fe\\-bound + topdown\\-bad\\-spec + topdown\\-retiring + topdown\\-be\\-bound) + 0 * tma_info_thread_slots",
2015*5ecf682eSIan Rogers        "MetricGroup": "BvUW;Default;TmaL1;TopdownL1;tma_L1_group",
2016aa205003SIan Rogers        "MetricName": "tma_retiring",
2017aa205003SIan Rogers        "MetricThreshold": "tma_retiring > 0.7 | tma_heavy_operations > 0.1",
2018969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
2019aa205003SIan 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. Sample with: UOPS_RETIRED.SLOTS",
2020aa205003SIan Rogers        "ScaleUnit": "100%"
2021aa205003SIan Rogers    },
2022aa205003SIan Rogers    {
2023aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU issue-pipeline was stalled due to serializing operations",
202453c83c79SIan Rogers        "MetricExpr": "RESOURCE_STALLS.SCOREBOARD / tma_info_thread_clks + tma_c02_wait",
2025*5ecf682eSIan Rogers        "MetricGroup": "BvIO;PortsUtil;TopdownL3;tma_L3_group;tma_core_bound_group;tma_issueSO",
2026aa205003SIan Rogers        "MetricName": "tma_serializing_operation",
202753c83c79SIan Rogers        "MetricThreshold": "tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
2028aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU issue-pipeline was stalled due to serializing operations. Instructions like CPUID; WRMSR or LFENCE serialize the out-of-order execution which may limit performance. Sample with: RESOURCE_STALLS.SCOREBOARD. Related metrics: tma_ms_switches",
2029aa205003SIan Rogers        "ScaleUnit": "100%"
2030aa205003SIan Rogers    },
2031aa205003SIan Rogers    {
203253c83c79SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring Shuffle operations of 256-bit vector size (FP or Integer)",
203353c83c79SIan Rogers        "MetricExpr": "tma_light_operations * INT_VEC_RETIRED.SHUFFLES / (tma_retiring * tma_info_thread_slots)",
203453c83c79SIan Rogers        "MetricGroup": "HPC;Pipeline;TopdownL4;tma_L4_group;tma_other_light_ops_group",
203553c83c79SIan Rogers        "MetricName": "tma_shuffles_256b",
203653c83c79SIan Rogers        "MetricThreshold": "tma_shuffles_256b > 0.1 & (tma_other_light_ops > 0.3 & tma_light_operations > 0.6)",
203753c83c79SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring Shuffle operations of 256-bit vector size (FP or Integer). Shuffles may incur slow cross \"vector lane\" data transfers.",
2038aa205003SIan Rogers        "ScaleUnit": "100%"
2039aa205003SIan Rogers    },
2040aa205003SIan Rogers    {
2041aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to PAUSE Instructions",
2042becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
20439a5511eaSIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.PAUSE / tma_info_thread_clks",
204453c83c79SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_serializing_operation_group",
2045aa205003SIan Rogers        "MetricName": "tma_slow_pause",
204653c83c79SIan Rogers        "MetricThreshold": "tma_slow_pause > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2047aa205003SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to PAUSE Instructions. Sample with: CPU_CLK_UNHALTED.PAUSE_INST",
2048aa205003SIan Rogers        "ScaleUnit": "100%"
2049aa205003SIan Rogers    },
2050aa205003SIan Rogers    {
2051aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles handling memory load split accesses - load that cross 64-byte cache line boundary",
20529a5511eaSIan Rogers        "MetricExpr": "tma_info_memory_load_miss_real_latency * LD_BLOCKS.NO_SR / tma_info_thread_clks",
2053aa205003SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
2054aa205003SIan Rogers        "MetricName": "tma_split_loads",
2055aa205003SIan Rogers        "MetricThreshold": "tma_split_loads > 0.2 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2056aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles handling memory load split accesses - load that cross 64-byte cache line boundary. Sample with: MEM_INST_RETIRED.SPLIT_LOADS_PS",
2057aa205003SIan Rogers        "ScaleUnit": "100%"
2058aa205003SIan Rogers    },
2059aa205003SIan Rogers    {
2060aa205003SIan Rogers        "BriefDescription": "This metric represents rate of split store accesses",
20619a5511eaSIan Rogers        "MetricExpr": "MEM_INST_RETIRED.SPLIT_STORES / tma_info_core_core_clks",
2062aa205003SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_issueSpSt;tma_store_bound_group",
2063aa205003SIan Rogers        "MetricName": "tma_split_stores",
2064aa205003SIan Rogers        "MetricThreshold": "tma_split_stores > 0.2 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2065aa205003SIan Rogers        "PublicDescription": "This metric represents rate of split store accesses.  Consider aligning your data to the 64-byte cache line granularity. Sample with: MEM_INST_RETIRED.SPLIT_STORES_PS. Related metrics: tma_port_4",
2066aa205003SIan Rogers        "ScaleUnit": "100%"
2067aa205003SIan Rogers    },
2068aa205003SIan Rogers    {
2069aa205003SIan Rogers        "BriefDescription": "This metric measures fraction of cycles where the Super Queue (SQ) was full taking into account all request-types and both hardware SMT threads (Logical Processors)",
20709a5511eaSIan Rogers        "MetricExpr": "(XQ.FULL_CYCLES + L1D_PEND_MISS.L2_STALLS) / tma_info_thread_clks",
2071*5ecf682eSIan Rogers        "MetricGroup": "BvMS;MemoryBW;Offcore;TopdownL4;tma_L4_group;tma_issueBW;tma_l3_bound_group",
2072aa205003SIan Rogers        "MetricName": "tma_sq_full",
2073aa205003SIan Rogers        "MetricThreshold": "tma_sq_full > 0.3 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
207453c83c79SIan Rogers        "PublicDescription": "This metric measures fraction of cycles where the Super Queue (SQ) was full taking into account all request-types and both hardware SMT threads (Logical Processors). Related metrics: tma_fb_full, tma_info_bottleneck_cache_memory_bandwidth, tma_info_system_dram_bw_use, tma_mem_bandwidth",
2075aa205003SIan Rogers        "ScaleUnit": "100%"
2076aa205003SIan Rogers    },
2077aa205003SIan Rogers    {
2078aa205003SIan Rogers        "BriefDescription": "This metric estimates how often CPU was stalled  due to RFO store memory accesses; RFO store issue a read-for-ownership request before the write",
20799a5511eaSIan Rogers        "MetricExpr": "EXE_ACTIVITY.BOUND_ON_STORES / tma_info_thread_clks",
2080aa205003SIan Rogers        "MetricGroup": "MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
2081aa205003SIan Rogers        "MetricName": "tma_store_bound",
2082aa205003SIan Rogers        "MetricThreshold": "tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
2083aa205003SIan Rogers        "PublicDescription": "This metric estimates how often CPU was stalled  due to RFO store memory accesses; RFO store issue a read-for-ownership request before the write. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should RFO stores be a bottleneck. Sample with: MEM_INST_RETIRED.ALL_STORES_PS",
2084aa205003SIan Rogers        "ScaleUnit": "100%"
2085aa205003SIan Rogers    },
2086aa205003SIan Rogers    {
2087aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of cycles when the memory subsystem had loads blocked since they could not forward data from earlier (in program order) overlapping stores",
20889a5511eaSIan Rogers        "MetricExpr": "13 * LD_BLOCKS.STORE_FORWARD / tma_info_thread_clks",
2089aa205003SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
2090aa205003SIan Rogers        "MetricName": "tma_store_fwd_blk",
2091aa205003SIan Rogers        "MetricThreshold": "tma_store_fwd_blk > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2092aa205003SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of cycles when the memory subsystem had loads blocked since they could not forward data from earlier (in program order) overlapping stores. To streamline memory operations in the pipeline; a load can avoid waiting for memory if a prior in-flight store is writing the data that the load wants to read (store forwarding process). However; in some cases the load may be blocked for a significant time pending the store forward. For example; when the prior store is writing a smaller region than the load is reading.",
2093aa205003SIan Rogers        "ScaleUnit": "100%"
2094aa205003SIan Rogers    },
2095aa205003SIan Rogers    {
2096aa205003SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles the CPU spent handling L1D store misses",
20979a5511eaSIan Rogers        "MetricExpr": "(MEM_STORE_RETIRED.L2_HIT * 10 * (1 - MEM_INST_RETIRED.LOCK_LOADS / MEM_INST_RETIRED.ALL_STORES) + (1 - MEM_INST_RETIRED.LOCK_LOADS / MEM_INST_RETIRED.ALL_STORES) * min(CPU_CLK_UNHALTED.THREAD, OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO)) / tma_info_thread_clks",
2098*5ecf682eSIan Rogers        "MetricGroup": "BvML;MemoryLat;Offcore;TopdownL4;tma_L4_group;tma_issueRFO;tma_issueSL;tma_store_bound_group",
2099aa205003SIan Rogers        "MetricName": "tma_store_latency",
2100aa205003SIan Rogers        "MetricThreshold": "tma_store_latency > 0.1 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2101aa205003SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles the CPU spent handling L1D store misses. Store accesses usually less impact out-of-order core performance; however; holding resources for longer time can lead into undesired implications (e.g. contention on L1D fill-buffer entries - see FB_Full). Related metrics: tma_fb_full, tma_lock_latency",
2102aa205003SIan Rogers        "ScaleUnit": "100%"
2103aa205003SIan Rogers    },
2104aa205003SIan Rogers    {
2105aa205003SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Store operations",
21069a5511eaSIan Rogers        "MetricExpr": "(UOPS_DISPATCHED.PORT_4_9 + UOPS_DISPATCHED.PORT_7_8) / (4 * tma_info_core_core_clks)",
2107aa205003SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_ports_utilized_3m_group",
2108aa205003SIan Rogers        "MetricName": "tma_store_op_utilization",
2109aa205003SIan Rogers        "MetricThreshold": "tma_store_op_utilization > 0.6",
2110aa205003SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Store operations. Sample with: UOPS_DISPATCHED.PORT_7_8",
2111aa205003SIan Rogers        "ScaleUnit": "100%"
2112aa205003SIan Rogers    },
2113aa205003SIan Rogers    {
2114aa205003SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles where the TLB was missed by store accesses, hitting in the second-level TLB (STLB)",
2115aa205003SIan Rogers        "MetricExpr": "tma_dtlb_store - tma_store_stlb_miss",
2116aa205003SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_store_group",
2117aa205003SIan Rogers        "MetricName": "tma_store_stlb_hit",
2118aa205003SIan Rogers        "MetricThreshold": "tma_store_stlb_hit > 0.05 & (tma_dtlb_store > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2119aa205003SIan Rogers        "ScaleUnit": "100%"
2120aa205003SIan Rogers    },
2121aa205003SIan Rogers    {
2122aa205003SIan Rogers        "BriefDescription": "This metric estimates the fraction of cycles where the STLB was missed by store accesses, performing a hardware page walk",
21239a5511eaSIan Rogers        "MetricExpr": "DTLB_STORE_MISSES.WALK_ACTIVE / tma_info_core_core_clks",
2124aa205003SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_store_group",
2125aa205003SIan Rogers        "MetricName": "tma_store_stlb_miss",
2126aa205003SIan Rogers        "MetricThreshold": "tma_store_stlb_miss > 0.05 & (tma_dtlb_store > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2127aa205003SIan Rogers        "ScaleUnit": "100%"
2128aa205003SIan Rogers    },
2129aa205003SIan Rogers    {
2130aa205003SIan Rogers        "BriefDescription": "This metric estimates how often CPU was stalled  due to Streaming store memory accesses; Streaming store optimize out a read request required by RFO stores",
21319a5511eaSIan Rogers        "MetricExpr": "9 * OCR.STREAMING_WR.ANY_RESPONSE / tma_info_thread_clks",
2132aa205003SIan Rogers        "MetricGroup": "MemoryBW;Offcore;TopdownL4;tma_L4_group;tma_issueSmSt;tma_store_bound_group",
2133aa205003SIan Rogers        "MetricName": "tma_streaming_stores",
2134aa205003SIan Rogers        "MetricThreshold": "tma_streaming_stores > 0.2 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2135aa205003SIan Rogers        "PublicDescription": "This metric estimates how often CPU was stalled  due to Streaming store memory accesses; Streaming store optimize out a read request required by RFO stores. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should Streaming stores be a bottleneck. Sample with: OCR.STREAMING_WR.ANY_RESPONSE. Related metrics: tma_fb_full",
2136aa205003SIan Rogers        "ScaleUnit": "100%"
2137aa205003SIan Rogers    },
2138aa205003SIan Rogers    {
2139aa205003SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to new branch address clears",
21409a5511eaSIan Rogers        "MetricExpr": "INT_MISC.UNKNOWN_BRANCH_CYCLES / tma_info_thread_clks",
2141*5ecf682eSIan Rogers        "MetricGroup": "BigFootprint;BvBC;FetchLat;TopdownL4;tma_L4_group;tma_branch_resteers_group",
2142aa205003SIan Rogers        "MetricName": "tma_unknown_branches",
2143aa205003SIan Rogers        "MetricThreshold": "tma_unknown_branches > 0.05 & (tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15))",
214453c83c79SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to new branch address clears. These are fetched branches the Branch Prediction Unit was unable to recognize (e.g. first time the branch is fetched or hitting BTB capacity limit) hence called Unknown Branches. Sample with: FRONTEND_RETIRED.UNKNOWN_BRANCH",
2145aa205003SIan Rogers        "ScaleUnit": "100%"
2146aa205003SIan Rogers    },
2147aa205003SIan Rogers    {
2148aa205003SIan Rogers        "BriefDescription": "This metric serves as an approximation of legacy x87 usage",
2149aa205003SIan Rogers        "MetricExpr": "tma_retiring * UOPS_EXECUTED.X87 / UOPS_EXECUTED.THREAD",
2150aa205003SIan Rogers        "MetricGroup": "Compute;TopdownL4;tma_L4_group;tma_fp_arith_group",
2151aa205003SIan Rogers        "MetricName": "tma_x87_use",
2152aa205003SIan Rogers        "MetricThreshold": "tma_x87_use > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6)",
2153aa205003SIan Rogers        "PublicDescription": "This metric serves as an approximation of legacy x87 usage. It accounts for instructions beyond X87 FP arithmetic operations; hence may be used as a thermometer to avoid X87 high usage and preferably upgrade to modern ISA. See Tip under Tuning Hint.",
2154aa205003SIan Rogers        "ScaleUnit": "100%"
2155aa205003SIan Rogers    },
2156aa205003SIan Rogers    {
2157aa205003SIan Rogers        "BriefDescription": "Percentage of cycles in aborted transactions.",
21588076dc8cSIan Rogers        "MetricExpr": "(max(cycles\\-t - cycles\\-ct, 0) / cycles if has_event(cycles\\-t) else 0)",
2159aa205003SIan Rogers        "MetricGroup": "transaction",
2160aa205003SIan Rogers        "MetricName": "tsx_aborted_cycles",
2161aa205003SIan Rogers        "ScaleUnit": "100%"
2162aa205003SIan Rogers    },
2163aa205003SIan Rogers    {
2164aa205003SIan Rogers        "BriefDescription": "Number of cycles within a transaction divided by the number of transactions.",
21658076dc8cSIan Rogers        "MetricExpr": "(cycles\\-t / tx\\-start if has_event(cycles\\-t) else 0)",
2166aa205003SIan Rogers        "MetricGroup": "transaction",
2167aa205003SIan Rogers        "MetricName": "tsx_cycles_per_transaction",
2168aa205003SIan Rogers        "ScaleUnit": "1cycles / transaction"
2169aa205003SIan Rogers    },
2170aa205003SIan Rogers    {
2171aa205003SIan Rogers        "BriefDescription": "Percentage of cycles within a transaction region.",
21728076dc8cSIan Rogers        "MetricExpr": "(cycles\\-t / cycles if has_event(cycles\\-t) else 0)",
2173aa205003SIan Rogers        "MetricGroup": "transaction",
2174aa205003SIan Rogers        "MetricName": "tsx_transactional_cycles",
2175aa205003SIan Rogers        "ScaleUnit": "100%"
21769a5511eaSIan Rogers    },
21779a5511eaSIan Rogers    {
21789a5511eaSIan Rogers        "BriefDescription": "Uncore operating frequency in GHz",
21799a5511eaSIan Rogers        "MetricExpr": "UNC_CHA_CLOCKTICKS / (source_count(UNC_CHA_CLOCKTICKS) * #num_packages) / 1e9 / duration_time",
21809a5511eaSIan Rogers        "MetricName": "uncore_frequency",
21819a5511eaSIan Rogers        "ScaleUnit": "1GHz"
21829a5511eaSIan Rogers    },
21839a5511eaSIan Rogers    {
218419dd49c9SIan Rogers        "BriefDescription": "Intel(R) Ultra Path Interconnect (UPI) data receive bandwidth (MB/sec)",
218519dd49c9SIan Rogers        "MetricExpr": "UNC_UPI_RxL_FLITS.ALL_DATA * 7.111111111111111 / 1e6 / duration_time",
218619dd49c9SIan Rogers        "MetricName": "upi_data_receive_bw",
218719dd49c9SIan Rogers        "ScaleUnit": "1MB/s"
218819dd49c9SIan Rogers    },
218919dd49c9SIan Rogers    {
21909a5511eaSIan Rogers        "BriefDescription": "Intel(R) Ultra Path Interconnect (UPI) data transmit bandwidth (MB/sec)",
21919a5511eaSIan Rogers        "MetricExpr": "UNC_UPI_TxL_FLITS.ALL_DATA * 7.111111111111111 / 1e6 / duration_time",
21929a5511eaSIan Rogers        "MetricName": "upi_data_transmit_bw",
21939a5511eaSIan Rogers        "ScaleUnit": "1MB/s"
219412265782SZhengjun Xing    }
219512265782SZhengjun Xing]
2196