in src/worker/exporters/node_exporter.py [0:0]
def get_core_numa_mapping(core_count):
cmd = 'numactl --hardware'
output = shell_cmd(cmd, 5)
numa_mapping = {}
lines = output.split('\n')
for line in lines:
if 'node ' in line and 'cpus' in line:
current_numa_domain = int(re.search(r'node (\d+)', line).group(1))
if ':' in line:
cpus_str = line.split(': ')[1].split()
for cpu in cpus_str:
numa_mapping[int(cpu)] = current_numa_domain
if len(numa_mapping.keys()) != core_count:
numa_mapping = {}
cmd = 'lscpu -e=cpu,node'
output = shell_cmd(cmd, 5)
lines = output.split('\n')
for line in lines:
if 'CPU' in line.upper() or line.strip() == "":
continue
cpu, node = line.split()
numa_mapping[int(cpu)] = node
return numa_mapping