[SWDEV-542718] Correct socket_affinity (#760)

* [SWDEV-542718] Correct socket_affinity

Updated Socket affinity to show bitmask and expanded cpu list.

Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com>

* Update per-device local_cpulist for socket_affinity

Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com>

* Added amdsmi_get_cpu_affinity_from_local_cpulist API.
Updated the wrapper.

Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com>

* Revert "Added amdsmi_get_cpu_affinity_from_local_cpulist API."

This reverts commit 9a2ef934b1787f8aa09d3e4efe02f897b4295215.

* Moved the changes to C API.
In case of SOCKET_SCOPE, use local_cpulist first.
If it is unavailable or not readable, fallback to
numa.

Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com>

* Addressed review comments

Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com>

---------

Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com>
This commit is contained in:
Kanangot Balakrishnan, Bindhiya
2025-10-22 16:20:41 -05:00
committed by GitHub
parent 01b4fe6614
commit 09a97f02ed
4 changed files with 51 additions and 23 deletions
+12 -4
View File
@@ -904,16 +904,24 @@ class AMDSMICommands():
logging.debug("Failed to get cpu affinity for gpu %s | %s", gpu_id, e.get_error_info())
try:
cpusockets = amdsmi_interface.amdsmi_get_cpu_affinity_with_scope(args.gpu, amdsmi_interface.AmdSmiAffinityScope.SOCKET_SCOPE)
cpusockets = {f'socket_{i}': socket for i, socket in enumerate(set(cpusockets))}
socket_set = amdsmi_interface.amdsmi_get_cpu_affinity_with_scope(args.gpu, amdsmi_interface.AmdSmiAffinityScope.SOCKET_SCOPE)
socket_set = [f"{cpus:016X}" for cpus in socket_set]
socket_set = {f'cpu_list_{i}': f"{cpus}" for i, cpus in enumerate(socket_set)}
socket_bitmask_ranges = self.helpers.get_bitmask_ranges(socket_set)
socket_affinity = {}
for key in socket_set:
socket_affinity[key] = {
"bitmask": socket_set[key],
"cpu_cores_affinity": socket_bitmask_ranges.get(key, "N/A")
}
except amdsmi_exception.AmdSmiLibraryException as e:
cpusockets = {}
socket_affinity = "N/A"
logging.debug("Failed to get socket affinity for gpu %s | %s", gpu_id, e.get_error_info())
static_dict['numa'] = { 'node' : numa_node_number,
'affinity' : numa_affinity,
'cpu_affinity' : cpu_affinity,
'socket_affinity' : cpusockets if cpusockets else "N/A"}
'socket_affinity' : socket_affinity}
if args.vram:
vram_info_dict = {"type" : "N/A",
"vendor" : "N/A",