Skip to content

Commit 112554d

Browse files
authored
Merge pull request #74 from intel/prep150
support for Granite Rapids w/o TMA
2 parents 4ec6d4d + 8ed2adc commit 112554d

8 files changed

+367
-75
lines changed

Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ build-public/postprocess:
4949
--add-data "./events/metric_spr_emr.json:." \
5050
--add-data "./events/metric_spr_emr_nofixedtma.json:." \
5151
--add-data "./events/metric_srf.json:." \
52+
--add-data "./events/metric_gnr.json:." \
5253
--add-data "./src/base.html:." \
5354
--runtime-tmpdir . \
5455
--exclude-module readline

_version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.4.2
1+
1.5.0

events/gnr.txt

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
###########################################################################################################
2+
# Copyright (C) 2021-2023 Intel Corporation
3+
# SPDX-License-Identifier: BSD-3-Clause
4+
###########################################################################################################
5+
6+
# GraniteRapids event list
7+
8+
cpu/event=0xd0,umask=0x21,cmask=0x00,name='MEM_INST_RETIRED.LOCK_LOADS'/,
9+
cpu/event=0x51,umask=0x01,cmask=0x00,name='L1D.REPLACEMENT'/,
10+
cpu/event=0xd1,umask=0x01,cmask=0x00,name='MEM_LOAD_RETIRED.L1_HIT'/,
11+
cpu/event=0x24,umask=0xe4,cmask=0x00,name='L2_RQSTS.ALL_CODE_RD'/,
12+
cpu-cycles,
13+
ref-cycles,
14+
instructions;
15+
16+
cpu/event=0x79,umask=0x08,cmask=0x00,name='IDQ.DSB_UOPS'/,
17+
cpu/event=0x79,umask=0x04,cmask=0x00,name='IDQ.MITE_UOPS'/,
18+
cpu/event=0x79,umask=0x20,cmask=0x00,name='IDQ.MS_UOPS'/,
19+
cpu/event=0xa8,umask=0x01,cmask=0x00,name='LSD.UOPS'/,
20+
cpu-cycles,
21+
ref-cycles,
22+
instructions;
23+
24+
cpu/event=0x11,umask=0x0e,cmask=0x00,name='ITLB_MISSES.WALK_COMPLETED'/,
25+
cpu/event=0x12,umask=0x0e,cmask=0x00,name='DTLB_LOAD_MISSES.WALK_COMPLETED'/,
26+
cpu/event=0x13,umask=0x0e,cmask=0x00,name='DTLB_STORE_MISSES.WALK_COMPLETED'/,
27+
cpu/event=0x3c,umask=0x08,cmask=0x00,name='CPU_CLK_UNHALTED.REF_DISTRIBUTED'/,
28+
cpu/event=0x3c,umask=0x02,cmask=0x00,name='CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE'/,
29+
cpu-cycles,
30+
ref-cycles,
31+
instructions;
32+
33+
cpu/event=0xd1,umask=0x02,cmask=0x00,name='MEM_LOAD_RETIRED.L2_HIT'/,
34+
cpu/event=0x25,umask=0x1f,cmask=0x00,name='L2_LINES_IN.ALL'/,
35+
cpu/event=0xd1,umask=0x10,cmask=0x00,name='MEM_LOAD_RETIRED.L2_MISS'/,
36+
cpu/event=0x24,umask=0x24,cmask=0x00,name='L2_RQSTS.CODE_RD_MISS'/,
37+
cpu/event=0xad,umask=0x10,cmask=0x00,name='INT_MISC.UOP_DROPPING'/,
38+
cpu-cycles,
39+
ref-cycles,
40+
instructions;
41+
42+
cpu/event=0x00,umask=0x04,period=10000003,name='TOPDOWN.SLOTS'/,
43+
cpu/event=0x00,umask=0x81,period=10000003,name='PERF_METRICS.BAD_SPECULATION'/,
44+
cpu/event=0x00,umask=0x83,period=10000003,name='PERF_METRICS.BACKEND_BOUND'/,
45+
cpu/event=0x00,umask=0x82,period=10000003,name='PERF_METRICS.FRONTEND_BOUND'/,
46+
cpu/event=0x00,umask=0x80,period=10000003,name='PERF_METRICS.RETIRING'/,
47+
cpu/event=0x00,umask=0x86,period=10000003,name='PERF_METRICS.FETCH_LATENCY'/,
48+
cpu/event=0x00,umask=0x87,period=10000003,name='PERF_METRICS.MEMORY_BOUND'/,
49+
cpu/event=0x00,umask=0x85,period=10000003,name='PERF_METRICS.BRANCH_MISPREDICTS'/,
50+
cpu/event=0x00,umask=0x84,period=10000003,name='PERF_METRICS.HEAVY_OPERATIONS'/,
51+
cpu-cycles,
52+
ref-cycles,
53+
instructions;
54+
55+
# kernel
56+
cpu-cycles:k,
57+
ref-cycles:k,
58+
instructions:k;
59+
60+
# C6
61+
cstate_core/c6-residency/;
62+
cstate_pkg/c6-residency/;
63+
64+
# UPI
65+
upi/event=0x02,umask=0x0f,name='UNC_UPI_TxL_FLITS.ALL_DATA'/;
66+
67+
# CHA (Cache)
68+
cha/event=0x35,umask=0xc80ffe01,name='UNC_CHA_TOR_INSERTS.IA_MISS_CRD'/,
69+
cha/event=0x35,umask=0xc8177e01,name='UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE'/,
70+
cha/event=0x36,umask=0xc8177e01,name='UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE'/;
71+
72+
cha/event=0x35,umask=0xC816FE01,name='UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL'/,
73+
cha/event=0x36,umask=0xc816fe01,name='UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_LOCAL'/,
74+
cha/event=0x35,umask=0xC896FE01,name='UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_LOCAL'/,
75+
cha/event=0x35,umask=0xC8977E01,name='UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF_REMOTE'/;
76+
77+
cha/event=0x35,umask=0xccd7fe01,name='UNC_CHA_TOR_INSERTS.IA_MISS_LLCPREFDATA'/,
78+
cha/event=0x35,umask=0xc817fe01,name='UNC_CHA_TOR_INSERTS.IA_MISS_DRD'/,
79+
cha/event=0x35,umask=0xc897fe01,name='UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF'/,
80+
cha/event=0x36,umask=0xC817fe01,name='UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD'/;
81+
82+
# CHA (IO Bandwidth)
83+
cha/event=0x35,umask=0xc8f3ff04,name='UNC_CHA_TOR_INSERTS.IO_PCIRDCUR'/,
84+
cha/event=0x35,umask=0xCC43FF04,name='UNC_CHA_TOR_INSERTS.IO_ITOM'/,
85+
cha/event=0x35,umask=0xCD43FF04,name='UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR'/,
86+
cha/event=0x01,umask=0x00,name='UNC_CHA_CLOCKTICKS'/;
87+
88+
# IMC (memory read/writes)
89+
imc/event=0x05,umask=0xCF,name='UNC_M_CAS_COUNT_SCH0.RD'/,
90+
imc/event=0x05,umask=0xF0,name='UNC_M_CAS_COUNT_SCH0.WR'/,
91+
imc/event=0x06,umask=0xCF,name='UNC_M_CAS_COUNT_SCH1.RD'/,
92+
imc/event=0x06,umask=0xF0,name='UNC_M_CAS_COUNT_SCH1.WR'/;
93+
94+
# power
95+
power/energy-pkg/,
96+
power/energy-ram/;

