Save to My DOJO
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.
Selecting Ivy Bridge works out just fine in my case. Just press OK to accept.
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.
- http://www.vmware.com/files/pdf/techpaper/VMware-vSphere-EVC-Perf.pdf
- http://www.virten.net/2013/04/intel-cpu-evc-matrix/
- http://kb.vmware.com/kb/1003212
- http://kb.vmware.com/kb/1991
- http://kb.vmware.com/kb/1992
- http://www.vmware.com/resources/compatibility/search.php?deviceCategory=cpu
If you liked this post, I’m sure you’ll find something equally interesting from our constantly updated list of VMware articles.
[the_ad id=”4738″][the_ad id=”4796″]
Not a DOJO Member yet?
Join thousands of other IT pros and receive a weekly roundup email with the latest content & updates!
34 thoughts on "VMware EVC Mode Explained"
Hello,
You Explain Evc. I only got one question. We have a Cluster with Servers that have a the Same CPU. In the VM (windows 2008R2) that CPU is identify as a “CPU E5-2640 0 @ 2.50GHz”. now we add new servers to the cluster with a new CPU. The FW does a failover to the New Server. Is the Identification of the CPU the Same in the VM on the new Server ?
Hi,
Are the processor(s) on the new host better than those on the “older” hosts? If yes, then nothing should change from an EVC’s standpoint. If, on the other hand, the processor(s) on the new host are “older”, you then need to change the EVC baseline to a lower version. The caveat is that you won’t be able to do this until you power down all the vms running under the configured EVC mode.
In either case, the EVC mode used by the vm remains the same until you reboot it. Obviously this will change accordingly once it’s back online after a reboot. I’m also not sure if by FW you mean HA.
You might find the following links useful;
http://tinyurl.com/zb24jot
http://tinyurl.com/z9q4kvv
Regards
Jason
Hey Jason, hope you’re fine!
Thanks for this great article!
Just for my understanding, because i was trying to enable EVC with two different CPU type – Xeon E52420v2 (Ivy Bridge) and Core i7-3820 (Sandy Bridge), and i wasn’t able to.
The xeon is ranked as “Level 5”, the i7 is ranked as Level 4 – this should work, right?
Keep up with the great work!
Best
T.
Hi Thorsten,
Thank you for the great feedback. Yes you should be able to enable EVC. That said, I’m not seeing the i7 3820 proc listed on the compatibility list but I don’t think that’s the issue. Do you have any powered on VMs on the host with the better CPU, so to speak? If yes, you’ll need to migrate or power them down before you can enable EVC.
Hope this helps.
Jason
Hi. i realize this is a couple years old, but I think the lessons are the same. we had a cluster that was originally westmere cpu hosts and over time one after another they were replaced. the evc mode is westmere and we have 1 westmere host left. the rest are broadwell or skylake. Couple of questions:
1. How do you determine what ‘benefits’ you’re going to get by upgrading to a higher evc mode? In the gui in 6.7 at least it names the benefits but I have no idea if we’ll actually use and benefit from them (see list below).
2. it is mentioned that we may need to reboot VMs for it to take effect. If we have the buffer on the hosts, is an alternative to evacuate a host, put it in a new cluster with that new evc mode on it, migrate vms to that host and evacuate another host, and migrate, etc? is there any downside/risk to this? Does this prevent having to reboot our hundreds of VMs?
3. what if we have a spare host that’s older and we really want it to be in the cluster as a last resort spare? It may not be in the compatibility list completely but we’ve used it on the version it’s on without issue so we’re OK having it as an emergency host. Is the only way to add it to turn off EVC so it can join? Once it’s off we won’t be able to turn it back on at the previous level I assume.
Thanks a bunch!
1. At the cluster level, it essentially bumps your underlying cluster baseline. The benefit is removing that older baseline. It’s possible you might not notice or use any of those new features of the upgraded baseline if you don’t need or require them.
2. To realize the new features after an EVC mode change, you will need to do a guest OS reboot, unfortunately.
3. I would highly recommend against using an old unsupported host as an emergency failover host. It could cause issues with support, even if it seems stable. If you do decide to put it in, you’ll have to run it at the lowest baseline.
Thanks for this information.