EVC Mode in simple words, Enhanced vMotion Compatibility leverages us to migrate VM across different Processor families of same type.
For every infrastructure an eras come when they have mixture of old and new hardware. Since Client don’t what to get rid of existing/old infra, we need to make a compatibility between the old processor and new processor generation. We achieve by enabling EVC mode at Cluster level in VMware. So it provide the boundless assistance that we can use the same old hardware with new one without much difficulty.
Most of the people ask since the VM are virtualized how CPU matter in different processor families? Answer is very simple when we power on a VM it take the CPU architecture of the base machine. Once we try to migrate it gives an error similar to below and fails to migrate.
Host CPU is incompatible with the virtual machine's requirements at cupid level 0x1 register'ecx' Host bits: 0000:0100:0000:1000:0010:0010:0000:0001 Required: 1000:0100:0000:100x:xxx0:0x1x:xxx0:x001 Mismatch detected for these features: *General incompatibilities; refer to KB article 1993 for possible solutions.
For more on compatibility please refer vmware compatibility guide.
Make a note how easy is to enable the EVC, challenging can be disabling the EVC mode. Let first look at the EVC option available now at Intel processor family.
- Intel® “Merom” Generation
- Intel® “Penryn” Generation
- Intel® “Nehalem” Generation
- Intel® “Westmere” Generation
- Intel® “Sandy Bridge” Generation
- Intel® “Ivy Bridge” Generation
Hope Intel® ” Haswell” Generation comes soon!!!
Please follow the KB 1003212 for more detail.
Requirement of EVC
- All hosts in the cluster must have CPUs from a single vendor, either AMD or Intel.
- All hosts in the cluster must have advanced CPU features, such as hardware virtualization support (AMD-V or Intel VT) and AMD No eXecute (NX) or Intel eXecute Disable (XD) and must be enabled in the BIOS.
- All hosts in the cluster should be configured for vMotion.
- All hosts in the cluster must be connected to the same vCenter Server system.
So how exactly EVC works, there are number of doc available but as per my simple understanding. Suppose we have two different servers with one having Sandy Bridge processor family and other with Ivy Bridge. When we enable the EVC we need to specify the base line to the lowest available processor family that is Sandy bridge. Which means the advance processor i.e. Ivy will get downgraded to Sandy. For more detail which baseline to select please to refer VMware compatibility guide.
Please refer the below image for more detail.
Since EVC is enabled what people ask the first question is does it impact the performance? answer is yes but not to that extent. You can refer Derek Seaman blog for detail description http://www.derekseaman.com/2012/09/how-much-does-evc-mode-matter-and-which.html. As far my personal experience is concerned, we have enabled the EVC and migrated the VM online. Later after a year we have disabled the EVC and found no considerable difference. Workload density was same, moreover for detail information we took esxtop data from the ESXI during and after disabling the EVC. Since its client related data I can’t share the same but was not that great noticeable difference.
Next question comes how can we disable the EVC. Right click the edit setting at Cluster. Go to EVC and disable. Note step to disable the EVC is correct but it’s not that simple. We need to power off the VM so that we can disable the EVC. As when we are trying the disable the EVC it fails as the CPU structures are taken by VM’s and when we try to make the change in the feature of CPU it fails as it cannot overwrite the CPU architecture online. We need to take the downtime for each VM running in the Cluster. It might be very difficult in the production environment to take a downtime of multiple VM at a same time. So we need to be very careful before enabling the EVC Mode.
Incase of Hyper-V same setting is available at VM level not at cluster level which simplify the work for enabling EVC or Disabling. As far as KVM is concerned we can live migrate not only different generation but different vendor link.