This section describes where Microsoft falls short, and where THG has developed a better alternative. First, let's look at the Task Manager provided by Windows XP, which already allows you to assign certain tasks manually.
If you have an HT/SMP system, selecting the "Processes" tab in the Task Manager and right-clicking a program will bring up the option "Set Affinity." This option gives you the ability to choose which CPUs the program can use.
Setting affinity in Windows Task Manager
Dialog box for selecting CPUs
HyperThreading can give you a slight performance boost if you have the right applications. Some programs benefit considerably from HT, while others may become markedly slower. The radical cure in this case - to fully deactivate HT in BIOS - may backfire by reducing overall performance significantly. Windows XP is especially optimized for HT; deactivating it will slow down the operating system considerably. The solution is to just deactivate HT for the one program in question. And, since an HT processor is listed as two physical CPUs in the system, that merely entails assigning the software to a certain CPU. In other words, you prevent the program from using the second, logical processor.
At this point, the only problem is figuring out which CPU is physical and which is virtual.
Again, the solution is simple. Windows always follows the same sequence when counting processors: first the physical and then the virtual CPUs. In a system with two Xeon HT processors, CPU0 and CPU1 are the physical CPUs, while CPU2 and CPU3 are the virtual ones.
Sequence of physical and virtual processors
So, to deactivate HT on the first CPU of a dual Xeon system for a specific program, you have to lock the third CPU (CPU2) out of the process.