Normally I wouldn't need to deal with this question. I would simply specify a number of threads and let them loose on the system. However, I need to pin processes to specific sockets for tests I'm doing.
I have a dual-socket system with 2 E5-2650v4 (Broadwell) processors, each with 12 cores. I would have thought that the first twelve cores (0-11) were on Socket 0 and the other twelve (12-23) were on Socket 1. Results indicate that this assumption is incorrect. Hyperthreading is turned OFF. Looking at the Linux /proc/cpuinfo file, I now am thinking, based on the "physical id" field, that cores 0-5 and 12-17 are on Socket 0 and cores 6-11 and 18-23 are on Socket 1.
Can someone confirm that this "interleaving" of the core numbers is indeed the case on such a system? Or how I can confirm or refute this new assumption? I've done internet searches, but can only find pages detailing the physical numbers or the performance. Everyone else is just launching threads and letting them run as they will on the system for their tests, I guess.