Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

As virtualization environments grow and evolve, IT administrators face a common challenge: maintaining workload mobility across ESXi hosts with different CPU generations. This is where Enhanced vMotion Compatibility (EVC) becomes essential. In this comprehensive guide, I’ll walk you through everything you need to know about configuring EVC mode in VMware vSphere, based on real-world experience and best practices.
Enhanced vMotion Compatibility (EVC) is a vSphere cluster feature that ensures virtual machines can seamlessly migrate between ESXi hosts running different CPU generations from the same vendor. Think of it as a CPU instruction set equalizer that creates a uniform computing baseline across your cluster.
When you enable EVC, vSphere masks certain CPU features on newer processors to match the capabilities of older ones in the cluster. This creates a consistent CPU instruction set (CPUID baseline) that all VMs see, regardless of which physical host they’re running on.
In today’s dynamic data centers, you’ll likely encounter this scenario: your three-year-old servers need expansion, but those original processors are no longer available. Without EVC, adding new hosts with modern CPUs would prevent live migrations between old and new hardware. EVC solves this challenge elegantly.
The feature has zero performance overhead on your infrastructure. While newer CPU instructions may be masked, your existing workloads continue performing as before, and you gain the critical ability to scale your cluster without downtime.
Before diving into configuration, ensure your environment meets these essential requirements:
The EVC baseline you can select is determined by the oldest processor in your cluster. While you can technically choose an even older baseline, there’s rarely a practical reason to do so. The VMware Compatibility Guide is your best resource for identifying which EVC modes work with your specific processors.
EVC baselines correspond closely to specific processor generations and their feature sets. For example:
Intel Baselines
AMD Baselines
Each successive generation includes additional CPU instructions. When you select a baseline, VMs can only access instructions available in that generation, even if the physical processor supports more advanced features.
Enabling EVC when creating a new cluster is the ideal approach—it prevents complications later. Here’s the step-by-step process:
Enabling EVC on a cluster with running workloads requires more careful planning. Here’s the process:
This scenario is more complex. You have several options:
Option 1: Selective Shutdown (Recommended)
Option 2: Complete Shutdown
Option 3: Create Temporary Cluster (For vCenter Server as VM) This is necessary when vCenter itself runs as a VM in the cluster you want to enable EVC on:
After enabling or changing EVC mode, you must power off and power on affected VMs (not just reboot). A simple reboot doesn’t apply the new CPUID settings. The VMs need a full power cycle to pick up the configured EVC baseline.
Since vSphere 6.7, you can set EVC mode at the individual VM level, providing greater flexibility for hybrid cloud and cross-cluster migrations.
The per-VM EVC configuration is stored in the VM’s .vmx file and travels with the VM during migrations. You’ll see entries like:
featMask.vm.cpuid.Intel = "Val:1"
featMask.vm.cpuid.FAMILY = "Val:6"
featMask.vm.cpuid.MODEL = "Val:0x4f"
Important: If a VM’s per-VM EVC baseline exceeds what the ESXi hosts support, the VM will fail to power on.
Sometimes you need to adjust your cluster’s EVC baseline—perhaps after retiring older hosts or adding newer hardware.
You can increase the EVC mode when all hosts in the cluster support the higher baseline:
Reducing the EVC baseline is more restrictive:
After configuring EVC, verify everything is working correctly:
powershell
Get-Cluster | Select Name, EVCMode
Get-VM | Select Name, @{N="VM Hardware Version";E={$_.Version}}, @{N="Per-VM EVC";E={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}}
Cause: The host’s CPU doesn’t support the cluster’s EVC baseline, or features are hidden by the EVC mode.
Solution:
Cause: VMs are using CPU features that would be masked by the EVC mode.
Solution:
Cause: The vCenter Server VM itself needs to be powered off, but it’s required to enable EVC.
Solution: Use the temporary cluster method described earlier.
Cause: The VM’s EVC baseline exceeds what cluster hosts support.
Solution:
Cause: Intel’s Transactional Synchronization Extensions may be disabled via microcode on Haswell processors.
Solution: If TSX is disabled, select the Ivy Bridge EVC baseline instead of Haswell.
Based on practical experience managing EVC across numerous environments, here are proven best practices:
The easiest time to enable EVC is when creating a new cluster. Even if you have uniform hardware today, enabling EVC costs nothing and provides future flexibility.
Choose the EVC baseline that matches your oldest processor. Don’t select an older baseline than necessary—it unnecessarily limits available CPU features.
Maintain clear documentation including:
When planning hardware purchases, consider:
If you’re planning cloud migrations or multi-cluster workloads, implement per-VM EVC to maintain flexibility.
While EVC has no inherent performance penalty, monitor applications after:
In lab or staging environments:
Newer vCenter versions support the latest CPU generations and EVC baselines. Keeping vCenter updated ensures you can leverage modern hardware.
Periodically review:
Remember that EVC:
Understanding how EVC interacts with other vSphere features helps you design robust solutions:
EVC doesn’t impact HA functionality. When HA restarts a VM on a different host, the VM is power-cycled, automatically picking up the correct CPUID from the new host.
DRS works seamlessly with EVC. The uniform CPU baseline ensures DRS can balance workloads across all cluster hosts without compatibility concerns.
This is EVC’s primary purpose—enabling live migration between hosts with different CPU generations. With EVC enabled, vMotion operates normally across dissimilar hardware.
Storage vMotion is unaffected by EVC settings. You can migrate VM storage regardless of EVC configuration.
Fault Tolerance requires even stricter CPU compatibility than standard vMotion. Ensure your EVC baseline supports FT requirements for critical VMs.
A common concern is whether EVC impacts VM performance. Here’s what you need to know:
Performance considerations arise when:
VMware’s own testing shows minimal performance differences across most workloads. For latency-sensitive or compute-intensive applications, consider:
As virtualization continues evolving, keep these trends in mind:
VMware introduced Custom EVC, allowing you to define baselines based on the common features of specific hosts, rather than predetermined generations. This provides more flexibility than traditional EVC baselines.
For workloads using graphics processors, vSphere 7 Update 1 introduced EVC for GPU, enabling vMotion between hosts with different GPU models while maintaining graphics compatibility.
With increasing hybrid and multi-cloud adoption, per-VM EVC becomes critical for workload portability between on-premises and cloud environments.
Enhanced vMotion Compatibility is one of those vSphere features that seems complex initially but becomes indispensable once you understand it. By creating a uniform CPU instruction baseline across your cluster, EVC ensures your virtualization environment remains flexible and scalable as hardware evolves.