I run several Windows Server 2003 machines in a virtualization cluster called Virtual Iron. For a while VirtualIron could only support uni-processor virtual Windows machines. So all of my currently running machines were installed on uni-processor hardware.
Recently, VirtualIron released the much awaited version 4. One of the many new features of this version, was that you can now create multi-processor Windows guests. Today, I decided to change one of my guests to have two processors. I then restarted the machine, excited to see it run with double the processing power that it had before. However, there was a problem…
Once the machine came back up and I logged in, I found that it still only saw one processor. This can be verified by checking this address in the registry:
After doing some research and checking in with VirtualIron tech support, it was determined that the Windows system was using a uni-processor HAL (Hardware Abstraction Layer). You can find some information on the HAL here. Sometimes you can manually switch the HAL from single to multiprocessor. It is as simple as changing a device driver in device manager. However, when I went to change it, I noticed that it would not give me any other HAL options to choose from. I am still researching why this is. However, so far it looks as though it may have been caused by installing R2 on the system.
Arg…so difficult to get Windows 2003 Server to recognize multiple processors. Had this box been Linux, I’d simply need to change grub to boot a SMP kernel and reboot. As a side note, I had to reboot this windows box about three times to try to switch it to multi-processor and it still didn’t recognize them in the end. Frustrating, to say the least.