Hi Daniel,
> You don't need to access it via the /node/ hierarchy > > The canonical path for CPUs would be > > /sys/devices/system/cpu/cpuNNN/topology > > The core_cpus_list file is giving you hyper-thread siblings within > a core, which I don't think is what you want. > > If you're after discrete physical packages, then 'package_cpus_list' > gives you all CPUs within a physical socket (package) I believe. > Yes, this could work. However, on laptop, I've got: cat package_cpus_list 0-11 Where on server: package_cpus_list 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46 I asked my teammate: always the same results. This is I guess due to either a difference in the kernel version or how the kernel is handling the case where there is only one package, versus the case with multiple packages. Anyway, writing a C function to handle both cases might not be easy. The other solution would be to loop through /sys/devices/system/cpu/cpuNNN/ and update a table of integer of a fixed size (*) where I increment table[0] for package_0 when I encounter a CPU that belongs to package_0 and so on. Reading cpuNNN/topology/physical_package_id is giving to whom package the cpu belongs to. This is a bit tedious but a safer solution, I think. (*): Maybe dynamic allocation is better ? Thanks again for your guidance. Regards, Anthony