events/metric_gnr.json

+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
[
2+
{
3+
"name": "metric_CPU operating frequency (in GHz)",
4+
"expression": "([cpu-cycles] / [ref-cycles] * [SYSTEM_TSC_FREQ]) / 1000000000"
5+
},
6+
{
7+
"name": "metric_CPU utilization %",
8+
"expression": "100 * [ref-cycles] / [TSC]"
9+
},
10+
{
11+
"name": "metric_CPU utilization% in kernel mode",
12+
"expression": "100 * [ref-cycles:k] / [TSC]"
13+
},
14+
{
15+
"name": "metric_CPI",
16+
"name-txn": "metric_cycles per txn",
17+
"expression": "[cpu-cycles] / [instructions]",
18+
"expression-txn": "[cpu-cycles] / [TXN]"
19+
},
20+
{
21+
"name": "metric_kernel_CPI",
22+
"name-txn": "metric_kernel_cycles per txn",
23+
"expression": "[cpu-cycles:k] / [instructions:k]",
24+
"expression-txn": "[cpu-cycles:k] / [TXN]"
25+
},
26+
{
27+
"name": "metric_IPC",
28+
"name-txn": "metric_txn per cycle",
29+
"expression": "[instructions] / [cpu-cycles]",
30+
"expression-txn": "[TXN] / [cpu-cycles]"
31+
},
32+
{
33+
"name": "metric_giga_instructions_per_sec",
34+
"expression": "[instructions] / 1000000000"
35+
},
36+
{
37+
"name": "metric_locks retired per instr",
38+
"name-txn": "metric_locks retired per txn",
39+
"expression": "[MEM_INST_RETIRED.LOCK_LOADS] / [instructions]",
40+
"expression-txn": "[MEM_INST_RETIRED.LOCK_LOADS] / [TXN]"
41+
},
42+
{
43+
"name": "metric_L1D MPI (includes data+rfo w/ prefetches)",
44+
"name-txn": "metric_L1D misses per txn (includes data+rfo w/ prefetches)",
45+
"expression": "[L1D.REPLACEMENT] / [instructions]",
46+
"expression-txn": "[L1D.REPLACEMENT] / [TXN]"
47+
},
48+
{
49+
"name": "metric_L1D demand data read hits per instr",
50+
"name-txn": "metric_L1D demand data read hits per txn",
51+
"expression": "[MEM_LOAD_RETIRED.L1_HIT] / [instructions]",
52+
"expression-txn": "[MEM_LOAD_RETIRED.L1_HIT] / [TXN]"
53+
},
54+
{
55+
"name": "metric_L1-I code read misses (w/ prefetches) per instr",
56+
"name-txn": "metric_L1I code read misses (includes prefetches) per txn",
57+
"expression": "[L2_RQSTS.ALL_CODE_RD] / [instructions]",
58+
"expression-txn": "[L2_RQSTS.ALL_CODE_RD] / [TXN]"
59+
},
60+
{
61+
"name": "metric_L2 demand data read hits per instr",
62+
"name-txn": "metric_L2 demand data read hits per txn",
63+
"expression": "[MEM_LOAD_RETIRED.L2_HIT] / [instructions]",
64+
"expression-txn": "[MEM_LOAD_RETIRED.L2_HIT] / [TXN]"
65+
},
66+
{
67+
"name": "metric_L2 MPI (includes code+data+rfo w/ prefetches)",
68+
"name-txn": "metric_L2 misses per txn (includes code+data+rfo w/ prefetches)",
69+
"expression": "[L2_LINES_IN.ALL] / [instructions]",
70+
"expression-txn": "[L2_LINES_IN.ALL] / [TXN]"
71+
},
72+
{
73+
"name": "metric_L2 demand data read MPI",
74+
"name-txn": "metric_L2 demand data read misses per txn",
75+
"expression": "[MEM_LOAD_RETIRED.L2_MISS] / [instructions]",
76+
"expression-txn": "[MEM_LOAD_RETIRED.L2_MISS] / [TXN]"
77+
},
78+
{
79+
"name": "metric_L2 demand code MPI",
80+
"name-txn": "metric_L2 demand code misses per txn",
81+
"expression": "[L2_RQSTS.CODE_RD_MISS] / [instructions]",
82+
"expression-txn": "[L2_RQSTS.CODE_RD_MISS] / [TXN]"
83+
},
84+
{
85+
"name": "metric_LLC code read MPI (demand+prefetch)",
86+
"name-txn": "metric_LLC code read (demand+prefetch) misses per txn",
87+
"expression": "[UNC_CHA_TOR_INSERTS.IA_MISS_CRD] / [instructions]",
88+
"expression-txn": "[UNC_CHA_TOR_INSERTS.IA_MISS_CRD] / [TXN]"
89+
},
90+
{
91+
"name": "metric_LLC data read MPI (demand+prefetch)",
92+
"name-txn": "metric_LLC data read (demand+prefetch) misses per txn",
93+
"expression": "([UNC_CHA_TOR_INSERTS.IA_MISS_LLCPREFDATA] + [UNC_CHA_TOR_INSERTS.IA_MISS_DRD] + [UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF]) / [instructions]",
94+
"expression-txn": "([UNC_CHA_TOR_INSERTS.IA_MISS_LLCPREFDATA] + [UNC_CHA_TOR_INSERTS.IA_MISS_DRD] + [UNC_CHA_TOR_INSERTS.IA_MISS_DRD_PREF]) / [TXN]"
95+
},
96+
{
97+
"name": "metric_Average LLC demand data read miss latency (in ns)",
98+
"expression": "( 1000000000 * ([UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD] / [UNC_CHA_TOR_INSERTS.IA_MISS_DRD]) / ([UNC_CHA_CLOCKTICKS] / ([CHAS_PER_SOCKET] * [SOCKET_COUNT]) ) ) * 1"
99+
},
100+
{
101+
"name": "metric_Average LLC demand data read miss latency for LOCAL requests (in ns)",
102+
"expression": "( 1000000000 * ([UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_LOCAL] / [UNC_CHA_TOR_INSERTS.IA_MISS_DRD_LOCAL]) / ([UNC_CHA_CLOCKTICKS] / ([CHAS_PER_SOCKET] * [SOCKET_COUNT]) ) ) * 1"
103+
},
104+
{
105+
"name": "metric_Average LLC demand data read miss latency for REMOTE requests (in ns)",
106+
"expression": "( 1000000000 * ([UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE] / [UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE]) / ([UNC_CHA_CLOCKTICKS] / ([CHAS_PER_SOCKET] * [SOCKET_COUNT]) ) ) * 1"
107+
},
108+
{
109+
"name": "metric_UPI Data transmit BW (MB/sec) (only data)",
110+
"expression": "([UNC_UPI_TxL_FLITS.ALL_DATA] * (64 / 9.0) / 1000000) / 1"
111+
},
112+
{
113+
"name": "metric_package power (watts)",
114+
"expression": "[power/energy-pkg/]"
115+
},
116+
{
117+
"name": "metric_DRAM power (watts)",
118+
"expression": "[power/energy-ram/]"
119+
},
120+
{
121+
"name": "metric_core c6 residency %",
122+
"expression": "100 * [cstate_core/c6-residency/] / [TSC]"
123+
},
124+
{
125+
"name": "metric_package c6 residency %",
126+
"expression": "100 * [cstate_pkg/c6-residency/] * [CORES_PER_SOCKET] / [TSC]"
127+
},
128+
{
129+
"name": "metric_% Uops delivered from decoded Icache (DSB)",
130+
"expression": "100 * ([IDQ.DSB_UOPS] / ([IDQ.DSB_UOPS] + [IDQ.MITE_UOPS] + [IDQ.MS_UOPS] + [LSD.UOPS]) )"
131+
},
132+
{
133+
"name": "metric_% Uops delivered from legacy decode pipeline (MITE)",
134+
"expression": "100 * ([IDQ.MITE_UOPS] / ([IDQ.DSB_UOPS] + [IDQ.MITE_UOPS] + [IDQ.MS_UOPS] + [LSD.UOPS]) )"
135+
},
136+
{
137+
"name": "metric_memory bandwidth read (MB/sec)",
138+
"expression": "(([UNC_M_CAS_COUNT_SCH0.RD] + [UNC_M_CAS_COUNT_SCH1.RD]) * 64 / 1000000) / 1"
139+
},
140+
{
141+
"name": "metric_memory bandwidth write (MB/sec)",
142+
"expression": "(([UNC_M_CAS_COUNT_SCH0.WR] + [UNC_M_CAS_COUNT_SCH1.WR]) * 64 / 1000000) / 1"
143+
},
144+
{
145+
"name": "metric_memory bandwidth total (MB/sec)",
146+
"expression": "(([UNC_M_CAS_COUNT_SCH0.RD] + [UNC_M_CAS_COUNT_SCH1.RD] + [UNC_M_CAS_COUNT_SCH0.WR] + [UNC_M_CAS_COUNT_SCH1.WR]) * 64 / 1000000) / 1"
147+
},
148+
{
149+
"name": "metric_ITLB (2nd level) MPI",
150+
"name-txn": "metric_ITLB (2nd level) misses per txn",
151+
"expression": "[ITLB_MISSES.WALK_COMPLETED] / [instructions]",
152+
"expression-txn": "[ITLB_MISSES.WALK_COMPLETED] / [TXN]"
153+
},
154+
{
155+
"name": "metric_DTLB (2nd level) load MPI",
156+
"name-txn": "metric_DTLB (2nd level) load misses per txn",
157+
"expression": "[DTLB_LOAD_MISSES.WALK_COMPLETED] / [instructions]",
158+
"expression-txn": "[DTLB_LOAD_MISSES.WALK_COMPLETED] / [TXN]"
159+
},
160+
{
161+
"name": "metric_DTLB (2nd level) store MPI",
162+
"name-txn": "metric_DTLB (2nd level) store misses per txn",
163+
"expression": "[DTLB_STORE_MISSES.WALK_COMPLETED] / [instructions]",
164+
"expression-txn": "[DTLB_STORE_MISSES.WALK_COMPLETED] / [TXN]"
165+
},
166+
{
167+
"name": "metric_NUMA %_Reads addressed to local DRAM",
168+
"expression": "100 * ([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])"
169+
},
170+
{
171+
"name": "metric_NUMA %_Reads addressed to remote DRAM",
172+
"expression": "100 * ([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])"
173+
},
174+
{
175+
"name": "metric_uncore frequency GHz",
176+
"expression": "([UNC_CHA_CLOCKTICKS] / ([CHAS_PER_SOCKET] * [SOCKET_COUNT]) / 1000000000) / 1"
177+
},
178+
{
179+
"name": "metric_IO_bandwidth_disk_or_network_writes (MB/sec)",
180+
"expression": "([UNC_CHA_TOR_INSERTS.IO_PCIRDCUR] * 64 / 1000000) / 1"
181+
},
182+
{
183+
"name": "metric_IO_bandwidth_disk_or_network_reads (MB/sec)",
184+
"expression": "(([UNC_CHA_TOR_INSERTS.IO_ITOM] + [UNC_CHA_TOR_INSERTS.IO_ITOMCACHENEAR]) * 64 / 1000000) / 1"
185+
}
186+
]

