- Joined
- Jul 11, 2001
- Messages
- 12,827
I have two similar hypothetical scenarios here that Im curious about:
On my Q6600, if only two cores are being used by a particular program, that could mean the two cores that are being used are sharing a single block of L2 cache (not ideal), or that each core has its own block of L2 cache (ideal) all depending on which two cores are used.
Similarly, I have an older Dual Xeon rig. Each of the Xeons has hyperthreading for a total of 4 virtual processors. If only two of the virtual processors are being used, the program could either be running on two virtual processors from the same physical processor (certainly not ideal), or two virtual processors from different physical processors (ideal).
In these sorts of situations what exactly determines which cores or virtual processors a program runs on to ensure maximum performance? Is this something the OS handles automatically, without the need to set affinity or anything? Is there any difference in the way this is handled in XP vs. Vista?
On my Q6600, if only two cores are being used by a particular program, that could mean the two cores that are being used are sharing a single block of L2 cache (not ideal), or that each core has its own block of L2 cache (ideal) all depending on which two cores are used.
Similarly, I have an older Dual Xeon rig. Each of the Xeons has hyperthreading for a total of 4 virtual processors. If only two of the virtual processors are being used, the program could either be running on two virtual processors from the same physical processor (certainly not ideal), or two virtual processors from different physical processors (ideal).
In these sorts of situations what exactly determines which cores or virtual processors a program runs on to ensure maximum performance? Is this something the OS handles automatically, without the need to set affinity or anything? Is there any difference in the way this is handled in XP vs. Vista?