Intel's Xeon and Pentium 4 processors use a technology called hyper-threading to maximize performance. Hyper-threading makes a single physical processor appear to the operating system to be two processors. The two processors are referred to as "logical" processors -- similar to the same way that two logical partitions can be contained in a single physical partition on a hard disk. The result isn't quite the same as having two distinct physical processors, but is still capable of providing better multithreaded support than having one processor of a more conventional architecture.
Windows 2000 doesn't distinguish between physical and logical processors. The OS obtains all of its multiprocessor information from the system BIOS, so it's critical that the BIOS be authored correctly for Windows 2000 to properly interpret the number of processors present and how to use them. For instance, a system with two physical processors that use hyper-threading will report four logical processors, but will report them in this order:
Logical processor 1: in physical processor 1
Logical processor 2: in physical processor 2
Logical processor 3: in physical processor 1
Logical processor 4: in physical processor 2
This "staggering" or "interleaving" of processors insures that multithreaded programs will achieve better performance by having multiple threads assigned to separate physical processors first.
Because Windows 2000 doesn't distinguish between physical and logical processors, a BIOS that is not authored to Intel spec or which is misconfigured may misreport the processor information to Windows. The result may be a system that runs unnecessarily slowly, since threaded apps may be running on the same physical processor rather than spread out across multiple physical processors. One way to get around this is to forcibly assign processor affinity for applications (see an earlier tip of mine, Permanent processor affinity, for more on how to do this).
Also, a Windows 2000 Server system with a certain number of processor licenses may not use all the logical processors in the system. A four-way hyper-threading system will report eight processors to Windows 2000; Windows 2000 Server, which recognizes only four processors, will only use the first four logical processors and disregard the others. Windows 2003 Server intelligently recognizes the difference between logical and physical processors, however.
Serdar Yegulalp is the editor of the Windows 2000 Power Users Newsletter. Check out his Windows 2000 blog for his latest advice and musings on the world of Windows network administrators – please share your thoughts as well!