* [PATCH] usertools: enhance logic to display NUMA
@ 2022-03-26 7:32 Vipin Varghese
2022-03-26 9:46 ` Thomas Monjalon
2023-07-11 15:42 ` Stephen Hemminger
0 siblings, 2 replies; 15+ messages in thread
From: Vipin Varghese @ 2022-03-26 7:32 UTC (permalink / raw)
To: thomas, david.marchand; +Cc: vipin.varghese, sivaprasad.tummala, dev
enhance python logic to accomadate NUMA information. Current logic
considers physical socket with CPU threads to core map. With new
AMD SKU vairant NUMA is no longer same as SOCKET. Single physical
socket can be partitioned to variant of 1,2 and 4.
The changes address the new mapping with Socket-NUMA to CPU cores.
Signed-off-by: Vipin Varghese <vipin.varghese@amd.com>
---
usertools/cpu_layout.py | 76 +++++++++++++++++++++++++----------------
1 file changed, 47 insertions(+), 29 deletions(-)
diff --git a/usertools/cpu_layout.py b/usertools/cpu_layout.py
index 891b9238fa..295f2c0e9b 100755
--- a/usertools/cpu_layout.py
+++ b/usertools/cpu_layout.py
@@ -3,13 +3,27 @@
# Copyright(c) 2010-2014 Intel Corporation
# Copyright(c) 2017 Cavium, Inc. All rights reserved.
+import glob
+import os
+
sockets = []
cores = []
+numaNodes = []
core_map = {}
+numa_map = {}
+node_path = "/sys/devices/system/node"
base_path = "/sys/devices/system/cpu"
-fd = open("{}/kernel_max".format(base_path))
-max_cpus = int(fd.read())
-fd.close()
+max_cpus = 0
+
+if os.path.isdir(base_path):
+ temp_maxCpu = glob.glob(base_path + '/cpu[0-9]*')
+ max_cpus = len(temp_maxCpu)
+
+if os.path.isdir(node_path):
+ temp_numaNodes = glob.glob(node_path + '/node*')
+ for numaId in range(0, int(os.path.basename(temp_numaNodes[-1])[4:]) + 1):
+ numaNodes.append(numaId)
+
for cpu in range(max_cpus + 1):
try:
fd = open("{}/cpu{}/topology/core_id".format(base_path, cpu))
@@ -17,48 +31,52 @@
continue
core = int(fd.read())
fd.close()
+
+ tempGet_cpuNuma = glob.glob("{}/cpu{}/node*".format(base_path, cpu))
+ temp_cpuNuma = tempGet_cpuNuma[-1].split("{}/cpu{}/".format(base_path, cpu))[-1]
+ numa = temp_cpuNuma.split("node")[-1]
+
fd = open("{}/cpu{}/topology/physical_package_id".format(base_path, cpu))
socket = int(fd.read())
fd.close()
+
if core not in cores:
cores.append(core)
+
if socket not in sockets:
sockets.append(socket)
+
key = (socket, core)
if key not in core_map:
core_map[key] = []
core_map[key].append(cpu)
+ key = (socket, numa)
+ if key not in numa_map:
+ numa_map[key] = []
+
+ if (core_map[(socket, core)] not in numa_map[key]):
+ numa_map[key].append(core_map[(socket, core)])
+
print(format("=" * (47 + len(base_path))))
print("Core and Socket Information (as reported by '{}')".format(base_path))
print("{}\n".format("=" * (47 + len(base_path))))
print("cores = ", cores)
+print("numa nodes per socket = ", numaNodes)
print("sockets = ", sockets)
print("")
-max_processor_len = len(str(len(cores) * len(sockets) * 2 - 1))
-max_thread_count = len(list(core_map.values())[0])
-max_core_map_len = (max_processor_len * max_thread_count) \
- + len(", ") * (max_thread_count - 1) \
- + len('[]') + len('Socket ')
-max_core_id_len = len(str(max(cores)))
-
-output = " ".ljust(max_core_id_len + len('Core '))
-for s in sockets:
- output += " Socket %s" % str(s).ljust(max_core_map_len - len('Socket '))
-print(output)
-
-output = " ".ljust(max_core_id_len + len('Core '))
-for s in sockets:
- output += " --------".ljust(max_core_map_len)
- output += " "
-print(output)
-
-for c in cores:
- output = "Core %s" % str(c).ljust(max_core_id_len)
- for s in sockets:
- if (s, c) in core_map:
- output += " " + str(core_map[(s, c)]).ljust(max_core_map_len)
- else:
- output += " " * (max_core_map_len + 1)
- print(output)
+for keys in numa_map:
+ print ("")
+ socket,numa = keys
+
+ output = " Socket " + str(socket).ljust(3, ' ') + " Numa " + str(numa).zfill(1) + " "
+ #output = " Socket " + str(socket).zfill(1) + " Numa " + str(numa).zfill(1) + " "
+ print(output)
+ print(format("-" * len(output)))
+
+ for index,coreSibling in enumerate(numa_map[keys]):
+ print ("Core " + str(index).ljust(3, ' ') + " " + str(coreSibling))
+ #print ("Core " + str(index).zfill(3) + " " + str(coreSibling))
+print("")
+
--
2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2022-03-26 7:32 [PATCH] usertools: enhance logic to display NUMA Vipin Varghese
@ 2022-03-26 9:46 ` Thomas Monjalon
2022-03-28 2:56 ` Varghese, Vipin
2023-07-11 15:42 ` Stephen Hemminger
1 sibling, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2022-03-26 9:46 UTC (permalink / raw)
To: Vipin Varghese; +Cc: david.marchand, sivaprasad.tummala, dev
26/03/2022 08:32, Vipin Varghese:
> enhance python logic to accomadate NUMA information. Current logic
> considers physical socket with CPU threads to core map. With new
> AMD SKU vairant NUMA is no longer same as SOCKET. Single physical
> socket can be partitioned to variant of 1,2 and 4.
>
> The changes address the new mapping with Socket-NUMA to CPU cores.
>
> Signed-off-by: Vipin Varghese <vipin.varghese@amd.com>
> ---
> usertools/cpu_layout.py | 76 +++++++++++++++++++++++++----------------
> 1 file changed, 47 insertions(+), 29 deletions(-)
Honestly, I'm not sure it is a good idea to keep this script in the DPDK repo.
Can it be replaced with hwloc usage?
What is the output on the new AMD SKU for this command?
lstopo-no-graphics --merge
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH] usertools: enhance logic to display NUMA
2022-03-26 9:46 ` Thomas Monjalon
@ 2022-03-28 2:56 ` Varghese, Vipin
2022-03-28 7:44 ` Tummala, Sivaprasad
2023-06-14 10:48 ` Ferruh Yigit
0 siblings, 2 replies; 15+ messages in thread
From: Varghese, Vipin @ 2022-03-28 2:56 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: david.marchand, Tummala, Sivaprasad, dev
[AMD Official Use Only]
Hi Thomas,
<snipp>
26/03/2022 08:32, Vipin Varghese:
> enhance python logic to accomadate NUMA information. Current logic
> considers physical socket with CPU threads to core map. With new AMD
> SKU vairant NUMA is no longer same as SOCKET. Single physical socket
> can be partitioned to variant of 1,2 and 4.
>
> The changes address the new mapping with Socket-NUMA to CPU cores.
>
> Signed-off-by: Vipin Varghese <vipin.varghese@amd.com>
> ---
> usertools/cpu_layout.py | 76
> +++++++++++++++++++++++++----------------
> 1 file changed, 47 insertions(+), 29 deletions(-)
Honestly, I'm not sure it is a good idea to keep this script in the DPDK repo.
Can it be replaced with hwloc usage?
thanks for the suggestion, it is genuine and useful. Following is my observations
- It takes some effort to identify the NUMA with `Group`
- One needs to install ` lstopo-no-graphics` on distro and manually build and add on custom Linux.
What is the output on the new AMD SKU for this command?
lstopo-no-graphics --merge
I have tried ` lstopo-no-graphics --merge` on a ` 2 Socket AMD EPYC 7713 64-Core Processor` with
possible NUMA configuration such as 1, 2 and 4.
```
$ lstopo-no-graphics --merge
Machine (503GB total)
Package L#0
Group0 L#0
NUMANode L#0 (P#0 126GB)
L3 L#0 (32MB)
Core L#0
PU L#0 (P#0)
PU L#1 (P#128)
Core L#1
PU L#2 (P#1)
PU L#3 (P#129)
Core L#2
PU L#4 (P#2)
PU L#5 (P#130)
Core L#3
PU L#6 (P#3)
PU L#7 (P#131)
Core L#4
PU L#8 (P#4)
PU L#9 (P#132)
Core L#5
PU L#10 (P#5)
PU L#11 (P#133)
Core L#6
PU L#12 (P#6)
PU L#13 (P#134)
Core L#7
PU L#14 (P#7)
PU L#15 (P#135)
L3 L#1 (32MB)
Core L#8
PU L#16 (P#8)
PU L#17 (P#136)
Core L#9
PU L#18 (P#9)
PU L#19 (P#137)
Core L#10
PU L#20 (P#10)
PU L#21 (P#138)
Core L#11
PU L#22 (P#11)
PU L#23 (P#139)
Core L#12
PU L#24 (P#12)
PU L#25 (P#140)
Core L#13
PU L#26 (P#13)
PU L#27 (P#141)
Core L#14
PU L#28 (P#14)
PU L#29 (P#142)
Core L#15
PU L#30 (P#15)
PU L#31 (P#143)
L3 L#2 (32MB)
Core L#16
PU L#32 (P#16)
PU L#33 (P#144)
Core L#17
PU L#34 (P#17)
PU L#35 (P#145)
Core L#18
PU L#36 (P#18)
PU L#37 (P#146)
Core L#19
PU L#38 (P#19)
PU L#39 (P#147)
Core L#20
PU L#40 (P#20)
PU L#41 (P#148)
Core L#21
PU L#42 (P#21)
PU L#43 (P#149)
Core L#22
PU L#44 (P#22)
PU L#45 (P#150)
Core L#23
PU L#46 (P#23)
PU L#47 (P#151)
L3 L#3 (32MB)
Core L#24
PU L#48 (P#24)
PU L#49 (P#152)
Core L#25
PU L#50 (P#25)
PU L#51 (P#153)
Core L#26
PU L#52 (P#26)
PU L#53 (P#154)
Core L#27
PU L#54 (P#27)
PU L#55 (P#155)
Core L#28
PU L#56 (P#28)
PU L#57 (P#156)
Core L#29
PU L#58 (P#29)
PU L#59 (P#157)
Core L#30
PU L#60 (P#30)
PU L#61 (P#158)
Core L#31
PU L#62 (P#31)
PU L#63 (P#159)
HostBridge
PCIBridge
PCI 41:00.0 (Ethernet)
Net "ens1f0"
OpenFabrics "mlx5_0"
PCI 41:00.1 (Ethernet)
Net "ens1f1"
OpenFabrics "mlx5_1"
HostBridge
PCIBridge
PCI 63:00.0 (Ethernet)
Net "eno12399np0"
PCI 63:00.1 (Ethernet)
Net "eno12409np1"
PCIBridge
PCIBridge
PCI 62:00.0 (VGA)
Group0 L#1
NUMANode L#1 (P#1 126GB)
L3 L#4 (32MB)
Core L#32
PU L#64 (P#32)
PU L#65 (P#160)
Core L#33
PU L#66 (P#33)
PU L#67 (P#161)
Core L#34
PU L#68 (P#34)
PU L#69 (P#162)
Core L#35
PU L#70 (P#35)
PU L#71 (P#163)
Core L#36
PU L#72 (P#36)
PU L#73 (P#164)
Core L#37
PU L#74 (P#37)
PU L#75 (P#165)
Core L#38
PU L#76 (P#38)
PU L#77 (P#166)
Core L#39
PU L#78 (P#39)
PU L#79 (P#167)
L3 L#5 (32MB)
Core L#40
PU L#80 (P#40)
PU L#81 (P#168)
Core L#41
PU L#82 (P#41)
PU L#83 (P#169)
Core L#42
PU L#84 (P#42)
PU L#85 (P#170)
Core L#43
PU L#86 (P#43)
PU L#87 (P#171)
Core L#44
PU L#88 (P#44)
PU L#89 (P#172)
Core L#45
PU L#90 (P#45)
PU L#91 (P#173)
Core L#46
PU L#92 (P#46)
PU L#93 (P#174)
Core L#47
PU L#94 (P#47)
PU L#95 (P#175)
L3 L#6 (32MB)
Core L#48
PU L#96 (P#48)
PU L#97 (P#176)
Core L#49
PU L#98 (P#49)
PU L#99 (P#177)
Core L#50
PU L#100 (P#50)
PU L#101 (P#178)
Core L#51
PU L#102 (P#51)
PU L#103 (P#179)
Core L#52
PU L#104 (P#52)
PU L#105 (P#180)
Core L#53
PU L#106 (P#53)
PU L#107 (P#181)
Core L#54
PU L#108 (P#54)
PU L#109 (P#182)
Core L#55
PU L#110 (P#55)
PU L#111 (P#183)
L3 L#7 (32MB)
Core L#56
PU L#112 (P#56)
PU L#113 (P#184)
Core L#57
PU L#114 (P#57)
PU L#115 (P#185)
Core L#58
PU L#116 (P#58)
PU L#117 (P#186)
Core L#59
PU L#118 (P#59)
PU L#119 (P#187)
Core L#60
PU L#120 (P#60)
PU L#121 (P#188)
Core L#61
PU L#122 (P#61)
PU L#123 (P#189)
Core L#62
PU L#124 (P#62)
PU L#125 (P#190)
Core L#63
PU L#126 (P#63)
PU L#127 (P#191)
HostBridge
PCIBridge
PCI 01:00.0 (RAID)
PCIBridge
PCI 02:00.0 (SATA)
Block(Disk) "sda"
HostBridge
PCIBridge
PCI 22:00.0 (NVMExp)
Block(Disk) "nvme0n1"
Package L#1
Group0 L#2
NUMANode L#2 (P#2 126GB)
L3 L#8 (32MB)
Core L#64
PU L#128 (P#64)
PU L#129 (P#192)
Core L#65
PU L#130 (P#65)
PU L#131 (P#193)
Core L#66
PU L#132 (P#66)
PU L#133 (P#194)
Core L#67
PU L#134 (P#67)
PU L#135 (P#195)
Core L#68
PU L#136 (P#68)
PU L#137 (P#196)
Core L#69
PU L#138 (P#69)
PU L#139 (P#197)
Core L#70
PU L#140 (P#70)
PU L#141 (P#198)
Core L#71
PU L#142 (P#71)
PU L#143 (P#199)
L3 L#9 (32MB)
Core L#72
PU L#144 (P#72)
PU L#145 (P#200)
Core L#73
PU L#146 (P#73)
PU L#147 (P#201)
Core L#74
PU L#148 (P#74)
PU L#149 (P#202)
Core L#75
PU L#150 (P#75)
PU L#151 (P#203)
Core L#76
PU L#152 (P#76)
PU L#153 (P#204)
Core L#77
PU L#154 (P#77)
PU L#155 (P#205)
Core L#78
PU L#156 (P#78)
PU L#157 (P#206)
Core L#79
PU L#158 (P#79)
PU L#159 (P#207)
L3 L#10 (32MB)
Core L#80
PU L#160 (P#80)
PU L#161 (P#208)
Core L#81
PU L#162 (P#81)
PU L#163 (P#209)
Core L#82
PU L#164 (P#82)
PU L#165 (P#210)
Core L#83
PU L#166 (P#83)
PU L#167 (P#211)
Core L#84
PU L#168 (P#84)
PU L#169 (P#212)
Core L#85
PU L#170 (P#85)
PU L#171 (P#213)
Core L#86
PU L#172 (P#86)
PU L#173 (P#214)
Core L#87
PU L#174 (P#87)
PU L#175 (P#215)
L3 L#11 (32MB)
Core L#88
PU L#176 (P#88)
PU L#177 (P#216)
Core L#89
PU L#178 (P#89)
PU L#179 (P#217)
Core L#90
PU L#180 (P#90)
PU L#181 (P#218)
Core L#91
PU L#182 (P#91)
PU L#183 (P#219)
Core L#92
PU L#184 (P#92)
PU L#185 (P#220)
Core L#93
PU L#186 (P#93)
PU L#187 (P#221)
Core L#94
PU L#188 (P#94)
PU L#189 (P#222)
Core L#95
PU L#190 (P#95)
PU L#191 (P#223)
HostBridge
PCIBridge
PCI c5:00.0 (SATA)
HostBridge
PCIBridge
PCI e1:00.0 (Ethernet)
Net "eno8303"
PCI e1:00.1 (Ethernet)
Net "eno8403"
Group0 L#3
NUMANode L#3 (P#3 126GB)
L3 L#12 (32MB)
Core L#96
PU L#192 (P#96)
PU L#193 (P#224)
Core L#97
PU L#194 (P#97)
PU L#195 (P#225)
Core L#98
PU L#196 (P#98)
PU L#197 (P#226)
Core L#99
PU L#198 (P#99)
PU L#199 (P#227)
Core L#100
PU L#200 (P#100)
PU L#201 (P#228)
Core L#101
PU L#202 (P#101)
PU L#203 (P#229)
Core L#102
PU L#204 (P#102)
PU L#205 (P#230)
Core L#103
PU L#206 (P#103)
PU L#207 (P#231)
L3 L#13 (32MB)
Core L#104
PU L#208 (P#104)
PU L#209 (P#232)
Core L#105
PU L#210 (P#105)
PU L#211 (P#233)
Core L#106
PU L#212 (P#106)
PU L#213 (P#234)
Core L#107
PU L#214 (P#107)
PU L#215 (P#235)
Core L#108
PU L#216 (P#108)
PU L#217 (P#236)
Core L#109
PU L#218 (P#109)
PU L#219 (P#237)
Core L#110
PU L#220 (P#110)
PU L#221 (P#238)
Core L#111
PU L#222 (P#111)
PU L#223 (P#239)
L3 L#14 (32MB)
Core L#112
PU L#224 (P#112)
PU L#225 (P#240)
Core L#113
PU L#226 (P#113)
PU L#227 (P#241)
Core L#114
PU L#228 (P#114)
PU L#229 (P#242)
Core L#115
PU L#230 (P#115)
PU L#231 (P#243)
Core L#116
PU L#232 (P#116)
PU L#233 (P#244)
Core L#117
PU L#234 (P#117)
PU L#235 (P#245)
Core L#118
PU L#236 (P#118)
PU L#237 (P#246)
Core L#119
PU L#238 (P#119)
PU L#239 (P#247)
L3 L#15 (32MB)
Core L#120
PU L#240 (P#120)
PU L#241 (P#248)
Core L#121
PU L#242 (P#121)
PU L#243 (P#249)
Core L#122
PU L#244 (P#122)
PU L#245 (P#250)
Core L#123
PU L#246 (P#123)
PU L#247 (P#251)
Core L#124
PU L#248 (P#124)
PU L#249 (P#252)
Core L#125
PU L#250 (P#125)
PU L#251 (P#253)
Core L#126
PU L#252 (P#126)
PU L#253 (P#254)
Core L#127
PU L#254 (P#127)
PU L#255 (P#255)
HostBridge
PCIBridge
PCI 81:00.0 (Ethernet)
Net "ens3f0"
OpenFabrics "mlx5_2"
PCI 81:00.1 (Ethernet)
Net "ens3f1"
OpenFabrics "mlx5_3"
```
The current result gives
```
$ ./usertools/cpu_layout.py
======================================================================
Core and Socket Information (as reported by '/sys/devices/system/cpu')
======================================================================
cores = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]
numa nodes per socket = [0, 1]
sockets = [0, 1]
Socket 0 Numa 0
-------------------
Core 0 [0, 128]
Core 1 [1, 129]
Core 2 [2, 130]
Core 3 [3, 131]
Core 4 [4, 132]
Core 5 [5, 133]
Core 6 [6, 134]
Core 7 [7, 135]
Core 8 [8, 136]
Core 9 [9, 137]
Core 10 [10, 138]
Core 11 [11, 139]
Core 12 [12, 140]
Core 13 [13, 141]
Core 14 [14, 142]
Core 15 [15, 143]
Core 16 [16, 144]
Core 17 [17, 145]
Core 18 [18, 146]
Core 19 [19, 147]
Core 20 [20, 148]
Core 21 [21, 149]
Core 22 [22, 150]
Core 23 [23, 151]
Core 24 [24, 152]
Core 25 [25, 153]
Core 26 [26, 154]
Core 27 [27, 155]
Core 28 [28, 156]
Core 29 [29, 157]
Core 30 [30, 158]
Core 31 [31, 159]
Socket 0 Numa 1
-------------------
Core 0 [32, 160]
Core 1 [33, 161]
Core 2 [34, 162]
Core 3 [35, 163]
Core 4 [36, 164]
Core 5 [37, 165]
Core 6 [38, 166]
Core 7 [39, 167]
Core 8 [40, 168]
Core 9 [41, 169]
Core 10 [42, 170]
Core 11 [43, 171]
Core 12 [44, 172]
Core 13 [45, 173]
Core 14 [46, 174]
Core 15 [47, 175]
Core 16 [48, 176]
Core 17 [49, 177]
Core 18 [50, 178]
Core 19 [51, 179]
Core 20 [52, 180]
Core 21 [53, 181]
Core 22 [54, 182]
Core 23 [55, 183]
Core 24 [56, 184]
Core 25 [57, 185]
Core 26 [58, 186]
Core 27 [59, 187]
Core 28 [60, 188]
Core 29 [61, 189]
Core 30 [62, 190]
Core 31 [63, 191]
Socket 1 Numa 2
-------------------
Core 0 [64, 192]
Core 1 [65, 193]
Core 2 [66, 194]
Core 3 [67, 195]
Core 4 [68, 196]
Core 5 [69, 197]
Core 6 [70, 198]
Core 7 [71, 199]
Core 8 [72, 200]
Core 9 [73, 201]
Core 10 [74, 202]
Core 11 [75, 203]
Core 12 [76, 204]
Core 13 [77, 205]
Core 14 [78, 206]
Core 15 [79, 207]
Core 16 [80, 208]
Core 17 [81, 209]
Core 18 [82, 210]
Core 19 [83, 211]
Core 20 [84, 212]
Core 21 [85, 213]
Core 22 [86, 214]
Core 23 [87, 215]
Core 24 [88, 216]
Core 25 [89, 217]
Core 26 [90, 218]
Core 27 [91, 219]
Core 28 [92, 220]
Core 29 [93, 221]
Core 30 [94, 222]
Core 31 [95, 223]
Socket 1 Numa 3
-------------------
Core 0 [96, 224]
Core 1 [97, 225]
Core 2 [98, 226]
Core 3 [99, 227]
Core 4 [100, 228]
Core 5 [101, 229]
Core 6 [102, 230]
Core 7 [103, 231]
Core 8 [104, 232]
Core 9 [105, 233]
Core 10 [106, 234]
Core 11 [107, 235]
Core 12 [108, 236]
Core 13 [109, 237]
Core 14 [110, 238]
Core 15 [111, 239]
Core 16 [112, 240]
Core 17 [113, 241]
Core 18 [114, 242]
Core 19 [115, 243]
Core 20 [116, 244]
Core 21 [117, 245]
Core 22 [118, 246]
Core 23 [119, 247]
Core 24 [120, 248]
Core 25 [121, 249]
Core 26 [122, 250]
Core 27 [123, 251]
Core 28 [124, 252]
Core 29 [125, 253]
Core 30 [126, 254]
Core 31 [127, 255]
```
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH] usertools: enhance logic to display NUMA
2022-03-28 2:56 ` Varghese, Vipin
@ 2022-03-28 7:44 ` Tummala, Sivaprasad
2023-06-14 10:48 ` Ferruh Yigit
1 sibling, 0 replies; 15+ messages in thread
From: Tummala, Sivaprasad @ 2022-03-28 7:44 UTC (permalink / raw)
To: Varghese, Vipin, Thomas Monjalon; +Cc: david.marchand, dev
[AMD Official Use Only]
Validated the changes on:
- AMD EPYC 7713
- AMD EPYC 7543P
- Intel(R) Xeon(R) Platinum 8352V
-----Original Message-----
From: Varghese, Vipin <Vipin.Varghese@amd.com>
Sent: Monday, March 28, 2022 8:27 AM
To: Thomas Monjalon <thomas@monjalon.net>
Cc: david.marchand@redhat.com; Tummala, Sivaprasad <Sivaprasad.Tummala@amd.com>; dev@dpdk.org
Subject: RE: [PATCH] usertools: enhance logic to display NUMA
[AMD Official Use Only]
Hi Thomas,
<snipp>
26/03/2022 08:32, Vipin Varghese:
> enhance python logic to accomadate NUMA information. Current logic
> considers physical socket with CPU threads to core map. With new AMD
> SKU vairant NUMA is no longer same as SOCKET. Single physical socket
> can be partitioned to variant of 1,2 and 4.
>
> The changes address the new mapping with Socket-NUMA to CPU cores.
>
> Signed-off-by: Vipin Varghese <vipin.varghese@amd.com>
> ---
> usertools/cpu_layout.py | 76
> +++++++++++++++++++++++++----------------
> 1 file changed, 47 insertions(+), 29 deletions(-)
Honestly, I'm not sure it is a good idea to keep this script in the DPDK repo.
Can it be replaced with hwloc usage?
thanks for the suggestion, it is genuine and useful. Following is my observations
- It takes some effort to identify the NUMA with `Group`
- One needs to install ` lstopo-no-graphics` on distro and manually build and add on custom Linux.
What is the output on the new AMD SKU for this command?
lstopo-no-graphics --merge
I have tried ` lstopo-no-graphics --merge` on a ` 2 Socket AMD EPYC 7713 64-Core Processor` with possible NUMA configuration such as 1, 2 and 4.
```
$ lstopo-no-graphics --merge
Machine (503GB total)
Package L#0
Group0 L#0
NUMANode L#0 (P#0 126GB)
L3 L#0 (32MB)
Core L#0
PU L#0 (P#0)
PU L#1 (P#128)
Core L#1
PU L#2 (P#1)
PU L#3 (P#129)
Core L#2
PU L#4 (P#2)
PU L#5 (P#130)
Core L#3
PU L#6 (P#3)
PU L#7 (P#131)
Core L#4
PU L#8 (P#4)
PU L#9 (P#132)
Core L#5
PU L#10 (P#5)
PU L#11 (P#133)
Core L#6
PU L#12 (P#6)
PU L#13 (P#134)
Core L#7
PU L#14 (P#7)
PU L#15 (P#135)
L3 L#1 (32MB)
Core L#8
PU L#16 (P#8)
PU L#17 (P#136)
Core L#9
PU L#18 (P#9)
PU L#19 (P#137)
Core L#10
PU L#20 (P#10)
PU L#21 (P#138)
Core L#11
PU L#22 (P#11)
PU L#23 (P#139)
Core L#12
PU L#24 (P#12)
PU L#25 (P#140)
Core L#13
PU L#26 (P#13)
PU L#27 (P#141)
Core L#14
PU L#28 (P#14)
PU L#29 (P#142)
Core L#15
PU L#30 (P#15)
PU L#31 (P#143)
L3 L#2 (32MB)
Core L#16
PU L#32 (P#16)
PU L#33 (P#144)
Core L#17
PU L#34 (P#17)
PU L#35 (P#145)
Core L#18
PU L#36 (P#18)
PU L#37 (P#146)
Core L#19
PU L#38 (P#19)
PU L#39 (P#147)
Core L#20
PU L#40 (P#20)
PU L#41 (P#148)
Core L#21
PU L#42 (P#21)
PU L#43 (P#149)
Core L#22
PU L#44 (P#22)
PU L#45 (P#150)
Core L#23
PU L#46 (P#23)
PU L#47 (P#151)
L3 L#3 (32MB)
Core L#24
PU L#48 (P#24)
PU L#49 (P#152)
Core L#25
PU L#50 (P#25)
PU L#51 (P#153)
Core L#26
PU L#52 (P#26)
PU L#53 (P#154)
Core L#27
PU L#54 (P#27)
PU L#55 (P#155)
Core L#28
PU L#56 (P#28)
PU L#57 (P#156)
Core L#29
PU L#58 (P#29)
PU L#59 (P#157)
Core L#30
PU L#60 (P#30)
PU L#61 (P#158)
Core L#31
PU L#62 (P#31)
PU L#63 (P#159)
HostBridge
PCIBridge
PCI 41:00.0 (Ethernet)
Net "ens1f0"
OpenFabrics "mlx5_0"
PCI 41:00.1 (Ethernet)
Net "ens1f1"
OpenFabrics "mlx5_1"
HostBridge
PCIBridge
PCI 63:00.0 (Ethernet)
Net "eno12399np0"
PCI 63:00.1 (Ethernet)
Net "eno12409np1"
PCIBridge
PCIBridge
PCI 62:00.0 (VGA)
Group0 L#1
NUMANode L#1 (P#1 126GB)
L3 L#4 (32MB)
Core L#32
PU L#64 (P#32)
PU L#65 (P#160)
Core L#33
PU L#66 (P#33)
PU L#67 (P#161)
Core L#34
PU L#68 (P#34)
PU L#69 (P#162)
Core L#35
PU L#70 (P#35)
PU L#71 (P#163)
Core L#36
PU L#72 (P#36)
PU L#73 (P#164)
Core L#37
PU L#74 (P#37)
PU L#75 (P#165)
Core L#38
PU L#76 (P#38)
PU L#77 (P#166)
Core L#39
PU L#78 (P#39)
PU L#79 (P#167)
L3 L#5 (32MB)
Core L#40
PU L#80 (P#40)
PU L#81 (P#168)
Core L#41
PU L#82 (P#41)
PU L#83 (P#169)
Core L#42
PU L#84 (P#42)
PU L#85 (P#170)
Core L#43
PU L#86 (P#43)
PU L#87 (P#171)
Core L#44
PU L#88 (P#44)
PU L#89 (P#172)
Core L#45
PU L#90 (P#45)
PU L#91 (P#173)
Core L#46
PU L#92 (P#46)
PU L#93 (P#174)
Core L#47
PU L#94 (P#47)
PU L#95 (P#175)
L3 L#6 (32MB)
Core L#48
PU L#96 (P#48)
PU L#97 (P#176)
Core L#49
PU L#98 (P#49)
PU L#99 (P#177)
Core L#50
PU L#100 (P#50)
PU L#101 (P#178)
Core L#51
PU L#102 (P#51)
PU L#103 (P#179)
Core L#52
PU L#104 (P#52)
PU L#105 (P#180)
Core L#53
PU L#106 (P#53)
PU L#107 (P#181)
Core L#54
PU L#108 (P#54)
PU L#109 (P#182)
Core L#55
PU L#110 (P#55)
PU L#111 (P#183)
L3 L#7 (32MB)
Core L#56
PU L#112 (P#56)
PU L#113 (P#184)
Core L#57
PU L#114 (P#57)
PU L#115 (P#185)
Core L#58
PU L#116 (P#58)
PU L#117 (P#186)
Core L#59
PU L#118 (P#59)
PU L#119 (P#187)
Core L#60
PU L#120 (P#60)
PU L#121 (P#188)
Core L#61
PU L#122 (P#61)
PU L#123 (P#189)
Core L#62
PU L#124 (P#62)
PU L#125 (P#190)
Core L#63
PU L#126 (P#63)
PU L#127 (P#191)
HostBridge
PCIBridge
PCI 01:00.0 (RAID)
PCIBridge
PCI 02:00.0 (SATA)
Block(Disk) "sda"
HostBridge
PCIBridge
PCI 22:00.0 (NVMExp)
Block(Disk) "nvme0n1"
Package L#1
Group0 L#2
NUMANode L#2 (P#2 126GB)
L3 L#8 (32MB)
Core L#64
PU L#128 (P#64)
PU L#129 (P#192)
Core L#65
PU L#130 (P#65)
PU L#131 (P#193)
Core L#66
PU L#132 (P#66)
PU L#133 (P#194)
Core L#67
PU L#134 (P#67)
PU L#135 (P#195)
Core L#68
PU L#136 (P#68)
PU L#137 (P#196)
Core L#69
PU L#138 (P#69)
PU L#139 (P#197)
Core L#70
PU L#140 (P#70)
PU L#141 (P#198)
Core L#71
PU L#142 (P#71)
PU L#143 (P#199)
L3 L#9 (32MB)
Core L#72
PU L#144 (P#72)
PU L#145 (P#200)
Core L#73
PU L#146 (P#73)
PU L#147 (P#201)
Core L#74
PU L#148 (P#74)
PU L#149 (P#202)
Core L#75
PU L#150 (P#75)
PU L#151 (P#203)
Core L#76
PU L#152 (P#76)
PU L#153 (P#204)
Core L#77
PU L#154 (P#77)
PU L#155 (P#205)
Core L#78
PU L#156 (P#78)
PU L#157 (P#206)
Core L#79
PU L#158 (P#79)
PU L#159 (P#207)
L3 L#10 (32MB)
Core L#80
PU L#160 (P#80)
PU L#161 (P#208)
Core L#81
PU L#162 (P#81)
PU L#163 (P#209)
Core L#82
PU L#164 (P#82)
PU L#165 (P#210)
Core L#83
PU L#166 (P#83)
PU L#167 (P#211)
Core L#84
PU L#168 (P#84)
PU L#169 (P#212)
Core L#85
PU L#170 (P#85)
PU L#171 (P#213)
Core L#86
PU L#172 (P#86)
PU L#173 (P#214)
Core L#87
PU L#174 (P#87)
PU L#175 (P#215)
L3 L#11 (32MB)
Core L#88
PU L#176 (P#88)
PU L#177 (P#216)
Core L#89
PU L#178 (P#89)
PU L#179 (P#217)
Core L#90
PU L#180 (P#90)
PU L#181 (P#218)
Core L#91
PU L#182 (P#91)
PU L#183 (P#219)
Core L#92
PU L#184 (P#92)
PU L#185 (P#220)
Core L#93
PU L#186 (P#93)
PU L#187 (P#221)
Core L#94
PU L#188 (P#94)
PU L#189 (P#222)
Core L#95
PU L#190 (P#95)
PU L#191 (P#223)
HostBridge
PCIBridge
PCI c5:00.0 (SATA)
HostBridge
PCIBridge
PCI e1:00.0 (Ethernet)
Net "eno8303"
PCI e1:00.1 (Ethernet)
Net "eno8403"
Group0 L#3
NUMANode L#3 (P#3 126GB)
L3 L#12 (32MB)
Core L#96
PU L#192 (P#96)
PU L#193 (P#224)
Core L#97
PU L#194 (P#97)
PU L#195 (P#225)
Core L#98
PU L#196 (P#98)
PU L#197 (P#226)
Core L#99
PU L#198 (P#99)
PU L#199 (P#227)
Core L#100
PU L#200 (P#100)
PU L#201 (P#228)
Core L#101
PU L#202 (P#101)
PU L#203 (P#229)
Core L#102
PU L#204 (P#102)
PU L#205 (P#230)
Core L#103
PU L#206 (P#103)
PU L#207 (P#231)
L3 L#13 (32MB)
Core L#104
PU L#208 (P#104)
PU L#209 (P#232)
Core L#105
PU L#210 (P#105)
PU L#211 (P#233)
Core L#106
PU L#212 (P#106)
PU L#213 (P#234)
Core L#107
PU L#214 (P#107)
PU L#215 (P#235)
Core L#108
PU L#216 (P#108)
PU L#217 (P#236)
Core L#109
PU L#218 (P#109)
PU L#219 (P#237)
Core L#110
PU L#220 (P#110)
PU L#221 (P#238)
Core L#111
PU L#222 (P#111)
PU L#223 (P#239)
L3 L#14 (32MB)
Core L#112
PU L#224 (P#112)
PU L#225 (P#240)
Core L#113
PU L#226 (P#113)
PU L#227 (P#241)
Core L#114
PU L#228 (P#114)
PU L#229 (P#242)
Core L#115
PU L#230 (P#115)
PU L#231 (P#243)
Core L#116
PU L#232 (P#116)
PU L#233 (P#244)
Core L#117
PU L#234 (P#117)
PU L#235 (P#245)
Core L#118
PU L#236 (P#118)
PU L#237 (P#246)
Core L#119
PU L#238 (P#119)
PU L#239 (P#247)
L3 L#15 (32MB)
Core L#120
PU L#240 (P#120)
PU L#241 (P#248)
Core L#121
PU L#242 (P#121)
PU L#243 (P#249)
Core L#122
PU L#244 (P#122)
PU L#245 (P#250)
Core L#123
PU L#246 (P#123)
PU L#247 (P#251)
Core L#124
PU L#248 (P#124)
PU L#249 (P#252)
Core L#125
PU L#250 (P#125)
PU L#251 (P#253)
Core L#126
PU L#252 (P#126)
PU L#253 (P#254)
Core L#127
PU L#254 (P#127)
PU L#255 (P#255)
HostBridge
PCIBridge
PCI 81:00.0 (Ethernet)
Net "ens3f0"
OpenFabrics "mlx5_2"
PCI 81:00.1 (Ethernet)
Net "ens3f1"
OpenFabrics "mlx5_3"
```
The current result gives
```
$ ./usertools/cpu_layout.py
======================================================================
Core and Socket Information (as reported by '/sys/devices/system/cpu') ======================================================================
cores = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63] numa nodes per socket = [0, 1] sockets = [0, 1]
Socket 0 Numa 0
-------------------
Core 0 [0, 128]
Core 1 [1, 129]
Core 2 [2, 130]
Core 3 [3, 131]
Core 4 [4, 132]
Core 5 [5, 133]
Core 6 [6, 134]
Core 7 [7, 135]
Core 8 [8, 136]
Core 9 [9, 137]
Core 10 [10, 138]
Core 11 [11, 139]
Core 12 [12, 140]
Core 13 [13, 141]
Core 14 [14, 142]
Core 15 [15, 143]
Core 16 [16, 144]
Core 17 [17, 145]
Core 18 [18, 146]
Core 19 [19, 147]
Core 20 [20, 148]
Core 21 [21, 149]
Core 22 [22, 150]
Core 23 [23, 151]
Core 24 [24, 152]
Core 25 [25, 153]
Core 26 [26, 154]
Core 27 [27, 155]
Core 28 [28, 156]
Core 29 [29, 157]
Core 30 [30, 158]
Core 31 [31, 159]
Socket 0 Numa 1
-------------------
Core 0 [32, 160]
Core 1 [33, 161]
Core 2 [34, 162]
Core 3 [35, 163]
Core 4 [36, 164]
Core 5 [37, 165]
Core 6 [38, 166]
Core 7 [39, 167]
Core 8 [40, 168]
Core 9 [41, 169]
Core 10 [42, 170]
Core 11 [43, 171]
Core 12 [44, 172]
Core 13 [45, 173]
Core 14 [46, 174]
Core 15 [47, 175]
Core 16 [48, 176]
Core 17 [49, 177]
Core 18 [50, 178]
Core 19 [51, 179]
Core 20 [52, 180]
Core 21 [53, 181]
Core 22 [54, 182]
Core 23 [55, 183]
Core 24 [56, 184]
Core 25 [57, 185]
Core 26 [58, 186]
Core 27 [59, 187]
Core 28 [60, 188]
Core 29 [61, 189]
Core 30 [62, 190]
Core 31 [63, 191]
Socket 1 Numa 2
-------------------
Core 0 [64, 192]
Core 1 [65, 193]
Core 2 [66, 194]
Core 3 [67, 195]
Core 4 [68, 196]
Core 5 [69, 197]
Core 6 [70, 198]
Core 7 [71, 199]
Core 8 [72, 200]
Core 9 [73, 201]
Core 10 [74, 202]
Core 11 [75, 203]
Core 12 [76, 204]
Core 13 [77, 205]
Core 14 [78, 206]
Core 15 [79, 207]
Core 16 [80, 208]
Core 17 [81, 209]
Core 18 [82, 210]
Core 19 [83, 211]
Core 20 [84, 212]
Core 21 [85, 213]
Core 22 [86, 214]
Core 23 [87, 215]
Core 24 [88, 216]
Core 25 [89, 217]
Core 26 [90, 218]
Core 27 [91, 219]
Core 28 [92, 220]
Core 29 [93, 221]
Core 30 [94, 222]
Core 31 [95, 223]
Socket 1 Numa 3
-------------------
Core 0 [96, 224]
Core 1 [97, 225]
Core 2 [98, 226]
Core 3 [99, 227]
Core 4 [100, 228]
Core 5 [101, 229]
Core 6 [102, 230]
Core 7 [103, 231]
Core 8 [104, 232]
Core 9 [105, 233]
Core 10 [106, 234]
Core 11 [107, 235]
Core 12 [108, 236]
Core 13 [109, 237]
Core 14 [110, 238]
Core 15 [111, 239]
Core 16 [112, 240]
Core 17 [113, 241]
Core 18 [114, 242]
Core 19 [115, 243]
Core 20 [116, 244]
Core 21 [117, 245]
Core 22 [118, 246]
Core 23 [119, 247]
Core 24 [120, 248]
Core 25 [121, 249]
Core 26 [122, 250]
Core 27 [123, 251]
Core 28 [124, 252]
Core 29 [125, 253]
Core 30 [126, 254]
Core 31 [127, 255]
```
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2022-03-28 2:56 ` Varghese, Vipin
2022-03-28 7:44 ` Tummala, Sivaprasad
@ 2023-06-14 10:48 ` Ferruh Yigit
2023-06-14 11:25 ` Dmitry Kozlyuk
2023-06-14 14:30 ` Thomas Monjalon
1 sibling, 2 replies; 15+ messages in thread
From: Ferruh Yigit @ 2023-06-14 10:48 UTC (permalink / raw)
To: Varghese, Vipin, Thomas Monjalon, Dmitry Kozlyuk
Cc: david.marchand, Tummala, Sivaprasad, dev,
Narcisa Ana Maria Vasile, Dmitry Malloy, Pallavi Kadam
On 3/28/2022 3:56 AM, Varghese, Vipin wrote:
> Hi Thomas,
>
> <snipp>
>
> 26/03/2022 08:32, Vipin Varghese:
>>> enhance python logic to accomadate NUMA information. Current logic
>>> considers physical socket with CPU threads to core map. With new AMD
>>> SKU vairant NUMA is no longer same as SOCKET. Single physical socket
>>> can be partitioned to variant of 1,2 and 4.
>>>
>>> The changes address the new mapping with Socket-NUMA to CPU cores.
>>>
>>> Signed-off-by: Vipin Varghese <vipin.varghese@amd.com>
>>> ---
>>> usertools/cpu_layout.py | 76
>>> +++++++++++++++++++++++++----------------
>>> 1 file changed, 47 insertions(+), 29 deletions(-)
>> Honestly, I'm not sure it is a good idea to keep this script in the DPDK repo.
>> Can it be replaced with hwloc usage?
>
> thanks for the suggestion, it is genuine and useful. Following is my observations
>
> - It takes some effort to identify the NUMA with `Group`
> - One needs to install ` lstopo-no-graphics` on distro and manually build and add on custom Linux.
>
>
>> What is the output on the new AMD SKU for this command?
>> lstopo-no-graphics --merge
>
> I have tried ` lstopo-no-graphics --merge` on a ` 2 Socket AMD EPYC 7713 64-Core Processor` with
> possible NUMA configuration such as 1, 2 and 4.
>
Hi Thomas,
Should we document preferred tool and usage in DPDK, if so where is good
location for it?
Also @Dmitry, is there solution for Windows for this issue (a tool to
replace cpu_layout.py)?
Thanks,
ferruh
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2023-06-14 10:48 ` Ferruh Yigit
@ 2023-06-14 11:25 ` Dmitry Kozlyuk
2023-06-14 14:30 ` Thomas Monjalon
1 sibling, 0 replies; 15+ messages in thread
From: Dmitry Kozlyuk @ 2023-06-14 11:25 UTC (permalink / raw)
To: Ferruh Yigit
Cc: Varghese, Vipin, Thomas Monjalon, david.marchand, Tummala,
Sivaprasad, dev, Narcisa Ana Maria Vasile, Dmitry Malloy,
Pallavi Kadam
Hi,
2023-06-14 11:48 (UTC+0100), Ferruh Yigit:
> Also @Dmitry, is there solution for Windows for this issue (a tool to
> replace cpu_layout.py)?
hwloc binaries, including lstopo-no-graphics.exe,
are packaged for Windows by the authors:
https://www.open-mpi.org/software/hwloc/current/
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2023-06-14 10:48 ` Ferruh Yigit
2023-06-14 11:25 ` Dmitry Kozlyuk
@ 2023-06-14 14:30 ` Thomas Monjalon
2023-07-11 6:38 ` Varghese, Vipin
1 sibling, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2023-06-14 14:30 UTC (permalink / raw)
To: Ferruh Yigit
Cc: Varghese, Vipin, Dmitry Kozlyuk, david.marchand, Tummala,
Sivaprasad, dev, Narcisa Ana Maria Vasile, Dmitry Malloy,
Pallavi Kadam
14/06/2023 12:48, Ferruh Yigit:
> Should we document preferred tool and usage in DPDK, if so where is good
> location for it?
I think it should be in the user guide.
We are starting to merge the 3 user guides in 1.
You can add it to the Linux guide only for now.
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH] usertools: enhance logic to display NUMA
2023-06-14 14:30 ` Thomas Monjalon
@ 2023-07-11 6:38 ` Varghese, Vipin
0 siblings, 0 replies; 15+ messages in thread
From: Varghese, Vipin @ 2023-07-11 6:38 UTC (permalink / raw)
To: Thomas Monjalon, Yigit, Ferruh, Dmitry Kozlyuk
Cc: david.marchand, Tummala, Sivaprasad, dev,
Narcisa Ana Maria Vasile, Dmitry Malloy, Pallavi Kadam
[AMD Official Use Only - General]
@Yigit, Ferruh thanks for bringing this to my attention,
The output of the modified
```
Socket 0 Numa 0
-------------------
Core 0 [0, 128]
Core 1 [1, 129]
Core 2 [2, 130]
Core 3 [3, 131]
.....
Core 29 [29, 157]
Core 30 [30, 158]
Core 31 [31, 159]
Socket 0 Numa 1
-------------------
Core 0 [32, 160]
Core 1 [33, 161]
Core 2 [34, 162]
Core 3 [35, 163]
.....
Core 30 [62, 190]
Core 31 [63, 191]
Socket 1 Numa 2
-------------------
Core 0 [64, 192]
Core 1 [65, 193]
Core 2 [66, 194]
Core 3 [67, 195]
.....
Core 31 [95, 223]
Socket 1 Numa 3
-------------------
Core 0 [96, 224]
Core 1 [97, 225]
Core 2 [98, 226]
.....
Core 29 [125, 253]
Core 30 [126, 254]
Core 31 [127, 255]
```
The intention of the changes is clearly highlighted the NUMA divisioning and CPU pinning within single or multiple sockets. But as pointed out @Dmitry Kozlyuk if the end user will use hwloc on both linux & windows to identify these, we should promote and document the changes provided the existing tool is phased out.
Note: there were questions asked in forums, stackoverflow and github on NUMA to CPU pinning, hence enhanced the tool to accommodate the changes.
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Wednesday, June 14, 2023 8:00 PM
> To: Yigit, Ferruh <Ferruh.Yigit@amd.com>
> Cc: Varghese, Vipin <Vipin.Varghese@amd.com>; Dmitry Kozlyuk
> <dmitry.kozliuk@gmail.com>; david.marchand@redhat.com; Tummala,
> Sivaprasad <Sivaprasad.Tummala@amd.com>; dev@dpdk.org; Narcisa Ana
> Maria Vasile <navasile@linux.microsoft.com>; Dmitry Malloy
> <dmitrym@microsoft.com>; Pallavi Kadam <pallavi.kadam@intel.com>
> Subject: Re: [PATCH] usertools: enhance logic to display NUMA
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> 14/06/2023 12:48, Ferruh Yigit:
> > Should we document preferred tool and usage in DPDK, if so where is
> > good location for it?
>
> I think it should be in the user guide.
> We are starting to merge the 3 user guides in 1.
> You can add it to the Linux guide only for now.
>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2022-03-26 7:32 [PATCH] usertools: enhance logic to display NUMA Vipin Varghese
2022-03-26 9:46 ` Thomas Monjalon
@ 2023-07-11 15:42 ` Stephen Hemminger
2023-07-11 16:26 ` Thomas Monjalon
1 sibling, 1 reply; 15+ messages in thread
From: Stephen Hemminger @ 2023-07-11 15:42 UTC (permalink / raw)
To: Vipin Varghese; +Cc: thomas, david.marchand, sivaprasad.tummala, dev
On Sat, 26 Mar 2022 00:32:07 -0700
Vipin Varghese <vipin.varghese@amd.com> wrote:
> +
> + output = " Socket " + str(socket).ljust(3, ' ') + " Numa " + str(numa).zfill(1) + " "
> + #output = " Socket " + str(socket).zfill(1) + " Numa " + str(numa).zfill(1) + " "
> + print(output)
> + print(format("-" * len(output)))
> +
> + for index,coreSibling in enumerate(numa_map[keys]):
> + print ("Core " + str(index).ljust(3, ' ') + " " + str(coreSibling))
> + #print ("Core " + str(index).zfill(3) + " " + str(coreSibling))
> +print("")
> +
> --
Git complains because you added new blank line at end of file.
One wording suggestion would be to use the term "Node" instead of "Numa" in the table.
And fix heading alignment. The new headings don't look right.
For the case with only single socket, single node, some of the headings could be
dropped as well.
I.e:
Socket 0 Node 0
-------------------
Core 0 [0, 4]
Core 1 [1, 5]
Core 2 [2, 6]
Core 3 [3, 7]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2023-07-11 15:42 ` Stephen Hemminger
@ 2023-07-11 16:26 ` Thomas Monjalon
2023-07-14 9:14 ` Varghese, Vipin
0 siblings, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2023-07-11 16:26 UTC (permalink / raw)
To: Vipin Varghese, Stephen Hemminger; +Cc: david.marchand, sivaprasad.tummala, dev
11/07/2023 17:42, Stephen Hemminger:
> On Sat, 26 Mar 2022 00:32:07 -0700
> Vipin Varghese <vipin.varghese@amd.com> wrote:
>
> > +
> > + output = " Socket " + str(socket).ljust(3, ' ') + " Numa " + str(numa).zfill(1) + " "
> > + #output = " Socket " + str(socket).zfill(1) + " Numa " + str(numa).zfill(1) + " "
> > + print(output)
> > + print(format("-" * len(output)))
> > +
> > + for index,coreSibling in enumerate(numa_map[keys]):
> > + print ("Core " + str(index).ljust(3, ' ') + " " + str(coreSibling))
> > + #print ("Core " + str(index).zfill(3) + " " + str(coreSibling))
> > +print("")
> > +
>
> Git complains because you added new blank line at end of file.
>
> One wording suggestion would be to use the term "Node" instead of "Numa" in the table.
> And fix heading alignment. The new headings don't look right.
>
> For the case with only single socket, single node, some of the headings could be
> dropped as well.
I don't understand why we continue working on this script.
I thought we agreed it should be removed in favor of lstopo.
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH] usertools: enhance logic to display NUMA
2023-07-11 16:26 ` Thomas Monjalon
@ 2023-07-14 9:14 ` Varghese, Vipin
2023-07-17 15:07 ` Thomas Monjalon
0 siblings, 1 reply; 15+ messages in thread
From: Varghese, Vipin @ 2023-07-14 9:14 UTC (permalink / raw)
To: Thomas Monjalon, Stephen Hemminger
Cc: david.marchand, Tummala, Sivaprasad, dev
[AMD Official Use Only - General]
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Tuesday, July 11, 2023 9:56 PM
> To: Varghese, Vipin <Vipin.Varghese@amd.com>; Stephen Hemminger
> <stephen@networkplumber.org>
> Cc: david.marchand@redhat.com; Tummala, Sivaprasad
> <Sivaprasad.Tummala@amd.com>; dev@dpdk.org
> Subject: Re: [PATCH] usertools: enhance logic to display NUMA
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> 11/07/2023 17:42, Stephen Hemminger:
> > On Sat, 26 Mar 2022 00:32:07 -0700
> > Vipin Varghese <vipin.varghese@amd.com> wrote:
> >
> > > +
> > > + output = " Socket " + str(socket).ljust(3, ' ') + " Numa " +
> str(numa).zfill(1) + " "
> > > + #output = " Socket " + str(socket).zfill(1) + " Numa " + str(numa).zfill(1) +
> " "
> > > + print(output)
> > > + print(format("-" * len(output)))
> > > +
> > > + for index,coreSibling in enumerate(numa_map[keys]):
> > > + print ("Core " + str(index).ljust(3, ' ') + " " + str(coreSibling))
> > > + #print ("Core " + str(index).zfill(3) + " " + str(coreSibling))
> > > +print("")
> > > +
> >
> > Git complains because you added new blank line at end of file.
> >
> > One wording suggestion would be to use the term "Node" instead of
> "Numa" in the table.
> > And fix heading alignment. The new headings don't look right.
> >
> > For the case with only single socket, single node, some of the
> > headings could be dropped as well.
>
> I don't understand why we continue working on this script.
> I thought we agreed it should be removed in favor of lstopo.
>
Sorry Thomas, I did not follow your ` I don't understand why we continue working on this script. I thought we agreed it should be removed in favor of lstopo.`
From last email from my end `we should promote and document the changes provided the existing tool is phased out and use lstopo`.
Note:
1. This is with assumption that both Linux and Windows `lstopo` is modified and handles `ACPI L3 SRAT NUMA` and `Node per Socket NUMA`.
2. I have not seen a depreciation notice for cpu_layout.py too.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2023-07-14 9:14 ` Varghese, Vipin
@ 2023-07-17 15:07 ` Thomas Monjalon
2023-07-18 10:37 ` Varghese, Vipin
0 siblings, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2023-07-17 15:07 UTC (permalink / raw)
To: Stephen Hemminger, Varghese, Vipin
Cc: david.marchand, Tummala, Sivaprasad, dev
14/07/2023 11:14, Varghese, Vipin:
> From: Thomas Monjalon <thomas@monjalon.net>
> > 11/07/2023 17:42, Stephen Hemminger:
> > > On Sat, 26 Mar 2022 00:32:07 -0700
> > > Vipin Varghese <vipin.varghese@amd.com> wrote:
> > >
> > > > +
> > > > + output = " Socket " + str(socket).ljust(3, ' ') + " Numa " +
> > str(numa).zfill(1) + " "
> > > > + #output = " Socket " + str(socket).zfill(1) + " Numa " + str(numa).zfill(1) +
> > " "
> > > > + print(output)
> > > > + print(format("-" * len(output)))
> > > > +
> > > > + for index,coreSibling in enumerate(numa_map[keys]):
> > > > + print ("Core " + str(index).ljust(3, ' ') + " " + str(coreSibling))
> > > > + #print ("Core " + str(index).zfill(3) + " " + str(coreSibling))
> > > > +print("")
> > > > +
> > >
> > > Git complains because you added new blank line at end of file.
> > >
> > > One wording suggestion would be to use the term "Node" instead of
> > "Numa" in the table.
> > > And fix heading alignment. The new headings don't look right.
> > >
> > > For the case with only single socket, single node, some of the
> > > headings could be dropped as well.
> >
> > I don't understand why we continue working on this script.
> > I thought we agreed it should be removed in favor of lstopo.
> >
>
> Sorry Thomas, I did not follow your ` I don't understand why we continue working on this script. I thought we agreed it should be removed in favor of lstopo.`
>
> From last email from my end `we should promote and document the changes provided the existing tool is phased out and use lstopo`.
>
> Note:
> 1. This is with assumption that both Linux and Windows `lstopo` is modified and handles `ACPI L3 SRAT NUMA` and `Node per Socket NUMA`.
> 2. I have not seen a depreciation notice for cpu_layout.py too.
My take is that we should stop working on this script.
It is better to contribute to lstopo. Did you try?
We probably won't deprecate cpu_layout.py easily.
The first step would be to add a message when running the script,
recommending to use lstopo.
Vipin would you like to write such a patch?
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH] usertools: enhance logic to display NUMA
2023-07-17 15:07 ` Thomas Monjalon
@ 2023-07-18 10:37 ` Varghese, Vipin
2023-07-18 14:45 ` Thomas Monjalon
0 siblings, 1 reply; 15+ messages in thread
From: Varghese, Vipin @ 2023-07-18 10:37 UTC (permalink / raw)
To: Thomas Monjalon, Stephen Hemminger, Yigit, Ferruh
Cc: david.marchand, Tummala, Sivaprasad, dev
[AMD Official Use Only - General]
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Monday, July 17, 2023 8:37 PM
> To: Stephen Hemminger <stephen@networkplumber.org>; Varghese, Vipin
> <Vipin.Varghese@amd.com>
> Cc: david.marchand@redhat.com; Tummala, Sivaprasad
> <Sivaprasad.Tummala@amd.com>; dev@dpdk.org
> Subject: Re: [PATCH] usertools: enhance logic to display NUMA
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> 14/07/2023 11:14, Varghese, Vipin:
> > From: Thomas Monjalon <thomas@monjalon.net>
> > > 11/07/2023 17:42, Stephen Hemminger:
> > > > On Sat, 26 Mar 2022 00:32:07 -0700 Vipin Varghese
> > > > <vipin.varghese@amd.com> wrote:
> > > >
<<Snipped>>
> > > >
> > > > Git complains because you added new blank line at end of file.
> > > >
> > > > One wording suggestion would be to use the term "Node" instead of
> > > "Numa" in the table.
> > > > And fix heading alignment. The new headings don't look right.
> > > >
> > > > For the case with only single socket, single node, some of the
> > > > headings could be dropped as well.
> > >
> > > I don't understand why we continue working on this script.
> > > I thought we agreed it should be removed in favor of lstopo.
> > >
> >
> > Sorry Thomas, I did not follow your ` I don't understand why we
> > continue working on this script. I thought we agreed it should be
> > removed in favor of lstopo.`
> >
> > From last email from my end `we should promote and document the
> changes provided the existing tool is phased out and use lstopo`.
> >
> > Note:
> > 1. This is with assumption that both Linux and Windows `lstopo` is modified
> and handles `ACPI L3 SRAT NUMA` and `Node per Socket NUMA`.
> > 2. I have not seen a depreciation notice for cpu_layout.py too.
>
> My take is that we should stop working on this script.
> It is better to contribute to lstopo. Did you try?
>
> We probably won't deprecate cpu_layout.py easily.
> The first step would be to add a message when running the script,
> recommending to use lstopo.
> Vipin would you like to write such a patch?
Sure, we can do this. Based on the discussion with Ferruh, we as AMD find a need to update documentation for ` Platform Specific Guides`, which will help to capture various combinations of `NPS` and `L3 for Compute Tiles` using lstopo and other tools as required.
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] usertools: enhance logic to display NUMA
2023-07-18 10:37 ` Varghese, Vipin
@ 2023-07-18 14:45 ` Thomas Monjalon
2023-08-12 11:39 ` Varghese, Vipin
0 siblings, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2023-07-18 14:45 UTC (permalink / raw)
To: Stephen Hemminger, Yigit, Ferruh, Varghese, Vipin
Cc: david.marchand, Tummala, Sivaprasad, dev
18/07/2023 12:37, Varghese, Vipin:
> > 14/07/2023 11:14, Varghese, Vipin:
> > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > 11/07/2023 17:42, Stephen Hemminger:
> > > > > On Sat, 26 Mar 2022 00:32:07 -0700 Vipin Varghese
> > > > > <vipin.varghese@amd.com> wrote:
> > > > >
>
> <<Snipped>>
>
> > > > >
> > > > > Git complains because you added new blank line at end of file.
> > > > >
> > > > > One wording suggestion would be to use the term "Node" instead of
> > > > "Numa" in the table.
> > > > > And fix heading alignment. The new headings don't look right.
> > > > >
> > > > > For the case with only single socket, single node, some of the
> > > > > headings could be dropped as well.
> > > >
> > > > I don't understand why we continue working on this script.
> > > > I thought we agreed it should be removed in favor of lstopo.
> > > >
> > >
> > > Sorry Thomas, I did not follow your ` I don't understand why we
> > > continue working on this script. I thought we agreed it should be
> > > removed in favor of lstopo.`
> > >
> > > From last email from my end `we should promote and document the
> > changes provided the existing tool is phased out and use lstopo`.
> > >
> > > Note:
> > > 1. This is with assumption that both Linux and Windows `lstopo` is modified
> > and handles `ACPI L3 SRAT NUMA` and `Node per Socket NUMA`.
> > > 2. I have not seen a depreciation notice for cpu_layout.py too.
> >
> > My take is that we should stop working on this script.
> > It is better to contribute to lstopo. Did you try?
> >
> > We probably won't deprecate cpu_layout.py easily.
> > The first step would be to add a message when running the script,
> > recommending to use lstopo.
> > Vipin would you like to write such a patch?
>
> Sure, we can do this. Based on the discussion with Ferruh, we as AMD find a need to update documentation for ` Platform Specific Guides`, which will help to capture various combinations of `NPS` and `L3 for Compute Tiles` using lstopo and other tools as required.
OK thanks
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: [PATCH] usertools: enhance logic to display NUMA
2023-07-18 14:45 ` Thomas Monjalon
@ 2023-08-12 11:39 ` Varghese, Vipin
0 siblings, 0 replies; 15+ messages in thread
From: Varghese, Vipin @ 2023-08-12 11:39 UTC (permalink / raw)
To: Thomas Monjalon, Stephen Hemminger, Yigit, Ferruh
Cc: david.marchand, Tummala, Sivaprasad, dev
[AMD Official Use Only - General]
<snipped>
> > > >
> > > > From last email from my end `we should promote and document the
> > > changes provided the existing tool is phased out and use lstopo`.
> > > >
> > > > Note:
> > > > 1. This is with assumption that both Linux and Windows `lstopo` is
> > > > modified
> > > and handles `ACPI L3 SRAT NUMA` and `Node per Socket NUMA`.
> > > > 2. I have not seen a depreciation notice for cpu_layout.py too.
> > >
> > > My take is that we should stop working on this script.
> > > It is better to contribute to lstopo. Did you try?
> > >
> > > We probably won't deprecate cpu_layout.py easily.
> > > The first step would be to add a message when running the script,
> > > recommending to use lstopo.
> > > Vipin would you like to write such a patch?
https://patchwork.dpdk.org/project/dpdk/patch/20230812005720.997-1-vipin.varghese@amd.com/
> >
> > Sure, we can do this. Based on the discussion with Ferruh, we as AMD find a
> need to update documentation for ` Platform Specific Guides`, which will help
> to capture various combinations of `NPS` and `L3 for Compute Tiles` using
> lstopo and other tools as required.
Updating the documentation section for AMD EPYC shortly.
>
> OK thanks
>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2023-08-12 11:39 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-26 7:32 [PATCH] usertools: enhance logic to display NUMA Vipin Varghese
2022-03-26 9:46 ` Thomas Monjalon
2022-03-28 2:56 ` Varghese, Vipin
2022-03-28 7:44 ` Tummala, Sivaprasad
2023-06-14 10:48 ` Ferruh Yigit
2023-06-14 11:25 ` Dmitry Kozlyuk
2023-06-14 14:30 ` Thomas Monjalon
2023-07-11 6:38 ` Varghese, Vipin
2023-07-11 15:42 ` Stephen Hemminger
2023-07-11 16:26 ` Thomas Monjalon
2023-07-14 9:14 ` Varghese, Vipin
2023-07-17 15:07 ` Thomas Monjalon
2023-07-18 10:37 ` Varghese, Vipin
2023-07-18 14:45 ` Thomas Monjalon
2023-08-12 11:39 ` Varghese, Vipin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).