I am doing an application benchmark with multiple instances of the same application. I found out that pinning their processes (with sched_setaffinity under Linux, with TaskManager under Windows) to specific CPUs increases performance. So I would have:
* whatever.exe pinned to CPU 1 * whatever.exe pinned to CPU 2 * whatever.exe pinned to CPU 3 * whatever.exe pinned to CPU 4
each whatever.exe has its own buffers and heap memory. I want to avoid that a process on CPU 1 has to access RAM from CPU 2 because with the Core Microarchitecture from Intel, this would need a QPI hop to the next processor.
How can I determine under Windows, which CPU's RAM is being used by a process? How can I do this under Linux?
I am thinking of an answer like "process X has its RAM from physical RAM address Y to Z and CPU A is directly connected to RAM from address B to C".
Is there a Windows tool to get this kind of answer?