A recent post on Microsoft’s about Linux support under Hyper-V was interesting. The original poster asked about using Hyper-V’s Linux Integration Service (LIS) with an SMP server. If you’re using Hyper-V and Linux, you probably already know that Microsoft limits you to a single CPU.
My first question is: Why?
Why does Microsoft only support a single CPU for Linux? It doesn’t make sense from a technical angle since Microsoft has already done the difficult work of getting Hyper-V to work on SMP systems. To me, really, this has to be a tactical move. Certainly, Microsoft is going to support SMP for Linux in the long-term. They’ll have to due to customer demand. But they can certainly stall a bit so that people wonder if it wouldn’t just be easier to run their application under a Windows VM.
So, my second question then is: Why?
Why allocate multiple CPUs to a VM? As someone that implements both VMware and Hyper-V in enterprise settings, I do know that for most tasks it’s actually better to allocate a single v-CPU to a VM, even on an SMP system, if you have multiple VM’s running. The hypervisor is going to do a much better job of allocating real CPUs to VMs than you, as a simple carbon-based life form, will generally be able to do. So it’s often the case that allocating multiple v-CPUs to a VM is counter-productive and reduces performance for the VM server as a whole. (There are edge cases where allocating multiple CPUs makes sense, but I wouldn’t consider that the norm.)
When you’re building your VM infrastructure, always keep in mind that what works well on top of real hardware often does not work well in VM environments.