What if instead of visiting each cpu individually, you visit by numa node and only consider thread grouping inside a numa node? Then you could go back to the old datastructure. You could also fall back to visiting by cpu directly if the node interface doesn't exist:
What if instead of visiting each cpu individually, you visit by numa node and only consider thread grouping inside a numa node? Then you could go back to the old datastructure. You could also fall back to visiting by cpu directly if the node interface doesn't exist:
user@host:~# ls -salh /sys/devices/ system/ node/node* /cpu* system/ node/node0/ cpu0 -> ../../cpu/cpu0 system/ node/node0/ cpu1 -> ../../cpu/cpu1 system/ node/node0/ cpu2 -> ../../cpu/cpu2 system/ node/node0/ cpu3 -> ../../cpu/cpu3 system/ node/node0/ cpu4 -> ../../cpu/cpu4 system/ node/node0/ cpu5 -> ../../cpu/cpu5 system/ node/node0/ cpu6 -> ../../cpu/cpu6 system/ node/node0/ cpu7 -> ../../cpu/cpu7 system/ node/node0/ cpulist system/ node/node0/ cpumap system/ node/node1/ cpu10 -> ../../cpu/cpu10 system/ node/node1/ cpu11 -> ../../cpu/cpu11 system/ node/node1/ cpu12 -> ../../cpu/cpu12 system/ node/node1/ cpu13 -> ../../cpu/cpu13 system/ node/node1/ cpu14 -> ../../cpu/cpu14 system/ node/node1/ cpu15 -> ../../cpu/cpu15 system/ node/node1/ cpu8 -> ../../cpu/cpu8 system/ node/node1/ cpu9 -> ../../cpu/cpu9 system/ node/node1/ cpulist system/ node/node1/ cpumap system/ node/node2/ cpu16 -> ../../cpu/cpu16 system/ node/node2/ cpu17 -> ../../cpu/cpu17 system/ node/node2/ cpu18 -> ../../cpu/cpu18 system/ node/node2/ cpu19 -> ../../cpu/cpu19 system/ node/node2/ cpu20 -> ../../cpu/cpu20 system/ node/node2/ cpu21 -> ../../cpu/cpu21 system/ node/node2/ cpu22 -> ../../cpu/cpu22 system/ node/node2/ cpu23 -> ../../cpu/cpu23 system/ node/node2/ cpulist system/ node/node2/ cpumap system/ node/node3/ cpu24 -> ../../cpu/cpu24 system/ node/node3/ cpu25 -> ../../cpu/cpu25 system/ node/node3/ cpu26 -> ../../cpu/cpu26 system/ node/node3/ cpu27 -> ../../cpu/cpu27 system/ node/node3/ cpu28 -> ../../cpu/cpu28 system/ node/node3/ cpu29 -> ../../cpu/cpu29 system/ node/node3/ cpu30 -> ../../cpu/cpu30 system/ node/node3/ cpu31 -> ../../cpu/cpu31 system/ node/node3/ cpulist system/ node/node3/ cpumap system/ node/node4/ cpu32 -> ../../cpu/cpu32 system/ node/node4/ cpu33 -> ../../cpu/cpu33 system/ node/node4/ cpu34 -> ../../cpu/cpu34 system/ node/node4/ cpu35 -> ../../cpu/cpu35 system/ node/node4/ cpu36 -> ../../cpu/cpu36 system/ node/node4/ cpu37 -> ../../cpu/cpu37 system/ node/node4/ cpu38 -> ../../cpu/cpu38 system/ node/node4/ cpu39 -> ../../cpu/cpu39 system/ node/node4/ cpulist system/ node/node4/ cpumap system/ node/node5/ cpu40 -> ../../cpu/cpu40 system/ node/node5/ cpu41 -> ../../cpu/cpu41 system/ node/node5/ cpu42 -> ../../cpu/cpu42 system/ node/node5/ cpu43 -> ../../cpu/cpu43 system/ node/node5/ cpu44 -> ../../cpu/cpu44 system/ node/node5/ cpu45 -> ../../cpu/cpu45 system/ node/node5/ cpu46 -> ../../cpu/cpu46 system/ node/node5/ cpu47 -> ../../cpu/cpu47 system/ node/node5/ cpulist system/ node/node5/ cpumap system/ node/node6/ cpu48 -> ../../cpu/cpu48 system/ node/node6/ cpu49 -> ../../cpu/cpu49 system/ node/node6/ cpu50 -> ../../cpu/cpu50 system/ node/node6/ cpu51 -> ../../cpu/cpu51 system/ node/node6/ cpu52 -> ../../cpu/cpu52 system/ node/node6/ cpu53 -> ../../cpu/cpu53 system/ node/node6/ cpu54 -> ../../cpu/cpu54 system/ node/node6/ cpu55 -> ../../cpu/cpu55 system/ node/node6/ cpulist system/ node/node6/ cpumap system/ node/node7/ cpu56 -> ../../cpu/cpu56 system/ node/node7/ cpu57 -> ../../cpu/cpu57 system/ node/node7/ cpu58 -> ../../cpu/cpu58 system/ node/node7/ cpu59 -> ../../cpu/cpu59 system/ node/node7/ cpu60 -> ../../cpu/cpu60 system/ node/node7/ cpu61 -> ../../cpu/cpu61 system/ node/node7/ cpu62 -> ../../cpu/cpu62 system/ node/node7/ cpu63 -> ../../cpu/cpu63 system/ node/node7/ cpulist system/ node/node7/ cpumap
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 lrwxrwxrwx 1 root root 0 Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 01:10 /sys/devices/
0 -r--r--r-- 1 root root 4.0K Apr 2 00:42 /sys/devices/