VMware EVC Mode Explained
What is EVC?
EVC stands for Enhanced vMotion Compatibility which is a vCenter Server cluster-centric feature allowing virtual machines to vMotion or migrate across ESXi hosts equipped with dissimilar processors in the same cluster. VMware EVC Mode works by masking unsupported processor features thus presenting a homogeneous processor front to all the virtual machines in a cluster. This means that a VM can vMotion to any ESXi host in a cluster irrespective of the host’s micro-architecture examples of which include Intel’s Sandy Bridge and Haswell. One caveat to remember is that all the processor(s) must be from a single vendor i.e. either Intel or AMD. You simply cannot mix and match.
What are the benefits?
The main benefit is that you can add servers with the latest processors to your existing cluster(s) seamlessly and without incurring any downtime. More importantly, EVC provides you with the flexibility required to scale your infrastructure, lessening the need to decommission older servers prematurely, thus maximizing ROI. It also paves the way for seamless cluster upgrades once the decision to retire old hardware is taken.
Are there any disadvantages?
When a new family of processors is released to market, innovative microprocessor features and instruction sets are often included. These features include performance enhancements in areas such as multimedia, graphics or encryption. With this in mind try to determine in advance the type of applications you’ll be running in your vSphere environment. This gives you a rough idea of the type of processors you’ll be needing. This, in turn, allows you to predetermine the applicable EVC modes when mixing servers with processors from different generations. EVC modes are also dependent on the version of vCenter Server. This is shown in Figure 1 below.
When weighing the disadvantages, application performance springs first to mind. For instance, if SSL intensive applications are your thing, you should avoid at all costs the inclusion of servers equipped with pre-Westmere generation processors. Why? Westmere improves AES performance by a factor of 3 in part due to its AES-NI instruction set. Now let’s imagine that you have a cluster of 4 servers equipped with Westmere CPUs and you urgently need to add a 5th node which happens to be an “old” server with pre-Westmere generation processors. What happens is that once this server is added to the cluster, the “best” available EVC mode is determined by the “oldest” processor. Put simply, you lose all the benefits AES-NI brings with it and in doing so drastically slow down any SSL intensive applications that are hosted on the cluster. For this reason, the old adage “a chain is as strong as its weakest link” comes to mind!
The performance chart (Figure 2), reproduced from this excellent whitepaper, outlines this undesirable scenario highlighting the importance of choosing wisely and determining in advance the type of processors to use and weighing in the pros and cons of enabling EVC versus purchasing similarly or better spec’d servers for your cluster.
Which EVC modes are supported?
ESXi 6.0 which is the latest iteration at the time of writing, supports the following modes;
- AMD Opteron Generation 1 (Rev. E)
- AMD Opteron Generation 2 (Rev. F)
- AMD Opteron Generation 3 (Greyhound)
- AMD Opteron Generation 3 (no 3Dnow!) (Greyhound)
- AMD Opteron Generation 4 (Bulldozer)
- AMD Opteron “Piledriver” Generation
- Intel “Merom” Generation (Intel Xeon Core 2)
- Intel “Penryn” Generation (Intel Xeon 45nm Core2)
- Intel “Nehalem” Generation (Intel Xeon Core i7)
- Intel “Westmere” Generation (Intel Xeon 32nm Core i7)
- Intel “Sandy Bridge” Generation
- Intel “Ivy Bridge” Generation
- Intel “Haswell” Generation
What are the requirements?
To enable EVC, you must make sure the ESXi hosts in your cluster satisfy the following.
- Processors must be from the vendor, AMD or Intel.
- Hosts must be properly configured for vMotion.
- Hosts must be connected to the same vCenter Server.
- Advanced virtualization features such as Intel-VT and AMD-V must be enabled for all hosts from the server’s BIOS.
Use the VMware Compatibility Guide to assess your EVC options
The VMware Compatibility Guide is the best way to determine which EVC modes are compatible with the processors used in your cluster. I covered how to use the tool in this post. For completeness sake, I’m adding an example on how to determine which EVC mode to use given 3 types of Intel processors.
The steps are as follows;
- Select the ESXi version installed.
- Hold down the CTRL key and select the type of processors from the CPU Series list.
- Press the CPU/EVC matrix button to view the results.
The results tell us that we can only use EVC modes Merom or the Penryn. This means we have to sacrifice some features exclusive to the Intel i7 processor. This is the stage at which you have to decide whether you’re better off getting new servers as opposed to adding old servers to the cluster.
How do I enable EVC?
Enabling EVC couldn’t be easier. Assuming your environment meets the above requirements go ahead and log on to your vCenter Server. I’ll be using the vSphere Web Client to demonstrate this but you similarly can use the traditional (C#) vSphere client if you wish to.
Highlight the cluster in the Navigator pane and select VMware EVC under Settings -> Configuration. Click Edit.
Select Enable EVC for AMD Hosts or Enable EVC for Intel Hosts respectively if using AMD or Intel processors.
The wizard defaults to the first available EVC option but I’m prevented from selecting it because of a powered-on VM currently using the CPU features masked off by the EVC mode. This is the same behavior you’ll come across when processors in the cluster are not supported by the EVC mode selected.
TIP: You should enable EVC right after you create a cluster. If you don’t, powered on VMs created before EVC was enabled must be rebooted for the changes to take effect.
Expanding Mode and Current CPUID Details provides further information on the EVC mode selected together with the values set for the CPUID flags which are inherited by newly created VMs henceforth.
I covered all the important aspects of EVC which should get you started in no time at all. For further details, have a look at the links I included next.
If you liked this post, I’m sure you’ll find something equally interesting from our constantly updated list of VMware articles.
Have any questions or feedback?
Leave a comment below!