When configuring a cluster in vSphere, one of the options that you should always configure is the VMware EVC mode. What is VMware EVC mode? It’s the Enhanced vMotion Compatibility setting, which enables vMotion across multiple generations of processors. New processors often come with new instruction sets, and if the VM is awe of these new instructions but it gets vMotioned to a processor without them, you would get unpredictable results. As a result, vSphere detects this condition and will prohibit a vMotion attempt when CPUs are not compatible. Below is a screenshot from vSphere 5.0 and the possible EVC compatibility modes for Intel hosts.
But one question you may have, is which VMware EVC mode should I use and does using a “lower” setting impact application performance? To answer this question VMware has written a whitepaper titled Impact of Enhanced vMotion Compatiblity on Application Performance. For the complete story, I strongly suggest that you read the whitepaper. But if you are short on time, I’ll summarize the results for you.
For the vast majority of business applications the EVC mode has little to no impact on application performance. However, there are a couple of notable exceptions. Starting with the Intel Westmere processors, there are six new instructions for AES encryption which drastically increase encryption performance. This can be helpful for SSL encrypted web sites, disk encryption or anything else using AES. Below is a chart from the VMware whitepaper showing the dramatic AES encryption performance with the Westmere platform.
A less dramatic example is with multimedia content, and the SSE4.1 instruction set. Here, there was a 4% improvement in encoding rate when using an EVC mode that exposed SSE4.1 to the VM.
The other workloads in the whitepaper showed practically no difference in performance across all VMware EVC modes. Do take note that the whitepaper did not test Sandy Bridge EVC mode, which is for the newest Intel processors. Sandy Bridge EVC mode is only supported in vCenter 5.0 and later (not 4.1 or earlier).
One common configuration mistake I’ve seen at work is setting up clusters without any VMware EVC mode enabled. While this may seem like a fine idea when you have the same processors in your servers so technically vMotion will work just fine, it is short sighted. At some point you will probably introduce a new server to the cluster which has a newer processor. Now you have a problem if EVC mode is not enabled. Changing the EVC mode requires the power cycling of VMs, so now you will experience some down time when you turn EVC mode on.
Bottom line is when you build a new vSphere cluster, use the latest EVC mode that the processor supports, and that will cover the CPU models that may get introduced into your cluster. If you go on a Sandy Bridge buying spree, use the Sandy Bridge EVC mode, then find you want to add an older generation server to the cluster you now have to plan downtime for your VMs to downgrade the EVC mode.
Even for Sandy Bridge based clusters, unless you have an application that you know will use the new instructions (AVX and XSAVE), I would suggest you use Westmere EVC mode. That will preserve the AESNI/SSE4.1 instruction sets, yet allow a broad range of prior generation servers to join the cluster down the road, with no downtime.
If you aren’t sure what EVC mode applies to your processor, VMware has an outstanding KB article (KB1003212) that you should review. It breaks down what processor series (e.g. Intel E7-88xx) supports which EVC mode.