VMware EVC Mode Explained26 Nov 2015 by 2
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 in 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, make sure that all the ESXi hosts in your cluster;
- Have processors from the same vendor, i.e. either AMD or Intel.
- Are configured for vMotion.
- Are connected to the same vCenter Server system.
- Have advanced virtualization features such as Intel-VT and AMD-V. These must be enabled using the server’s BIOS utility.
Using the “VMware Compatibility Guide” to assess your EVC options
The “VMware Compatibility Guide” is a great way to check which EVC mode is compatible with the processors in use within your cluster and the version of ESXi / vCenter Server deployed. I covered the tool’s usage in another post, but for completeness sake I’m including 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 “CPU/EVC matrix” to view the results.
The results tell us that the only EVC mods available are Merom or the Penryn. We thus sacrifice some features that come with the Intel i7 processor. This is where you decide whether you’re better off getting new servers instead of introducing old hardware to your existing 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 prohibits me from selecting it because a powered-on vm is using CPU features masked off this EVC mode. This is the same behavior you’ll come across when any of the processors in the cluster are not supported by the EVC mode selected.
TIP: You should enable EVC right after you create a cluster otherwise you’ll need to power cycle all your pre-EVC created vms for EVC changes to become effective.
- 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 believe that I’ve covered all the important aspects of EVC to get you started. If you need further details, please have a look at the links included hereunder.
Have any questions or feedback?
Leave a comment below!