In today’s post we’ll see what is EVC, in which case is needed and how we can enable it on VMWare cluster.
What is EVC
Let’s see first what is EVC – source VMWare:
EVC stands for Enhanced vMotion Compatibility. This is a vCenter cluster feature which simplifies vMotion compatibility issues across CPU generations. EVC automatically configures server CPUs with Intel FlexMigration or AMD-V Extended Migration technologies to be compatible with older servers.
After EVC is enabled for a cluster in the vCenter Server inventory, 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.
Now that we know what is EVC, let me tell you bit about how we found out that we have to enable this feature.
In which case is EVC needed
We were asked by one of our customers to do a complete upgrade of the VMWare infrastructure from version 6.0 to 6.5. The customer has a cluster of 15 HP DLE360 G9 servers and lately he added two servers more.
After these two hosts have been added, some more VMs have been deployed in the cluster and they “landed” on these two ESXi hosts.
At that moment, on these two hosts were running VMs that migrated via DRS from the “older” hosts and also new VMs that were installed on these two new hosts from the beginning.
Prior starting the upgrade we did some checks and we noticed that the new VMs that were installed on the new added hosts, could not migrate to the older hosts. When trying to manually migrate them, we were getting this error:”The target host does not support the virtual machine’s current hardware requirements. To resolve CPU incompatibilities, use a cluster with Enhanced vMotion Compatibility (EVC) enabled. See KB article 1003212.”
As you can see, vCenter is warning that there are CPU incompatibilities between the hosts and is suggesting to solve this problem by enabling EVC on the cluster.
It seems that the lately added hosts are having a different CPU generation. So let’s see their configuration and their supported EVC modes.
The following two screenshots were taken after EVC has been activated and ESXi hosts have been upgraded. So it can be noticed here that EVC is already activated in Intel “Haswell” Generation.
But let’s focus at this point at the Processor Type of these two kind of hosts.
Here is the type of hosts 1-15:
And this is the type of hosts 16-17:
Indeed, the CPU generation of the new hosts is different than the previous ones and the highest common CPU Generation Baseline for these 17 hosts is Intel “Haswell” Generation. The first 15 hosts are already running with this Baseline, we only have to downgrade the Baseline from Broadwell to Haswell on the two new hosts .
After finishing previously mentioned checks, we can go ahead with EVC activation. To activate it, we have to select the cluster, go to configuration, select VMWare EVC and then Edit.
Because in our case, the servers are equipped with Intel CPUs, we have selected Enable EVC for Intel Hosts and chose VMWare EVC Mode to Intel Haswell Generation. After vCenter did some checks, we got this compatibility error for the last two hosts.
As the error suggests, in order to be able to enable EVC on the cluster, we have to power off all the machines running on these two new hosts.
After the VMs have been powered off, we enabled Maintenance mode on hosts.
Once the hosts are in Maintenance mode, we’ll set again VMWare EVC Mode to Intel Haswell Generation and now we’ll not get errors anymore. At this point we can successfully activate EVC.
After EVC is activated, we can disable Maintenance mode on these hosts and we can power on the machines. The new hosts will start now in EVC Haswell generation mode.
Now EVC is working on the entire cluster and we can see that the VMs from the new hosts can migrate to the older hosts without any problem.
I will recommend to activate EVC from the beginning, even if you have hosts of the same type and no plans for expansion. You will save this way time and avoid potential problems.
You can also do it after you added new hosts with a different CPU Generation, but this could bring you some inconvenience, cause it might be possible to power off some VMs before beeing able to activate EVC.
But either you do it at the start or after adding a new host, EVC should be active in order to maintain the functionality of vMotion across all ESXi hosts in the cluster.