If you’ve ever looked around the VMware vSphere client and looked at the ‘Edit Settings’ properties of a Virtual Machine, you may have come across the vCPU Settings.
You’ll see that there is a couple of settings that, at first, may seem either counter intuitive or plainly confusing. In the vCPU settings, you will notice that there is an option to set the number of virtual sockets and another option to set the number of cores. This option came with vSphere 4.1 in the advanced parameters section and the more upfront and central with the vCPU ‘Edit Settings’ GUI in vSphere 5.0 and hardware version 8.
But why, you may ask, is the point? I mean, after all a virtual CPU is a virtual CPU and they are all created equal?
Well yes… And no…
First of all, remember that regardless of sockets or cores, you cannot assign more virtual CPU’s than you have physical CPU’s in your host. It’s against the law… Of physics, unless you’re using hyper threading, but even if you add up all of those, you still cannot have more then that! :-)
But back to the point of the post, why sockets and cores, instead of just vCPU’s?
VMware included this in order to allow their customers to save money on either Operating System or software licensing costs. Some, but not all, software is charged for by the socket, both for purchasing and support. This can very quickly get expensive. vSphere gives you the opportunity to gain an advantage with the vCPU setup and be within the legal licensing requirements for your OS or software vendor of choice!
Of course, if you have to pay for the license on a per core basis, then sorry, but you’re out of luck!