My friend Fred has a VMware infrastructure and lately, he started running out of Compute resources. I advised him to get additional hosts to beef up his resources and increase his availability posture. Everything went perfectly as far as adding the host to his vCenter was concerned. He started having an issue with vMotion.
vMotion is a technology that migrates Virtual Machines (VMs) between servers to balance resources or to free up a host for maintenance purposes.
The issue Fred was having is that the CPU generation between the new servers and the existing ones was different. Whether you use Intel or AMD CPUs, they were built within a certain generation that determines how the processor operates. If you are using CPUs that are not in the same generation, migrating workloads from one Gen to the other one while the VM is running may pose compute issues. This is why Fred started getting an error. This is the error he started receiving whenever he tried to perform vMotion to balance resource utilization.
“The target host does not support the virtual machine’s current hardware requirements. Use a cluster with Enhanced vMotion Compatibility (EVC) enabled to create a uniform set of CPU features across the cluster, or use per-VM EVC for a consistent set of CPU features for a virtual machine and allow the virtual machine to be moved to a host capable of supporting that set of CPU features. See KB article 1003212 for cluster EVC information.” –Some lines were omitted for brevity.
From the above output, it is obvious that Fred needed to configure an additional feature of VMware for his vMotion to work. That feature is EVC (Enhanced vMotion Compatibility).
What is EVC?
EVC is a feature that is configured in the vCenter Server at the cluster level. EVC ensures vMotion compatibility for all your hosts in a vSphere cluster. When this is configured, it ensures that all hosts in a cluster present the same CPU features to virtual machines, even if the actual CPUs on the hosts are not of the same generation (e.g. Skylake, Broadwell, Haswell, Ivy Bridge, Sandy Bride etc).
All the host processors in the cluster present the features of the baseline processor (the earliest generation CPU in the cluster) EVC uses AMD-V Extended Migration technology (for AMD hosts) and Intel FlexMigration technology (for Intel hosts) to mask processor features so that hosts can present the feature set of the earlier generation of processors.
Are there serious drawbacks with limiting yourself to an older version of CPU using EVC? Well, when you enable EVC on your vSphere cluster, it does not prevent a VM from:
- Utilizing faster processor speeds,
- Consuming increased numbers of CPU cores
- Taking advantage of hardware virtualization support that might be available on newer hosts.
Simply put, EVC does not prevent virtual machines from accessing hidden CPU features.
Keep in mind:
To turn ON EVC for existing infrastructures, you might have to shut down all Virtual Machines running on the cluster. Most production environments cannot afford such downtimes, and this creates problems when vMotion becomes necessary. The advice is to always configure EVC during cluster creation during the initial setup of the virtual infrastructure.
Another great feature is to enable EVC, not at the ESXi host level but the VM level. When per-VM EVC is configured, it enables the migration of the virtual machines beyond the cluster and across vCenter Server systems and data centers that have different processors (e.g. VMware on AWS).
With Per-VM EVC, the EVC mode becomes an attribute of the virtual machine rather than the specific processor generation it happens to be booted on in the cluster. VMware introduced per-VM EVC starting from vSphere version 6.7 and it requires virtual machine hardware version 14 or later for the feature to work properly.
The per-VM EVC mode determines the set of host CPU features that a virtual machine requires to power ON and migrate.
Please note, per-VM EVC is disabled by default on all virtual machines. To enable, disable or change the EVC mode of a VM, it must be shut down first. Similar to the host or cluster level EVC, Lowering the EVC baseline increases the CPU compatibility of the virtual machine.
Cluster level EVC vs Per-VM EVC
There are several differences between the way the EVC feature works at the host or cluster level versus at the virtual machine level.
- Unlike cluster-based EVC, you can change the per-VM EVC mode only when the virtual machine is shut down.
- With cluster-based EVC, when you migrate a virtual machine out of the EVC cluster, a simple power cycle resets the EVC mode that the virtual machine has.
- With Per-VM EVC, the EVC mode becomes an attribute of the virtual machine. A power cycle does not affect the compatibility of the virtual machine with different processors.
- When you configure EVC at the virtual machine level, the per-VM EVC mode overrides cluster-based EVC. If you do not configure per-VM EVC, when you turn ON the VM, it inherits the EVC mode of its parent EVC cluster or host.
- If a VM is in an EVC cluster and the per-VM EVC is also enabled, the EVC mode of the virtual machine cannot exceed the EVC mode of the EVC cluster in which the virtual machine runs. The baseline feature set that is configured for the virtual machine cannot contain more CPU features than the baseline feature set applied to the hosts in the EVC cluster.
Let me give you an example: if you configure a cluster with the Intel “Merom” Generation EVC mode, you should not configure a virtual machine with any other Intel baseline feature set. All other sets contain more CPU features than the Intel “Merom” Generation feature set and as a result of such configuration, the virtual machine would certainly fail to power ON.
It is important to ensure all VMs are able to migrate without downtime (using vMotion). EVC provides compatibility across CPUs of various generations, unleashing the power promised by virtualization (hardware-agnosticism). With the new version of VMware providing the ability to do EVC at the VM-level, we now have more flexibility to enable the hybrid-cloud infrastructure.
Apotica deploys a large portfolio of Next-Generation technologies and is uniquely positioned to advise on the next steps to help with your data center strategy. You can request a free consultation here. To enquire about any equipment or software, call us on +233.54.431.5710 or write to firstname.lastname@example.org.
Apotica is headquartered in Accra, Ghana and brings together the best information and communications technologies to help clients grow, compete and serve their customers better. Apotica is an ISO 27001 and 9001 Certified Organization.