

So limiting a process to cpus 0 and 12 would be allowing use of two threads on the same core, while limiting it to cpus 0 and 2 would be two threads on two different cores. The Intel CPU dispatcher does not only check the vendor ID string and the. bits are the identifier "used by the OS", which leads me to believe these are the ones I need to pass to cpu sets. Overview of CPU dispatching in Intel software - Agner Fog. Lstopo from the hwloc package seems to show me the answer to (2), and if I'm reading the man page correctly the P#. siblings on a core)Īre the numbers that lscpu outputs the same identifiers I should use to refer to cpu set processors? If so, it seems the numbers are alternated here, and this answers (1) with "evens are one processor, odds are the other processor", but I'm not sure if I'm reading it correctly. My challenges are 1) determine which cpuset ID numbers map to which processor 2) determine which cpuset id numbers are paired (e.g. My current machine has two Intel Xeon E5645s, each of which has 6 cores and hyperthreading enabled, so I have 24 total processing units I can refer to with cpusets. What is interesting in this case is the pseudo serializing property of RDTSCP.

The man for cpuset doesn't seem to clearly list how to figure out which numbers map to which processing units. The value of the timestamp register is stored into the EDX and EAX registers the value of the CPU id is stored into the ECX register (On processors that support the Intel 64 architecture, the high order 32 bits of each of RAX, RDX, and RCX are cleared).
