When trying to set CPU reservation in MHz on a live VM, the operation fails with "Insufficient capacity on each physical CPU" - as per image below.
ESXi 7.x
The processor speed that is reported in ESXi/vCenter is up-rounded. For example, it reports a CPU speed as 2.1Ghz (or 2100 Mhz). However, in most cases the CPU speed is somewhat less, e.g. 2095564Hz - this can be seen by executing the esxcli command below:
$ esxcli hardware cpu list |
When making CPU reservations for a powered on VM, ESXi does NOT allow for slack room in CPU assignment and will use the exact physical speed (as per esxcli output above), e.g. 2 CPUs x 2095Mhz.
However, when making CPU reservations for a powered off VM, ESXi allows for a wiggle room and makes it possible to assign an up-rounded CPU in Mhz, e.g. 2 CPUs x 2100Mhz.
This issue has been fixed in ESXi 8.0 U2 EP2
Workaround
Power off the VM to assign an up-rounded CPU reservation.