Файловая система sys знает all об этом:
$ ls /sys/devices/system/cpu
cpu0 cpu2 cpuidle possible sched_mc_power_savings
cpu1 cpu3 online present
$ ls /sys/devices/system/cpu/cpu0/topology/
core_id core_siblings_list thread_siblings
core_siblings physical_package_id thread_siblings_list
Вот документация
Используя эту файловую систему, вы можете узнать, сколько у вас процессоров, сколько у них потоков, какие процессоры находятся рядом с какими другими процессорами, и какие процессоры совместно используют кэши с какими другими.
Например - Q: с какими процессорами cpu0 делится своим кэшем L2?
$ cat /sys/devices/system/cpu/cpu0/cache/index2/{type,level,shared_cpu_list}
Unified
2
0-1
A: Он разделяет унифицированный кеш L2 с процессором cpu1 (и самим собой).
Другой пример: Q: какие процессоры находятся в том же физическом пакете, что и cpu0 (на более крупной машине):
cat /sys/devices/system/cpu/cpu0/topology/core_siblings
00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000055
A: ядра 0, 2, 4 и 6. (взято из битовой комбинации выше, lsb = cpu0)
не во всех системах linux есть файловая система sys, и она не всегда находится в корне. (возможно в proc / sys?). форма thread_siblings_list не всегда доступна, но есть нить thread_siblings (битовый шаблон).