-def parse_cpuinfo(cpuinfo):
- socket_map = {}
-
- lines = cpuinfo.splitlines()
-
- core_details = []
- core_lines = {}
- for line in lines:
- if line.strip():
- name, value = line.split(":", 1)
- core_lines[name.strip()] = try_int(value.strip())
- else:
- core_details.append(core_lines)
- core_lines = {}
-
- for core in core_details:
- socket_map.setdefault(core["physical id"], {}).setdefault(
- core["core id"], {})[core["processor"]] = (
- core["processor"], core["core id"], core["physical id"])
-
- return SocketTopology(socket_map)
-
-