def get_core_numa_mapping()

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