perf-collect.py

+22-9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"SapphireRapids",
2929
"EmeraldRapids",
3030
"SierraForest",
31+
"GraniteRapids",
3132
]
3233

3334

@@ -58,10 +59,11 @@ def write_metadata(
5859
modified.write("CORES_PER_SOCKET," + str(perf_helpers.get_cpu_count()) + ",\n")
5960
modified.write("SOCKET_COUNT," + str(perf_helpers.get_socket_count()) + ",\n")
6061
modified.write("HYPERTHREADING_ON," + str(perf_helpers.get_ht_status()) + ",\n")
61-
imc, cha, upi = perf_helpers.get_imc_cha_upi_count()
62-
modified.write("IMC count," + str(imc) + ",\n")
63-
modified.write("CHAS_PER_SOCKET," + str(cha) + ",\n")
64-
modified.write("UPI count," + str(upi) + ",\n")
62+
counts = perf_helpers.get_unc_device_counts()
63+
modified.write("IMC count," + str(counts["imc"]) + ",\n")
64+
modified.write("CHAS_PER_SOCKET," + str(counts["cha"]) + ",\n")
65+
modified.write("UPI count," + str(counts["upi"]) + ",\n")
66+
modified.write("B2CMI count, " + str(counts["b2cmi"]) + ",\n")
6567
modified.write("Architecture," + str(arch) + ",\n")
6668
modified.write("Model," + str(cpuname) + ",\n")
6769
modified.write("kernel version," + perf_helpers.get_version() + "\n")
@@ -190,12 +192,14 @@ def fixed_tma_supported():
190192
return False
191193
try:
192194
if events["TOPDOWN.SLOTS"] == events["PERF_METRICS.BAD_SPECULATION"]:
195+
logging.debug("TOPDOWN.SLOTS and PERF_METRICS.BAD_SPECULATION are equal")
193196
return False
194197
except KeyError:
195198
logging.debug("Failed to find required events in fixed_tma_supported()")
196199
return False
197200

198201
if events["TOPDOWN.SLOTS"] == 0 or events["PERF_METRICS.BAD_SPECULATION"] == 0:
202+
logging.debug("TOPDOWN.SLOTS or PERF_METRICS.BAD_SPECULATION count is 0")
199203
return False
200204

201205
return True
@@ -212,6 +216,7 @@ def fixed_event_supported(arch, event):
212216
or arch == "sapphirerapids"
213217
or arch == "emeraldrapids"
214218
or arch == "sierraforest"
219+
or arch == "graniterapids"
215220
):
216221
num_gp_counters = 8
217222
else:
@@ -303,6 +308,8 @@ def get_eventfile_path(arch, script_path, supports_tma_fixed_events):
303308
eventfile = "spr_emr_nofixedtma.txt"
304309
elif arch == "sierraforest":
305310
eventfile = "srf.txt"
311+
elif arch == "graniterapids":
312+
eventfile = "gnr.txt"
306313

