The evolution of vSphere has forced the hardware vendors to add more enhanced functionalities in server hardware in order to bring the best out of virtualization. Enhanced vMotion Compatibility comes into picture when a all Esxi hosts in a cluster are not identical i.e some hosts are from older generation and some from newer generations.
With time an environment grows and vSphere admins keep adding new Esxi hosts in a cluster as per virtual machine resource demands and this is when the mismatch occurs. When a cluster have Esxi hosts from different CPU generations, configuring EVC on cluster ensures that virtual machine migrations between hosts in the cluster do not fail because of CPU feature incompatibilities.
When EVC is enabled for a cluster, all hosts in that cluster are configured to present identical CPU features and ensure CPU compatibility for vMotion. The features presented by each host are determined by selecting a predefined EVC baseline. vCenter Server does not permit the addition of hosts that cannot be automatically configured to be compatible with the EVC baseline.
VMware EVC hides relevant CPU features that do not match across all vMotion-enabled hosts, such as clock speed or number of cores. This feature works for different versions of CPUs from the same chipmaker. VMware EVC cannot enable vMotions between AMD and Intel processors, however.
VMware KB-1003212 explains in a great details about EVC baselines and how to determine which EVC baseline is suitable in your environment. EVC modes are also dependent on the version of vCenter Server. Below image shows the relationship between vCenter server version and EVC baselines.
To keep things short, there are basically 2 operations that can be done while enabling EVC mode:
- Raising EVC Mode: When the EVC level is raised the VM’s can remain powered on. However the VM will be able to take advantage of the new features until they are powered completely off and then powered back on.
- Lowering EVC Mode: When the EVC Mode is lowered the VM’s must be powered off, and then powered back on.
VMware CPU /EVC Matrix
You can check VMware compatibility guide page related to CPU where you’ll find if your CPU within your cluster is compatible with a version of ESXi/vCenter server deployed. The compatibility matrix allows you to select the version of ESXi, the CPU type and then by clicking the CPU/ EVC Matrix you can see which EVC mode is supported for a given CPU family.
Enabling EVC on clutser.
In order to enable VMware EVC on your hosts & Cluster you will have to ensure the following Bios settings are enabled for each of the involved cluster:
- Hardware Virtualization is Intel VT on Intel processors and AMD-V on (supported) AMD processors
- Execute Protection is Intel eXecute Disable (XD) on Intel processors and AMD No eXecute (NX) on AMD processors
To Configure EVC select the Cluster and navigate to Manage > Settings > VMware EVC and click on Edit
Select an appropriate baseline for EVC as per CPU architecture of your Esxi host.
I selected ‘Intel Westmere” baseline since I’m running on Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz processor for my nested lab and its compatible with Westmere baseline.
Please ensure you see a validation succeeded message when you are trying to select a pre-defined baseline.
Expanding Mode and Current CPUID Details provides further information on the EVC mode selected together with the values set for the CPUID flagswhich are inherited by newly created VMs henceforth.
Drwaback of using EVC
Usually, newer CPUs has a newer set of instructions, is more performant, more efficient. Your applications might take a real benefit to using them perhaps, but if EVC is applied and “downgrades” the level to a point where those instructions are not showing, obviously, your applications might run a little bit slower, than they would if they had the underlying CPU.
I hope you find this post informational. Feel free to share this on social media if it is worth sharing. Be sociable 🙂