VMware does gang scheduling. All the vCPUs of a VM are scheduled onto run on physical cores at the same time. The VM must wait for enough cores to be available. Easy on single vCPU machines, more difficult on 2 or 4 vCPU machines. On VMware, if you’re over allocating CPU, the fewer vCPUs the better or you’ll start to see scheduling delays.
HyperV decided that modern operating systems can deal with out-of-step processing and it will schedule individual vCPUs as physical CPUs become available. So a 4vCPU machine doesn’t have to wait for 4 cores to be free. Win2008 and above can deal with out-of-step processing.
The article suggests newer Linux kernels support out-of-step processing too. http://www.virtuallycloud9.com/index.php/2013/08/virtual-processor-scheduling-how-vmware-and-microsoft-hypervisors-work-at-the-cpu-level/