I used to run 32bit Mint on a dual core Pentium with 4GB of RAM that I threw together for $500 in 2009. Because the OS was 32bit and the CPU didn’t have VT-X, I could never have multiple cores in my virtual machines. With only 2 cores and 4GB of ram, there wasn’t much point anyway as the 6 VMs I was running by the time I upgraded were always too busy struggling with their tiny rations of RAM to be able to use more CPU power. (They all ran from an SSD, so a little bit of swapping, while slow, wasn’t total game over.

I recently replaced the motherboard with something more modern, allowing me to fit a Core i5 quad CPU and 16GB of RAM with free slots to allow upgrading to 32 one day. I did a fresh install of 64bit Ubuntu Server since I’ve grown out of needing a gui. I bumped up all the VMs to 2 CPU cores and increased their RAM 50-100%, which caused them all to fly. The XP VM however, only recognised one of the cores. This is because when I installed the OS, it only had one so a single processor hardware address layer was installed. Luckily despite M$’ recommendations to reinstall, there is a very simple way to force a change to a multiprocessor HAL.

  1. Create a snapshot of your VM (just in case things go bad)
  2. Ensure that IO APIC is enabled in the motherboard tab of virtual box.
  3. Increase the number of CPU cores to more than 1 and start up the VM. You should see all the cores listed under processors in the device manager, but only 1 in Task Manager.
  4. Execute the following command from a DOS prompt and allow a reboot:

Execrundll32 syssetup,SetupInfObjectInstallAction ACPIAPIC_MP_HAL 128 %windir%\inf\hal.inf

Thanks to Alex Klink for this.