307314
if eventfile is None:
308315
return None
@@ -454,7 +461,12 @@ def get_eventfile_path(arch, script_path, supports_tma_fixed_events):
454461
# The fixed-purpose PMU counters for TMA events are not supported on architectures older than Icelake
455462
# They are also not supported on some VMs, e.g., AWS ICX and SPR VMs
456463
supports_tma_fixed_events = False
457-
if arch == "icelake" or arch == "sapphirerapids" or arch == "emeraldrapids":
464+
if (
465+
arch == "icelake"
466+
or arch == "sapphirerapids"
467+
or arch == "emeraldrapids"
468+
or arch == "graniterapids"
469+
):
458470
supports_tma_fixed_events = fixed_tma_supported()
459471
if not supports_tma_fixed_events:
460472
logging.warning(
@@ -561,10 +573,11 @@ def get_eventfile_path(arch, script_path, supports_tma_fixed_events):
561573
logging.info("Cores per socket: " + str(perf_helpers.get_cpu_count()))
562574
logging.info("Socket: " + str(perf_helpers.get_socket_count()))
563575
logging.info("Hyperthreading on: " + str(perf_helpers.get_ht_status()))
564-
imc, cha, upi = perf_helpers.get_imc_cha_upi_count()
565-
logging.info("IMC count: " + str(imc))
566-
logging.info("CHA per socket: " + str(cha))
567-
logging.info("UPI count: " + str(upi))
576+
counts = perf_helpers.get_unc_device_counts()
577+
logging.info("IMC count: " + str(counts["imc"]))
578+
logging.info("CHA per socket: " + str(counts["cha"]))
579+
logging.info("UPI count: " + str(counts["upi"]))
580+
logging.info("B2CMI count: " + str(counts["b2cmi"]))
568581
logging.info("PerfSpect version: " + perf_helpers.get_tool_version())
569582
if args.verbose:
570583
logging.info("/sys/devices/: " + str(sys_devs))

perf-collect.spec

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ block_cipher = None
77
a = Analysis(
88
['perf-collect.py'],
99
pathex=[],
10-
datas=[('./src/libtsc.so', '.'), ('./events/bdx.txt', '.'), ('./events/clx_skx.txt', '.'), ('./events/icx.txt', '.'), ('./events/icx_nofixedtma.txt', '.'), ('./events/spr_emr.txt', '.'), ('./events/spr_emr_nofixedtma.txt', '.'), ('./events/srf.txt', '.')],
10+
datas=[('./src/libtsc.so', '.'), ('./events/bdx.txt', '.'), ('./events/clx_skx.txt', '.'), ('./events/icx.txt', '.'), ('./events/icx_nofixedtma.txt', '.'), ('./events/spr_emr.txt', '.'), ('./events/spr_emr_nofixedtma.txt', '.'), ('./events/srf.txt', '.'), ('./events/gnr.txt', '.')],
1111
hiddenimports=[],
1212
hookspath=[],
1313
hooksconfig={},

perf-postprocess.py

+2
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,8 @@ def get_metric_file_name(microarchitecture, fixed_tma_supported):
451451
metric_file = "metric_spr_emr_nofixedtma.json"
452452
elif microarchitecture == "sierraforest":
453453
metric_file = "metric_srf.json"
454+
elif microarchitecture == "graniterapids":
455+
metric_file = "metric_gnr.json"
454456
else:
455457
crash("Suitable metric file not found")
456458

0 commit comments

Comments
 (0)