Why would you limit a VM to 500Mhz on a 1Ghz core when only one thread can access at a time anyway's?
It's an example and the 1Ghz single core is for illistrative purposes only. VMware Hypervisor is virtualizing the physical 1 Core/ 1Ghz CPU and providing a virtual 1Ghz vCPU to multiple VM's. Multiple VM's would each have a 1Ghz vCPU and their respective OS's would be capable of running up to 1Ghz but the Hypervisor limit will restrict CPU utilization to 500Mhz.
Multiple VM's each with a 500Mhz CPU limit would happily share the single physical 1Ghz core assuming all VM's are not running at 100% all at the same time but no one VM could run more than 500Mhz. More than two VM's running simutaniously at 500Mhz would exceed the physical capability of the process and the Hypervisor would now share the physical 1Ghz CPU so 4 VM's running at 100% would each get 250Mhz each.
The reality is -
1. when CPU limits are placed on VM's, the physical CPU's are faster (eg 3Ghz) (Multicore (4/8/12/etc), and support Hyperthreadiing thus the limits are relevent to the VM and not the physical machine. Larger ESXi hypervisor servers can be built to ~3Ghz/40 Cores/512GB RAM+.
2. Irrespective of a VM's memory allocation, limit, and reservation, all VM's dont run at 100% simutaniously.
quote: "Now reservations act differently when setting it on a CPU than setting it on memory. When the virtual machine does not use its CPU cycles, these CPU cycles are redistributed to other active virtual machines"
if this statement it true then the first quote makes sense as difference is redistributed but again, how can it be when the core is busy though? i reserve 500Mhz on a 1Ghz core and i have 2 cores executing 500mhz each .. that can't be. Maybe one after another but one is waiting while other competes if its executing at same time.
Reservations are not limits. Reservations as they pertain to the above example ensures the Hypervisor has 500Mhz of CPU processing power for the VM whether it uses it or not.
In larger VM environments (100's-10,000 VM's) and because of the capabilities of multisocket, multicore servers, physical RAM becomes the linmiting factor well before CPU.
From...
http://pubs.vmware.com/vsphere-50/topic/com.vmware.ICbase/PDF/vsphere-esxi-vcenter-server-50-resource-management-guide.pdf
vCenter Server or ESXi allows you to power on a virtual machine only if there are enough unreserved resources to satisfy the reservation of the virtual machine. The server guarantees that amount even when the physical server is heavily loaded. The reservation is expressed in concrete units (megahertz or megabytes).
For example, assume you have 2GHz available and specify a reservation of 1GHz for VM1 and 1GHz for VM2. Now each virtual machine is guaranteed to get 1GHz if it needs it. However, if VM1 is using only 500MHz, VM2 can use 1.5GHz.
Reservation defaults to 0. You can specify a reservation if you need to guarantee that the minimum required amounts of CPU or memory are always available for the virtual machine.